 
等级: 超级版主
- 注册:
- 2021-5-18
- 曾用名:
- FireScript
|
分为2个指标
交易指标:
[PEL] 复制代码 input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
INPUT:X(20,1,500,1),Y(3,1,500,1),mx(0.001,-1000,1000,1);
{这部分算法是利用小周期价格复现当时调用到的大周期macd的数值,解决了跨周期的一个未来调用的问题。
这个效果对回测很友好,更符合实际情况,你在不同日线上都能看到一个不同的macd值,如果直接调用周线数值 多个日线下的值都只会是一样的}
EMA_S1:="X1.M1##WEEK"(S);
EMA_P1:="X1.M2##WEEK"(P);
DEA1:="X1.DEA##WEEK";
EMA_S0:=(2*C+(S-1)*EMA_S1)/(S+1);//当前的EMA(CLOSE,S)
EMA_P0:=(2*C+(P-1)*EMA_P1)/(P+1);//当前的EMA(CLOSE,p)
DIFF0:=EMA_S0-EMA_P0;//当前的DIFF
DEA0:=(2*DIFF0+(M-1)*DEA1)/(M+1);
MACD0 :2*(DIFF0-DEA0), COLORSTICK;
//cd即为条件1到条件3在周线上的判定
last_macd:="X1.macd1##week";//上一个周线的macd值
cd1:"X1.cd#WEEK"(X,Y,MX);
cd2:last_macd<0 and MACD0>0;//上一个周线结束时候的macd小于0,当前最新的macd大于0 开多
kd:cd1 and cd2;
pd:ENTERBARS<=110 and c<=AVGENTERPRICE*0.7;
buy(kd and holding=0,1,market);
sell(pd,holding,market);
被调用的指标X1:
[PEL] 复制代码 input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
INPUT:X(20,1,500,1),Y(3,1,500,1),mx(100,-1000,1000,0.001);
M1:EMA(C,S);
M2:EMA(C,P);
DIFF :=M1- M2;
DEA :=EMA(DIFF,M);
MACD1 :2*(DIFF-DEA), COLORSTICK;
macdjc:cross(diff,dea),NODRAW;//macd金叉
macdsc:cross(dea,diff),NODRAW;
//条件1到条件3的判定
cd:all(diff<0,x) and hhv(macd1,x)>mx and llv(c,y)=llv(c,x);
|
|