以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 均线指标问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=164211) |
-- 作者:c100011627 -- 发布时间:2018/6/29 13:37:35 -- 均线指标问题 图表交易下 因为显示360根K线问题 双均线存在不平仓的情况 改成开仓前检查平仓 MA1:Ma(CLOSE,A); MA2:Ma(CLOSE,B); //交易条件 开多平空条件:=CROSS(MA1,MA2);//开多平空条件 开空平多条件:=CROSS(MA2,MA1);//开空平多条件 //交易系统 平空:SELLSHORT(开多平空条件,0,MARKET);// MARKET 开多:BUY(开多平空条件,lots,MARKET); 平多:SELL(开空平多条件,0,MARKET); 开空:BUYSHORT(开空平多条件,lots,MARKET); |
-- 作者:FireScript -- 发布时间:2018/6/29 13:42:16 -- 可否更具体的描述下你的需求和问题。暂时还不明确你的需求是怎样的。 |
-- 作者:c100011627 -- 发布时间:2018/6/29 13:58:00 -- 双均线 每次交叉都开反手 由于图表交易屏幕上只有360个K线 所以两次交叉有时不能一起显示 只显示一次交叉 造成没有平仓就开新仓 类似锁仓了 给改成 交叉先确定仓位清0 在开新仓
|
-- 作者:c100011627 -- 发布时间:2018/6/29 14:01:27 -- 就是下面的写法 双均线买卖 if holding>0 and tbc then //已有多仓 begin if lotst>0 then //出场 begin sell(1,0,THISCLOSE); BUYSHORT(1,lots,THISCLOSE); end;//出场 end;//holding>0 if holding<0 and tbc then //已有空仓 begin if lotst<0 then //出场 begin sellshort(1,0,THISCLOSE); buy(1,lots,THISCLOSE); end;//出场 end;//holding<0 |
-- 作者:FireScript -- 发布时间:2018/6/29 14:13:23 -- 我知道你什么意思了。你是限制了图表上K线数量了吧?导致新K出现之后,历史K发生了变化。从而导致信号变化。比如原本刚刚开多了,但是因为信号变化了,导致图表上又出现开空信号且此时虚拟持仓是0。这种会导致不会平多,直接去开空了。 如果真是这种情况,我建议你不要限制K线数量,而是限制K线起始位置,因为这种限制K线数量情况导致信号闪烁变化,在代码里面都不好处理的。 |
-- 作者:c100011627 -- 发布时间:2018/6/29 14:15:22 -- 不是 你就按照下面的写法 改个双均线 或者我给你打电话说 这么说太费劲 if holding>0 and tbc then //已有多仓 begin if lotst>0 then //出场 begin sell(1,0,THISCLOSE); BUYSHORT(1,lots,THISCLOSE); end;//出场 end;//holding>0 if holding<0 and tbc then //已有空仓 begin if lotst<0 then //出场 begin sellshort(1,0,THISCLOSE); buy(1,lots,THISCLOSE); end;//出场 end;//holding<0 |
-- 作者:FireScript -- 发布时间:2018/6/29 14:23:24 -- 平空:SELLSHORT(开多平空条件,0,MARKET);// MARKET 开多:BUY(开多平空条件,lots,MARKET); 平多:SELL(开空平多条件,0,MARKET); 开空:BUYSHORT(开空平多条件,lots,MARKET); 平空和开多条件是一样的 平多和开空条件是一样的 因此 开多触发的时候,会平空 开空触发的时候,会平多 逻辑和你6楼说的是完全一样的。 问题不在于代码。之所以没清仓位是因为历史信号变了,导致虚拟持仓变成0.这时候就没办法在开多前发出平空信号了。 |
-- 作者:c100011627 -- 发布时间:2018/6/29 14:27:10 -- 问题就在于代码 我这个实盘出现很多次了 你给改就成了 |
-- 作者:c100011627 -- 发布时间:2018/6/29 14:30:02 -- 你说的历史信号变了 这个对 其实就是前一个交叉因为360K线的原因已经不显示了 不是变化了 是不在这个屏幕显示了 所以让你帮改成另外一种写法 在买入前确认做出卖出动作。。。 你就直接给改一下 原因我知道 我只是看不懂写法 你直接改 |
-- 作者:FireScript -- 发布时间:2018/6/29 14:31:57 -- MA1:Ma(CLOSE,A); MA2:Ma(CLOSE,B); //交易条件 开多平空条件:=CROSS(MA1,MA2);//开多平空条件 开空平多条件:=CROSS(MA2,MA1);//开空平多条件 //交易系统 if 开多平空条件 then begin 平空:SELLSHORT(holding<0 ,0,MARKET);// MARKET 开多:BUY(holding=0,lots,MARKET); end if 开空平多条件 then begin 平多:SELL(holding>0,0,MARKET); 开空:BUYSHORT(holding=0,lots,MARKET); end |