以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何编写,谢谢?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=184531)

--  作者:苏西坡
--  发布时间:2021/3/5 11:57:25
--  如何编写,谢谢?
以ma1上穿ma2为例
金叉后,K线走完第二K开盘买入开仓,,当价格小于开仓K线的前一根K线最低价,止损,,,,(后面的第三根第四根或更多K都是以开仓前的K线最低价作为止损)
死叉后,k 线走完第二K开盘卖出开仓,当价格小于开仓K线的前一根K线最高价,止损
以上如何编写,谢谢
--  作者:FireScript
--  发布时间:2021/3/5 13:39:19
--  
 
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);