以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- [原创]运行选项选的高频,仓位平掉以后,每隔周期后还在发出平仓指令 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=69727) |
-- 作者:dcetrader -- 发布时间:2014/9/9 11:10:22 -- [原创]运行选项选的高频,仓位平掉以后,每隔周期后还在发出平仓指令 首先,我用的是等价线(请斑竹老师不要说不要用等价线实战这样的话,我开仓执行的还挺好,平仓有问题,请帮助修改解决下); 平空:SELLSHORT(ref(PK,1),1,MARKETR); //平空信号 开多:BUY(ref(KD,1) AND HOLDING=0,1,MARKETR); //开多信号 平多:SELL(ref(PD,1),1,MARKETR); //平多信号 开空:BUYSHORT(ref(KK,1) AND HOLDING=0,1,MARKETR); //开空信号 这是我指令公式,用的是突破水平线的逻辑 这是我选项 开仓OK,没问题,到了平仓,我用15分钟线,由于是等价线,市场不动的时候,新线也不会生成,所以每隔15分钟后,由于平仓信号还没消失,系统就再平仓一次,实际上我的已经早平过了。。。。 看看能有什么变通的办法,比如在公式上修改下? 比较急,谢谢! 老师不要说等价线仅供参考云云,一切都在进步,都在创新,谢谢! [此贴子已经被作者于2014/9/9 11:12:08编辑过]
|
-- 作者:dcetrader -- 发布时间:2014/9/9 11:14:15 -- 这里等价线问题不在K线闪嗦变化不定,而在于执行方面,所以和老师们以往所指的“仅供参考”的缘由含义是完全不同的。 |
-- 作者:dcetrader -- 发布时间:2014/9/9 11:16:52 -- 另外,我在想,如果运行选项里的K线走完不按标准时间K线定义,而真正按图表里的K线定义(等价线的k线走完),一切就解决了。目前金魔方飞狐就是按实际K线算的 [此贴子已经被作者于2014/9/9 11:18:18编辑过]
|
-- 作者:FexTel -- 发布时间:2014/9/9 11:32:22 -- 1,这个问题我们再考虑下 2,目前您可以使用变量控制,当K线没变化时不产生平仓信号 例如 VARIABLE:A=0; IF PINGC BARPOS>A THEN BEIGIN SELL(); A:BARPOS; END
对应后面的平仓条件加个BRPOS>A; [此贴子已经被作者于2014/9/9 11:33:01编辑过]
|
-- 作者:dcetrader -- 发布时间:2014/9/9 11:44:52 -- fex老师,是这样写就么? ---- 平空:SELLSHORT(ref(PK,1),1,MARKETR); //平空信号 开多:BUY(ref(KD,1) AND HOLDING=0,1,MARKETR); //开多信号 平多:SELL(ref(PD,1),1,MARKETR); //平多信号 开空:BUYSHORT(ref(KK,1) AND HOLDING=0,1,MARKETR); //开空信号 VARIABLE:A=0; IF 平多 BARPOS>A THEN BEIGIN SELL(); END IF 平空 BARPOS>A THEN BEIGIN SELLSHORT(); A:BARPOS; END 另外,SELL()还是SELL(ref(PD,1),1,MARKETR); ?? 或者SELLSHORT(ref(PK,1),1,MARKETR); ?? |
-- 作者:dcetrader -- 发布时间:2014/9/9 12:31:26 -- 这么写可以把??? -------------------------------------------------------- VARIABLE:A=0; IF BARPOS>A THEN BEGIN SELLSHORT( PK ,SS,MARKETr); //平空信号 BUY( KD AND HOLDING=0,SS,MARKETr); //开多信号 SELL( PD ,SS,MARKETr); //平多信号 BUYSHORT( KK AND HOLDING=0,ss,MARKETr); //开空信号 A:=BARPOS; END [此贴子已经被作者于2014/9/9 12:32:04编辑过]
|
-- 作者:yukizzc -- 发布时间:2014/9/9 13:09:15 -- 这种不行,BARPOS>A你这样条件那么只会在下一根k生成时进行一次程序化轮询之后A:=BARPOS; 代码就不执行了都
必须要这么写,每个开平语句用对应全局变量来限制 if 平空 and barpos>A then begin sellshort(); A:=barpos; end
|
-- 作者:dcetrader -- 发布时间:2014/9/9 13:17:52 -- YUKI老师,是必须 sellshort();还是用 SELLSHORT( PK ,SS,MARKETr); 也行? |
-- 作者:dcetrader -- 发布时间:2014/9/9 13:24:10 -- KD:=...; //开多条件 PD:=...; //平多条件 KK:=...; //开空条件 PK:=...; //平空条件 VARIABLE:A=0; IF PK AND BARPOS>A THEN BEGIN SELLSHORT(); //平空信号 A:=BARPOS; END IF KD AND BARPOS>A THEN BEGIN BUY(); //开多信号 A:=BARPOS; END IF PD AND BARPOS>A THEN BEGIN SELL(); //平多信号 A:=BARPOS; END IF KK AND BARPOS>A THEN BEGIN BUYSHORT(); //开空信号 A:=BARPOS; END 是这样的么 [此贴子已经被作者于2014/9/9 13:24:31编辑过]
|
-- 作者:yukizzc -- 发布时间:2014/9/9 13:24:56 -- 里面的开平语句你自己写啊,这里只是在开平代码外加了个barpos的条件控制,使之按照你等价k的序列来。 barpos的值是你等价k的序列,不会按照你15分钟一根k的固定值
|