以文本方式查看主题

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

--  作者:a290380438
--  发布时间:2012/11/12 10:48:25
--  求助

请老师帮我写一个程序化交易模型,思路如下:

 

     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以上均线请老师帮我全部设为参数。


 

谢谢!



--  作者:jinzhe
--  发布时间:2012/11/12 10:59:15
--  
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=30521
--  作者:a290380438
--  发布时间:2012/11/12 20:55:32
--  

线



--  作者:jinzhe
--  发布时间:2012/11/13 9:15:01
--  
后来测试了下,把30%改成0.3就能通过了,我也不知道为什么百分比通不过。。。
--  作者:a290380438
--  发布时间:2012/11/13 13:13:10
--  测试通不过

线

下:

 

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:jige=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>=30% then  sell(1,0,market);//最大盈利回撤30%后止盈,多头

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%后止损,空头

 

//其中的定义均线省略写了,可以按照面的参数定义自行添加


--  作者:jinzhe
--  发布时间:2012/11/13 13:27:04
--  "if aa:=1 then begin"这样的条件语句是什么意思?

variable:jige=0

改成 jiage=0

 

这个不难看出来的,多学习下金字塔的语言吧


--  作者:a290380438
--  发布时间:2012/11/14 23:55:50
--  还是通不过啊

//回答如下:
//后来测试了下,把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%后止损,空头


--  作者:a290380438
--  发布时间:2012/11/30 2:18:08
--  

--  作者:jinzhe
--  发布时间:2012/11/30 9:22:04
--  

把代码里面的  and c>man 全部删掉


--  作者:lichenghu
--  发布时间:2012/11/30 9:44:47
--  
楼主我建议您还是先自己学习下基础的部分,方便以后自己处理这些常见的情况。