//计算MACD快线和慢线
DIF5F=XAVerage(Close,FastMA5F)-XAVerage(Close,SLowMA5F);
DEA5F=XAVerage(DIF5F,AvgMA5F);
DIF5F=XAVerage(Close,FastMA30F)-XAVerage(Close,SLowMA30F);
DEA30F=XAVerage(DIF30F,AvgMA30F);
DIF4H=XAVerage(Close,FastMA4H)-XAVerage(Close,SLowMA4H);
DEA4H=XAVerage(DIF4H,AvgMA4H);
ZeroLine=0;//零轴
MA1=AVerage(Close, MALenth);
PlotNumeric("MA1",MA1);
//多头条件设置
Con1=DIF5F[1]>DEA5F[1]&&DEA5F[1]>ZeroLine&&DIF30F[1]>DEA30F[1]&&DIF30F[1]>ZeroLine&&DIF4H[1]>DEA4H[1];//空头条件设置
Con2=DIF5F[1]<DEA5F[1]&&DEA5F[1]<ZeroLine&&DIF30F[1]<DEA30F[1]&&DIF30F[1]<ZeroLine&&DIF4H[1]<DEA4H[1];//多头入场
IF(marketposition==0 && High>High[1]&&Close>Open&&Con1)
{
Buy(lost,Open+Minponint);
Commentary("多头开仓");
需要4小时macd的DIF跟DEA多头排列,并且30分钟的macd的DIF跟DEA多头排列并且DIF大于0,则在操作周期图表开多,空头相反。麻烦技术大神帮忙修改一下我之前的模型,修改为跨周期,谢谢
.
Params
Numeric FastMA5F(12);
Numeric SLowMA5F(26);
Numeric AvgMA5F(9);
Numeric FastMA30F(72);
Numeric SLowMA30F(156);
Numeric AvgMA30F(54);
Numeric FastMA4H(576);
Numeric SLowMA4H(1248);
Numeric AvgMA4H(432);
Numeric ATRLength(12);
Numeric ATRZS(2);
Numeric MALenth(60);
Numeric lost(2);
Vars
Series<Numeric> DIF5F;
Series<Numeric> DEA5F;
Series<Numeric> DIF30F;
Series<Numeric> DEA30F;
Series<Numeric> DIF4H;
Series<Numeric> DEA4H;
Numeric ZeroLine(0);
Series<Numeric>ATRVal;
Series<Numeric> MA1;
Numeric myExitprice1;
Bool Con1;
Bool Con2;
Numeric Minponint;
Events
OnBar(ArrayRef<Integer> indexs)
{
Minponint = Minmove*PriceScale;
ATRVal=AvgTrueRange(ATRLength);
//计算MACD快线和慢线
DIF5F=XAVerage(Close,FastMA5F)-XAVerage(Close,SLowMA5F);
DEA5F=XAVerage(DIF5F,AvgMA5F);
DIF5F=XAVerage(Close,FastMA30F)-XAVerage(Close,SLowMA30F);
DEA30F=XAVerage(DIF30F,AvgMA30F);
DIF4H=XAVerage(Close,FastMA4H)-XAVerage(Close,SLowMA4H);
DEA4H=XAVerage(DIF4H,AvgMA4H);
ZeroLine=0;//零轴
MA1=AVerage(Close, MALenth);
PlotNumeric("MA1",MA1);
//多头条件设置
Con1=DIF5F[1]>DEA5F[1]&&DEA5F[1]>ZeroLine&&DIF30F[1]>DEA30F[1]&&DIF30F[1]>ZeroLine&&DIF4H[1]>DEA4H[1];
//空头条件设置
Con2=DIF5F[1]<DEA5F[1]&&DEA5F[1]<ZeroLine&&DIF30F[1]<DEA30F[1]&&DIF30F[1]<ZeroLine&&DIF4H[1]<DEA4H[1];
//多头入场
IF(marketposition==0 && High>High[1]&&Close>Open&&Con1)
{
Buy(lost,Open+Minponint);
Commentary("多头开仓");
}
//空头入场
IF(marketposition==0 &&Low<Low[1]&& Close<Open&&Con2)
{
Sellshort(lost,Open-Minponint);
Commentary("空头开仓");
}
//开仓时根据开仓Bar的ATR计算多仓止损价
IF(marketposition==1 && BarSsinceEntry==0)
{
myExitprice1=Entryprice-ATRVal* ATRZS;
}
//多头平仓止损
IF(marketposition==1 && BarSsinceEntry>0)
{
IF(Low<myExitprice1)
{
Sell(0,Min(Open,myExitprice1));
Commentary("多头止损出场");
}
}
//开仓时根据开仓Bar的ATR计算空仓止损价
IF(marketposition==-1 && BarSsinceEntry==0)
{
myExitprice1=Entryprice+ATRVal* ATRZS;
}
//空头平仓止损
IF(marketposition==-1 && BarSsinceEntry>0)
{
IF(High>myExitprice1)
{
BuyToCover(0,Max(Open,myExitprice1));
Commentary("空头止损出场");
}
}
//多头均线平仓
IF(marketposition==1 &&CrossUnder(Close,MA1))
{
Sell(0,Open-Minponint);
Commentary("多头均线平仓");
}
//空头均线平仓
IF(marketposition==-1 &&Crossover(Close,MA1))
{
BuyToCover(0,Open+Minponint);
Commentary("空头均线平仓");
}
}
技术部老大,麻烦帮看看逻辑上出来什么问题,为什么没有信号
请问你可以找你帮忙看看代码吗,这么联系你,找了客服他们叫我找技术部,
第一 把所有的信号条件输出一下看看数值是多少,到底应不应该满足
第二 检查lots的值,看看是不是计算出错,资金不够开不出信号