请老师帮我写一个金字塔程序化交易模型,思路如下:
1,当价在5日,10日,20日,30日,40日,50日,60日,70日,80日,90日,100日,110日,120日,130日,140日,250所有均线以上时开多单,当价在任何一条均线之下时全部平仓,当恢复条件时重新开仓。
2,反之,当价在5日,10日,20日,30日,40日,50日,60日,70日,80日,90日,100日,110日,120日,130日,140日,250所有均线以下时开空单,当价在任何一条均线之上时全部平仓,当恢复条件时重新开仓。
3,持仓亏损和盈利最大回撒达到40%时立即全部平仓止损止赢。
4,以上均线请老师帮我全部设为参数。
谢谢! |
我按照范例将均线及参数添加进去后,但公式测试多处都通不过,不知是何原因?还是请老师帮帮我吧! 在此非常感谢! |
我按照范例将均线及参数添加进去后,但公式测试多处都通不过,不知是何原因?还是请老师帮帮我吧! 附公式如下:
input :a5(5),a10(10),a20(20),a30(30),a40(40),a50(50),a60(60),a70(70),a80(80),a90(90),a100(100),a250(250); ma5:ma(c,a5);
if c> ma5 and c>ma10 and c> ma20 and c>ma30 and c> ma40 and c>ma50 and c> ma60 and c>ma70 and c> ma80 and c>ma90 and c> ma100 and c>ma250 and c>man and holding=0 then begin //and
//if c-jiage>yingkui then yingkui:=c-jiage; if c<ma5 or c<ma10 or c<ma20 or c<ma30 or c<ma40 or c<ma50 or c<ma60 or c<ma70 or c<ma80 or c<ma90 or c<ma100 or c<ma250 or c<man then begin //or
if c< ma5 and c<ma10 and c< ma20 and c<ma30 and c< ma40 and c<ma50 and c< ma60 and c<ma70 and c< ma80 and c<ma90 and c< ma100 and c<ma250 and c<man and holding=0 then begin //and
if c>ma5 or c>ma10 or c>ma20 or c>ma30 or c>ma40 or c>ma50 or c>ma60 or c>ma70 or c>ma80 or c>ma90 or c>ma100 or c>ma250 or c>man then begin //or
if yingkui>0 and openprofit>yingkui then yingkui:=openprofit;//最大盈利 if yingkui <0 and openprofit<yingkui then yingkui:=openprofit;//最大亏损
if holding<0 and yingkui>0 and (yingkui-openprofit)/yingkui>=30% then sellshort(1,0,market);//最大盈利回撤30%后止盈,空头 if holding>0 and yingkui<0 and (openprofit-yingkui)/openprofit>=30% then sell(1.0,market);//最大亏损回撤30%后止损,多头 if holding<0 and yingkui<0 and (openprofit-yingkui)/openprofit>=30% then sell(1.0,market);//最大亏损回撤30%后止损,空头
//其中的定义均线省略写了,可以按照上面的参数定义自行添加 |
variable:jige=0
改成 jiage=0
这个不难看出来的,多学习下金字塔的语言吧
//老师回答如下:
//后来测试了下,把30%改成0.3就能通过了,我也不知道为什么百分比通不过。
//variable:jige=0 改成 jiage=0
//我按您上面的指点改了,但还是通不过 。文字提示为: 未定义的变量: MAN
//还是请老师帮我修改并测试一下啊!
input :a5(5),a10(10),a20(20),a30(30),a40(40),a50(50),a60(60),a70(70),a80(80),a90(90),a100(100),a250(250);
VARIABLE:jiage=0,yingkui=0;
ma5:ma(c,a5);
ma10:ma(c,a10);
ma20:ma(c,a20);
ma30:ma(c,a30);
ma40:ma(c,a40);
ma50:ma(c,a50);
ma60:ma(c,a60);
ma70:ma(c,a70);
ma80:ma(c,a80);
ma90:ma(c,a90);
ma100:ma(c,a100);
ma250:ma(c,a250);
if c> ma5 and c>ma10 and c> ma20 and c>ma30 and c> ma40 and c>ma50 and c> ma60 and c>ma70 and c> ma80 and c>ma90 and c> ma100 and c>ma250 and c>man and holding=0 then begin //and
buy(holding=0,1,market);
jiage:=c;
yingkui:=openprofit;
end//开多
//if c-jiage>yingkui then yingkui:=c-jiage;
//if (yingkui-(c-jiage))/yingkui>30%
if c<ma5 or c<ma10 or c<ma20 or c<ma30 or c<ma40 or c<ma50 or c<ma60 or c<ma70 or c<ma80 or c<ma90 or c<ma100 or c<ma250 or c<man then begin //or
sell(holding>0,1,market);
end //平多
if c< ma5 and c<ma10 and c< ma20 and c<ma30 and c< ma40 and c<ma50 and c< ma60 and c<ma70 and c< ma80 and c<ma90 and c< ma100 and c<ma250 and c<man and holding=0 then begin //and
buyshort(holding=0,1,market);
jiage:=c;
yingkui:=openprofit;
end//开空
if c>ma5 or c>ma10 or c>ma20 or c>ma30 or c>ma40 or c>ma50 or c>ma60 or c>ma70 or c>ma80 or c>ma90 or c>ma100 or c>ma250 or c>man then begin //or
sellshort(holding<0,1,market);
end
//平空
if yingkui>0 and openprofit>yingkui then yingkui:=openprofit;//最大盈利
if yingkui <0 and openprofit<yingkui then yingkui:=openprofit;//最大亏损
if holding>0 and yingkui>0 and (yingkui-openprofit)/yingkui>=0.3 then sell(1,0,market);//最大盈利回撤30%后止盈,多头 //后来测试了下,把30%改成0.3就能通过了,我也不知道为什么百分比通不过。
if holding<0 and yingkui>0 and (yingkui-openprofit)/yingkui>=0.3then sellshort(1,0,market);//最大盈利回撤30%后止盈,空头
if holding>0 and yingkui<0 and (openprofit-yingkui)/openprofit>=0.3 then sell(1.0,market);//最大亏损回撤30%后止损,多头
if holding<0 and yingkui<0 and (openprofit-yingkui)/openprofit>=0.3 then sell(1.0,market);//最大亏损回撤30%后止损,空头
把代码里面的 and c>man 全部删掉