以ma1上穿ma2为例
金叉后,K线走完第二K开盘买入开仓,,当价格小于开仓K线的前一根K线最低价,止损,,,,(后面的第三根第四根或更多K都是以开仓前的K线最低价作为止损)
死叉后,k 线走完第二K开盘卖出开仓,当价格小于开仓K线的前一根K线最高价,止损
以上如何编写,谢谢
ma1:ma(c,3);
ma2:ma(c,5);
majc:=cross(ma1,ma2);
masc:=cross(ma2,ma1);
平空开多:=majc;//默认你是走完K模式或者进行回测时候,直接用majc作为条件即可,因为走完K是会在金叉下个K下单操作;如果是固定轮询模式下,替换代码为:ref(majc,1)。使用了ref用来判断上个K是否是金叉;这点请注意!
平多开空:=masc;//原理同上
if 平空开多 then //图表策略的逻辑是同一时刻不能同时有多空持仓,因此这里以反手来处理。
begin
sellshort(holding<0,holding,market);
buy(holding=0,1,market);
end
if 平多开空 then
begin
sell(holding>0,holding,market);
buyshort(holding=0,1,market);
end
止损价格1:ref(l,ENTERBARS+2);//开仓K前一个K的最低价,注意这里是指出信号K位置
止损价格2:ref(h,ENTERBARS+2);
sell(c<止损价格1,holding,market);
sellshort(c>止损价格2,holding,market);