都表示最新值,
但是dynainfo(7)没有历史值,例如ma(c,100)中不能用ma(dynainfo(7),100)。
代码顺序按照
平空
开多
平多
开空
来写
这两个函数分别是开多均价和开空均价,你根据监控器里的求平均值?
这两个函数的结果 和监控器里记录的结果贴下图
有两个问题:
1、我的策略只开多平多,在开空条件满足的时候也不开空
2、我设置止赢4跳、止损2跳,但是监控器里面止盈止损都是4跳平仓
代码如下:
MA20:=MA(CLOSE,20);
BUYCOND1:=DYNAINFO(7)>=MA20;
BUYCOND2:=CLOSE=HHV(CLOSE,3);
SELLCOND1:=DYNAINFO(7)<=MA20;//TENTERPRICE
SELLCOND2:=CLOSE=LLV(CLOSE,3);
BUYCOND:=BUYCOND1 AND BUYCOND2;
SELLCOND:=SELLCOND1 AND SELLCOND2;
//2跳固定止盈
IF DYNAINFO(7)-TENTERPRICE>4*MINDIFF THEN BEGIN
TSELL(THOLDING>0,TBUYHOLDINGEX(0,0 ,0 ),MKT,0,0,0);
END
IF TENTERPRICE-DYNAINFO(7)>4*MINDIFF THEN BEGIN
TSELLSHORT(THOLDING<0,TSELLHOLDINGEX(0,0,0),MKT,0,0,0);
END;
//2跳固定止损
IF TENTERPRICE-C>2*MINDIFF THEN BEGIN
TSELL(THOLDING>0,TBUYHOLDINGEX(0,0 ,0 ),MKT,0,0,0);
END
IF C-TENTERPRICE>2*MINDIFF THEN BEGIN
TSELLSHORT(THOLDING<0,TSELLHOLDINGEX(0,0,0),MKT,0,0,0);
END;
//开仓
IF BUYCOND AND THOLDING<=0 THEN
TBUY(1,1,LMT,CLOSE);
IF SELLCOND AND THOLDING>=O THEN
TBUYSHORT(1,1,LMT,CLOSE);
不要看交易结果,你要看的是触发时的结果。如果触发时价格正确,但是交易的时候下单成交价不满足需求,那么是正常的
你需要的是做调试,用debugfile把需要的信息比如当前价格,判断条件给输出一下,