以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  图表交易策略代码  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=168088)

--  作者:宝马
--  发布时间:2019/1/31 19:25:10
--  图表交易策略代码
图表交易策略代码  如何加入控制开单次数?
--  作者:FireScript
--  发布时间:2019/2/1 9:11:28
--  
 http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=158353&skin=0

参考这个历史帖。

--  作者:宝马
--  发布时间:2019/2/1 11:06:58
--  

variable:n=0;

if 开仓条件 and holding=0 and n=0 then begin

   下单语句;

   n:=1;

end

 

if time=closetime(0) then n:=0;

 

思路是用全局变量记录开仓动作,n=1之后就算满足条件也不下单


//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!


//定义参数

INPUT:N1(5,1,100,10),N2(10,1,120,10),N3(20,1,200,20),N4(60,1,200,20);


//绘制四条均线

MA1:MA(C,N1);

MA2:MA(C,N2);

MA3:MA(C,N3);

MA4:MA(C,N4);


//准备下单条件,以MA2上穿MA1作为开多条件,以MA1下破MA2作为平多条件。

COND1:=CROSS(MA1,MA2);

COND2:=CROSS(MA2,MA1);


//下单

平空仓:SELLSHORT( COND1,2,MARKET );

平多仓:SELL(COND2,2,MARKET);

开多仓:BUY(COND1,2,MARKET);

//增仓:BUY(CROSS(MA4,MA1),1,MARKET);

开空仓:BUYSHORT(COND2,2,MARKET);


//其他

当前持仓:HOLDING,COLORGRAY,LINETHICK0;

当前资产:ASSET,NOAXIS,COLORGRAY


@超级版主   进入几次没有弄好,帮我改一下,谢谢了!


好像很复杂  这个会不会 简单点   

TOTALDAYTRADE?


--  作者:FireScript
--  发布时间:2019/2/1 11:31:09
--  
 TOTALDAYTRADE 可以,但是这个是按照平仓一次来计算交易次数的。


--  作者:宝马
--  发布时间:2019/2/1 11:33:59
--  
@超级版主   帮我改一下,谢谢了!
--  作者:FireScript
--  发布时间:2019/2/1 13:09:14
--  
 直接在你的代码上修改下即可:

//定义参数
INPUT:N1(5,1,100,10),N2(10,1,120,10),N3(20,1,200,20),N4(60,1,200,20);
//绘制四条均线
MA1:MA(C,N1);
MA2:MA(C,N2);
MA3:MA(C,N3);

MA4:MA(C,N4);
//准备下单条件,以MA2上穿MA1作为开多条件,以MA1下破MA2作为平多条件。
COND1:=CROSS(MA1,MA2);
COND2:=CROSS(MA2,MA1);
//下单

平空仓:SELLSHORT( COND1,2,MARKET );
平多仓:SELL(COND2,2,MARKET);
开多仓:BUY(COND1 and TOTALDAYTRADE<=2 and holding=0,2,MARKET);

//增仓:BUY(CROSS(MA4,MA1),1,MARKET);

开空仓:BUYSHORT(COND2 and TOTALDAYTRADE<=2 and holding=0,2,MARKET);
//其他
当前持仓:HOLDING,COLORGRAY,LINETHICK0;

当前资产:ASSET,NOAXIS,COLORGRAY

可以修改TOTALDAYTRADE<=2 这里的数值来修改交易次数的限定。

--  作者:宝马
--  发布时间:2019/2/1 13:38:37
--  
收到   谢了
--  作者:宝马
--  发布时间:2019/2/12 13:21:31
--  
你好   FireScript:
直接在你的代码上修改下即可:

//定义参数
INPUT:N1(5,1,100,10),N2(10,1,120,10),N3(20,1,200,20),N4(60,1,200,20);
//绘制四条均线
MA1:MA(C,N1);
MA2:MA(C,N2);
MA3:MA(C,N3);

MA4:MA(C,N4);
//准备下单条件,以MA2上穿MA1作为开多条件,以MA1下破MA2作为平多条件。
COND1:=CROSS(MA1,MA2);
COND2:=CROSS(MA2,MA1);
//下单

平空仓:SELLSHORT( COND1,2,MARKET );
平多仓:SELL(COND2,2,MARKET);
开多仓:BUY(COND1 and TOTALDAYTRADE<=2 and holding=0,2,MARKET);

//增仓:BUY(CROSS(MA4,MA1),1,MARKET);

开空仓:BUYSHORT(COND2 and TOTALDAYTRADE<=2 and holding=0,2,MARKET);
//其他
当前持仓:HOLDING,COLORGRAY,LINETHICK0;

当前资产:ASSET,NOAXIS,COLORGRAY

可以修改TOTALDAYTRADE<=2 这里的数值来修改交易次数的限定。


以上代码       图表程序化,限制不了开仓次数。  

老师帮我改一个图表程序化,限制开仓次数。

--  作者:pyd
--  发布时间:2019/2/12 13:34:49
--  

VARIABLE:n=0,m=0;
//定义参数
INPUT:N1(5,1,100,10),N2(10,1,120,10),N3(20,1,200,20),N4(60,1,200,20);
//绘制四条均线
MA1:MA(C,N1);
MA2:MA(C,N2);
MA3:MA(C,N3);

MA4:MA(C,N4);
//准备下单条件,以MA2上穿MA1作为开多条件,以MA1下破MA2作为平多条件。
COND1:=CROSS(MA1,MA2);
COND2:=CROSS(MA2,MA1);
//下单
if COND1 and holding=0 then begin
平空仓:SELLSHORT( 1,2,MARKET );
end
if COND2 and holding=0 then begin
平多仓:SELL(1,2,MARKET);
end
if COND1 and holding=0 and n<2 then begin  //多头开仓次数,几次就把2改成几
开多仓:BUY(1,2,MARKET);
n:=n+1;
end

if COND2 and holding=0 and m<2 then begin//空头开仓次数,几次就把2改成几
开空仓:BUYSHORT(1,2,MARKET);
m:=m+1;
end
//其他
当前持仓:HOLDING,COLORGRAY,LINETHICK0;

当前资产:ASSET,NOAXIS,COLORGRAY

[此贴子已经被作者于2019/2/12 13:35:25编辑过]

--  作者:宝马
--  发布时间:2019/2/12 13:47:01
--  
收到 美女呀,在线,快来找我吧!
pyd  老师   谢谢了