以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 这个不行,图中的“开多”“平空”之类字体都是系统自带的,不能以代码的形式修改 |