以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  达到某一空单平仓条件并反手开多单时,如何才能排除某一多单平仓条件限制  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=163627)

--  作者:呼雷
--  发布时间:2018/5/24 15:01:33
--  达到某一空单平仓条件并反手开多单时,如何才能排除某一多单平仓条件限制
达到某一空单平仓条件并反手开多单时,如何才能排除某一多单平仓条件的限制?

当满足空平条件(kp1202)时,对空单进行平仓,同时反手开多单,但此时要排除多单平仓条件(dp)的限制,不然此条件达成后,一旦开多单就会马上被平仓,在此,对以下语句中要加入何语句才可以排除多平条件(dp)的限制,谢谢!

if kp1202 then begin 
kp(kp1202):sellshort(holding<0,ss,marketr);//
kd(kd1202):buy(holding=0,ss,thisclose) ;//
end
[此贴子已经被作者于2018/5/24 15:02:11编辑过]

--  作者:FireScript
--  发布时间:2018/5/24 15:03:22
--  
 原帖中已有回复。可前往查看,跟帖。
--  作者:呼雷
--  发布时间:2018/5/24 15:05:11
--  
没有解决!
--  作者:FireScript
--  发布时间:2018/5/24 15:38:58
--  
 后面重新回复了,你是没看到还是有不理解的地方?

下面再给个测试代码和结果给你参考下吧。


m:=0;//先定义一个变量,在触发平多开空的时候给这个变量赋值
ss:=1;
kp1202:=(BARPOS=DATACOUNT-1);
if kp1202=1 then begin
kp(kp1202):sellshort(holding<0,ss,marketr);
kd(kd1202):buy(holding=0,ss,thisclose) ;

m:=1;//改变m的值,这样下面的dp即使触发也不能平多了
end
dp:c>o or BARPOS=DATACOUNT-1;

if dp and m=0 then sell(holding>0,holding,market);//再平多这里里把m=0的判断加进去即可

hd:holding;//显示持仓
效果图:


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


我这里设置情况的是最后2个K上平多条件dp都触发。但是倒数第二个K 因为我设置了过滤,先触发了开多因此dp触发的平多不再进行下去。



--  作者:FireScript
--  发布时间:2018/5/24 15:40:00
--  
但是也有一些限制,这个如果你是用走完K,没啥问题。固定轮询需要重新处理。