请高手帮忙写一个交易模型。谢谢! 思路如下:
1,5均线向上穿过所有均线时(10-80),开多仓,当5均线向下穿过任一条均线时,平多仓,当5均线重返所有均线之上时,重新开多仓。 3,需要注意的是: 当5均线上穿或下穿所有均线时开仓,我指的是在不同时间在不同的K线上陆续上穿或下穿,当5均线穿过最后1条均线时即为满足开仓条件,而并非是指5均线在同一根K线上同时上穿或下穿所有均线(这种条件是不大可能同时满足的)。 MA5:MA(C,5),COLORBLUE;
|
if ma5>ma10 and ma5>ma20..........and ma5>ma80 then buy(holding=0,1,market);
if cross(ma10,ma5) or cross(ma20,ma5).........or cross(ma80,ma5) then sell(holding>0,0,market);
if ma5<ma10 and ma5<ma20 ............and ma5<ma80 then buyshort(holding=0,1,market);
if cross(ma5,ma10) or cross(ma5,ma20).........or cross(ma5,ma80) then sellshort(holding<0,0,market);
测试时通不过,文字提示: 未定义的变量:ma5 。不知是何原因?麻烦老师帮我修改并通过测试后发给我吧。非常感谢!
if ma5>ma10 and ma5>ma20 and ma5>ma30 and ma5>ma40 and ma5>ma50 and ma5>ma60and ma5>ma70 then buy(holding=0,1,market);
if cross(ma10,ma5) or cross(ma20,ma5) or cross(ma30,ma5) or cross(ma40,ma5) or cross(ma50,ma5) or cross(ma60,ma5)or cross(ma70,ma5) then sell(holding>0,0,market);
if ma5<ma10 and ma5<ma20 and ma5<ma30 and ma5<ma40 and ma5<ma50 and ma5<ma60 and ma5<ma70 then buyshort(holding=0,1,market);
if cross(ma5,ma10) or cross(ma5,ma20) or cross(ma5,ma30) or cross(ma5,ma40) or cross(ma5,ma50) or cross(ma5,ma60)or cross(ma5,ma70) then sellshort(holding<0,0,market);
你把MA5,MA10之类的都定义一下
类似于
ma5:=ma(c,5);
ma10:=ma(c,10);
上次按老师指导测试通过了。但发现交易信号太多,现想对其进行改进,再请老师帮忙修改。谢谢!
思路如下:
1,当5均线向上穿过所有均线时(5-70),平空开多仓。当5均线向下穿过所有均线时,平多开空。以此反复循环。
2,需要注意的是: 当5均线上穿或下穿所有均线时开平仓,我指的是在不同时间在不同的K线上陆续上穿或下穿,当5均线穿过最后1条均线时即为满足开平仓条件,而并非是指5均线在同一根K线上同时上穿或下穿所有均线(这种条件是不大可能同时满足的)。
Ma5:ma(c,5),COLORGREEN;
Ma10:ma(c,10),COLORBLUE;
Ma20:ma(c,20),COLORBLUE;
Ma30:ma(c,30),COLORBLUE;
Ma40:ma(c,40),COLORBLUE;
Ma50:ma(c,50),COLORBLUE;
Ma60:ma(c,60),COLORBLUE;
Ma70:ma(c,70),COLORBLUE;
if ma5>ma10 and ma5>ma20 and ma5>ma30 and ma5>ma40 and ma5>ma50 and ma5>ma60and ma5>ma70 then buy(holding=0,1,market);
if cross(ma10,ma5) or cross(ma20,ma5) or cross(ma30,ma5) or cross(ma40,ma5) or cross(ma50,ma5) or cross(ma60,ma5)or cross(ma70,ma5) then sell(holding>0,0,market);
if ma5<ma10 and ma5<ma20 and ma5<ma30 and ma5<ma40 and ma5<ma50 and ma5<ma60 and ma5<ma70 then buyshort(holding=0,1,market);
if cross(ma5,ma10) or cross(ma5,ma20) or cross(ma5,ma30) or cross(ma5,ma40) or cross(ma5,ma50) or cross(ma5,ma60)or cross(ma5,ma70) then sellshort(holding<0,0,market);
我把平仓语句中的or都改成and 后,但只出一部份信号,而且多在平仓后的下一根K线才出开仓信号(在满足开仓条件的情况下平仓和开仓应在同一根k线上完成才对),在很多5均线陆续上穿或下穿所有均线时,也不出信号了(应该出信号才对)。麻烦请老师帮我检测修改一下!
|