Einzelnen Beitrag anzeigen
  #29 (permalink)  
Alt 10.09.20
MA-EA MA-EA ist offline
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Würd ich mir so ne Mühe machen, bloß um irgendwen zu verar...


Das Folgende ist vielleicht kein Mathe-Problem, aber es ist verwirrend. Ich meine, wie kann denn, wenn man von einem MA-Wert nen anderen MA-Wert abzieht, und den zu nem weiteren MA plus/minus rechnet, wie können da vollkommen unlogische Anzeigen im Datenfenster rauskommen? Schaut Euch das mal an. Entweder ist am Indi im Anhang wirklich irgendwas total verkehrt, oder der MT4 braucht dringenst Mathe-Nachhilfe. Anders ist das jedenfalls echt nicht mehr zu erklären. Wenn Ihr nicht helfen wollt, dann sagt mir wenigstens was ungefähr der Fehler sein könnte. Aber das ist doch echt nicht mehr normal...
Code:
extern string MfMs2="( MA_Fast - MA_Slow )";

extern int               MA_Fast_Period=6;
input ENUM_MA_METHOD     MA_Fast_Method=MODE_SMA;
input ENUM_APPLIED_PRICE MA_Fast_Price =PRICE_MEDIAN;

extern int               MA_Slow_Period=12;
input ENUM_MA_METHOD     MA_Slow_Method=MODE_SMA;
input ENUM_APPLIED_PRICE MA_Slow_Price =PRICE_MEDIAN;



extern string PmMfMsD2="( + - PlMi_MA )";

extern int               PlMi_MA_Period=10;
input ENUM_MA_METHOD     PlMi_MA_Method=MODE_SMA;
input ENUM_APPLIED_PRICE PlMi_MA_Price =PRICE_CLOSE;

extern string i1= "If Plus_PMPrice = true";
extern string i2= "Line = ...";
extern bool Plus_MA_PlMi = false;
Code:
double MAfa_Pr , MAsl_Pr , pmMA_Pr ;

//=============================================================================================================
// D E K L A R A T I O N   P R I C E S
//=============================================================================================================



double Pr_Hi=iHigh (NULL,NULL,i);
double Pr_Cl=iClose(NULL,NULL,i);
double Pr_Op=iOpen (NULL,NULL,i);
double Pr_Lo=iLow  (NULL,NULL,i);

double Pr_HL = Pr_Hi + Pr_Lo;
double Pr_ME = Pr_HL / 2.0;

double Pr_HCL = Pr_Hi + Pr_Cl + Pr_Lo;
double Pr_TY  = Pr_HCL / 3.0;     
    
double Pr_HOCL = Pr_Hi + Pr_Cl + Pr_Op + Pr_Lo;
double Pr_WE   = Pr_HOCL / 4.0;

// Zuweisung fast MA Price
if(MA_Fast_Price==PRICE_HIGH    )MAfa_Pr=Pr_Hi;
if(MA_Fast_Price==PRICE_CLOSE   )MAfa_Pr=Pr_Cl;
if(MA_Fast_Price==PRICE_OPEN    )MAfa_Pr=Pr_Op;
if(MA_Fast_Price==PRICE_LOW     )MAfa_Pr=Pr_Lo;
if(MA_Fast_Price==PRICE_MEDIAN  )MAfa_Pr=Pr_ME;
if(MA_Fast_Price==PRICE_TYPICAL )MAfa_Pr=Pr_TY;
if(MA_Fast_Price==PRICE_WEIGHTED)MAfa_Pr=Pr_WE;

// Zuweisung slow MA Price
if(MA_Slow_Price==PRICE_HIGH    )MAsl_Pr=Pr_Hi;
if(MA_Slow_Price==PRICE_CLOSE   )MAsl_Pr=Pr_Cl;
if(MA_Slow_Price==PRICE_OPEN    )MAsl_Pr=Pr_Op;
if(MA_Slow_Price==PRICE_LOW     )MAsl_Pr=Pr_Lo;
if(MA_Slow_Price==PRICE_MEDIAN  )MAsl_Pr=Pr_ME;
if(MA_Slow_Price==PRICE_TYPICAL )MAsl_Pr=Pr_TY;
if(MA_Slow_Price==PRICE_WEIGHTED)MAsl_Pr=Pr_WE;

// Zuweisung Ma_Plus_Minus Price
if(PlMi_MA_Price==PRICE_HIGH    )pmMA_Pr=Pr_Hi;
if(PlMi_MA_Price==PRICE_CLOSE   )pmMA_Pr=Pr_Cl;
if(PlMi_MA_Price==PRICE_OPEN    )pmMA_Pr=Pr_Op;
if(PlMi_MA_Price==PRICE_LOW     )pmMA_Pr=Pr_Lo;
if(PlMi_MA_Price==PRICE_MEDIAN  )pmMA_Pr=Pr_ME;
if(PlMi_MA_Price==PRICE_TYPICAL )pmMA_Pr=Pr_TY;
if(PlMi_MA_Price==PRICE_WEIGHTED)pmMA_Pr=Pr_WE;



//=============================================================================================================
// ( ( M A S F S F A S T + M A S F S S L O W ) / 2 )
//=============================================================================================================

double MAfast=iMA(_Symbol,_Period,MA_Fast_Period,0,MA_Fast_Method,MAfa_Pr,i);
double MAslow=iMA(_Symbol,_Period,MA_Slow_Method,0,MA_Slow_Method,MAsl_Pr,i);

// (( MAsFS_fast + MAsFS_slow / 2 )
double FAminSL =  MAfast - MAslow;

// Version ohne d2

//=============================================================================================================
// 
//=============================================================================================================

double PlMi_MA=iMA(_Symbol,_Period,PlMi_MA_Period,0,PlMi_MA_Method,pmMA_Pr,i);

//=============================================================================================================
// B U F F E R   Z U W E I S U N G
//=============================================================================================================


if(Plus_MA_PlMi==true )BUF_CHA_MAmMApmMA[i]= PlMi_MA + FAminSL;

  if(Plus_MA_PlMi==false)BUF_CHA_MAmMApmMA[i]= PlMi_MA - FAminSL;
Die drei untersten Werte im Datenfenster unter Volume sind doch echt nicht mehr nachvollziehbar.

Angehängte Dateien
Dateityp: mq4 LINE_CHA_MAmMA_pmMA.mq4 (15,7 KB, 2x aufgerufen)