MQ选股模型有问题请老师帮助改改 (文华财经wh9)

投资者咨询:MQ选股模型有问题请老师帮助改改 (文华财经wh9)
来源:文华财经  日期:2018-7-9 13:39
 帮改改

Begin 
Select(Last((High-Low)/ref(Close,1)<0.1,20,0)&&Vol>ref(Vol,1)*2 &&Close >ref(Close,1)*1.03  && "DMI.PDI">"DMI.MDI" &&CROSS ("DMI.ADX","DMI.ADXR")&& "DMI.ADXR">"DMI.MDI" &&"DMI.PDI">"DMI.ADX"&& "KDJ.D">ref("KDJ.D",1));
 End
技术人员回复
日期:2018-7-9 13:56

 参考:

 


ImPort
 #Call_Other [DMI ] As DMI
 #Call_Other [KDJ] As KDJ
Vars
 Numeric PDI;
 Numeric MDI;
 Numeric ADX;
 Numeric ADXR;
 Numeric D;
Begin
PDI=DMI.PDI;
MDI=DMI.MDI;
ADX=DMI.ADX;
ADXR=DMI.ADXR;
D=KDJ.D;
Select(Last((High-Low)/ref(Close,1)<0.1,20,0)&&Vol>ref(Vol,1)*2 &&Close >ref(Close,1)*1.03  && PDI>MDI &&CROSS (ADX,ADXR)&& ADXR>MDI &&PDI>ADX&& D>ref(D,1));
 End

投资者咨询:MQ选股模型有问题请老师帮助改改 (文华财经wh9)
来源:文华财经  日期:2018-7-9 13:39
 回测选股公式时候,不支持跨指标函数ImPort #Call_Other [DMI ] As DMI #Call_Other [KDJ] As KDJ
技术人员回复
日期:2018-7-9 19:43

您是想用于公式选股?

 

如下修改下:

 

Params
     Numeric Length1(14);
     Numeric Length2(6);
    Numeric Length(9);
    Numeric Length3(3);
    Numeric Length4(3);
Vars
     Numeric TR;
     Numeric HD;
     Numeric LD;
     Numeric DMP;
     Numeric PDI;
     Numeric MDI;
     NumericSeries ADX;
     Numeric ADXR;
     Numeric DMM;
    Numeric RSV;
    Numeric K;
    Numeric D;
    Numeric J;
Begin
     TR = Sum(Max(Max(High - Low,Abs(High - Close[1])),Abs(Low - Close[1])),Length1);//最高价与最低价做差,最高价与前一周期收盘价做差,最低价与前一周期收盘价作差,在上述三个数据中取绝对值最大者,对该最大值做Length1周期累加求和。
     HD = High - High[1];//最高价与前一周期最高价做差
     LD = Low[1] - Low;//前一周期最低价与最低价做差
     DMP = Sum(IIF(HD > 0 && HD > LD,HD,0),Length1);//如果HD>0并且HD>LD,取HD否则取0,对取值做Length1周期累加求和。
     DMM = Sum(IIF(LD > 0 && LD > HD,LD,0),Length1);//如果LD>0并且LD>HD,取LD否则取0,对取值做Length1周期累加求和。
     PDI = DMP * 100 / TR;
     MDI = DMM * 100 / TR;
     ADX = Ma(Abs(MDI - PDI) / (MDI + PDI) * 100,Length2);//MDI与PDI差的绝对值与(MDI+PDI)*100做比值,取该比值的Length2个周期均值。
     ADXR = (ADX + ADX[Length2])/2;
    RSV = (Close - LLV(Low,Length)) / (HHV(High,Length) - LLV(Low,Length)) * 100;//收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。
    K = Sma(RSV,Length3,1);//RSV的移动平均值
    D = Sma(K,Length4,1);//K的移动平均值
    J = 3 * K - 2 * D;
Select(Last((High-Low)/ref(Close,1)<0.1,20,0)&&Vol>ref(Vol,1)*2 &&Close >ref(Close,1)*1.03  && PDI>MDI &&CROSS (ADX,ADXR)&& ADXR>MDI &&PDI>ADX&& D>ref(D,1));
 End