以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]总是无法平仓后马上反向开仓,平仓后就没了  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=89071)

--  作者:falltree
--  发布时间:2015/12/31 11:09:56
--  [求助]总是无法平仓后马上反向开仓,平仓后就没了
在论坛搜索过,发现有类似问题,但没有明确的解决方案,请高手帮助。
希望写一个出现开仓信号后,先把原来反方向的仓单平掉,然后开新仓,但实际模拟数据测试,发现总是只平仓之后没有开新仓,理论上没有同方向的单同时存在而产生干扰,每次只开一手,然后平仓,然后再开。平仓完成后,holding肯定是0

//开多 kd=开多条件 
IF kd THEN BEGIN 
  IF HOLDING<0 THEN 平空:SELLshort(1,手数,MARKET),ORDERQUEUE;
  交易次数:=交易次数+1;
  else 
  开多:BUY(kd AND HOLDING=0,手数,market),ORDERQUEUE;
  交易次数:=交易次数+1; 
END 

//开空 kk=开空条件
IF kk THEN BEGIN  
  IF HOLDING>0 THEN 平多:SELL(1,手数,MARKET),ORDERQUEUE;
  交易次数:=交易次数+1;
  else
  开空:BUYSHORT(kk AND HOLDING=0,手数,MARKET),ORDERQUEUE;
  交易次数:=交易次数+1;
END

请教该如何修改才可以实现平仓后马上开仓

--  作者:jinzhe
--  发布时间:2015/12/31 11:13:40
--  
代码里面的else是什么思路?
--  作者:falltree
--  发布时间:2015/12/31 11:29:37
--  
else之前是没有的,后来改来改去加上去的,可能有些多余,应该不需要。
本意思是如果满足开多或开空条件时,如果持仓不不是0,就先平仓,持仓0时,就直接开仓

--  作者:jinzhe
--  发布时间:2015/12/31 13:13:48
--  
IF kd THEN BEGIN 
   平空:SELLshort(holding<0,手数,MARKET),ORDERQUEUE;
  开多:BUY(kd AND HOLDING=0,手数,market),ORDERQUEUE;
  交易次数:=交易次数+1; 
END 

//开空 kk=开空条件
IF kk THEN BEGIN  
   平多:SELL(holding>0,手数,MARKET),ORDERQUEUE;
  开空:BUYSHORT(kk AND HOLDING=0,手数,MARKET),ORDERQUEUE;
  交易次数:=交易次数+1;
END

--  作者:falltree
--  发布时间:2015/12/31 15:10:39
--  
谢版主,似乎可以了。不过图形中平多开空或者平空开多的字重叠了,是否可以利用类似drawtext的绘图函数来控制,比如下面这种格式:

   平空:=SELLshort(holding<0,手数,MARKET),ORDERQUEUE;
  开多:=BUY(kd AND HOLDING=0,手数,market),ORDERQUEUE;
drawtext(平空,“平空”,x,color00ffff);
drawtext(开多,“开多”,x,colorred);


--  作者:jinzhe
--  发布时间:2015/12/31 15:13:44
--  
这个不行,图中的“开多”“平空”之类字体都是系统自带的,不能以代码的形式修改