* und / sind eigentlich klar. Nur scheint der MT4 damit nicht umgehn zu können. Mach ich das Ganze nicht so, wie im folgenden Code/Indikator, kommen "unlogische" Ergebnisse im MT4 raus. Nicht nur in diesem Indi, auch in Anderen und in EAs. Vermutlich ist er, bzw. seine Art zu rechnen, nicht gerade die Neueste... Nebenbei: Weiß Jemand was Neues über MQL 6 / MT 6 ?
Jedenfalls kommen hier nen paar schöne - ähm - nennen wir es Übungsaufgaben.
Aufgabe: Der automatische Multi soll das Ergebnis der anderen Berechnungen so umrechnen, dass dieses an den Kurs-Verlauf angepasst und seinem Verhältnis zu diesem entsprechend korrekt im Chart angezeigt wird. Wie berechnet man den Auto-Multi korrekt?
Brauch Jemand Mathe-Nachhilfe?
Ich auf jeden Fall.
Sollten andere Fehler ausser den Mathe-(un-)Logischen drin sein, dann sorry.
Code:
//=============================================================================================================
// M A s + M A s
//=============================================================================================================
double MAs_pl_MAs=MA_one+MA_two+MA_thr+MA_fou+MA_fiv+MA_six+MA_sev;
//=============================================================================================================
// ( M A s + M A s ) / D I V
//=============================================================================================================
// Wert links (zwischen -1 und 1)...
if( MAs_pl_MAs > -1.0 && MAs_pl_MAs < 1.0 ){
// ...soll durch Wert geteilt werden, der ebenfalls zwischen -1 und 1 ist.
if( Div > -1.0 && Div < 1.0 )MAplMA_Div = MAs_pl_MAs * Div ;
// ...soll durch Wert geteilt werden, der nicht zwischen zwischen -1 und 1 ist.
if( Div <= -1.0 || Div >= 1.0 )MAplMA_Div = MAs_pl_MAs / Div ;
}
// Wert links (nicht zwischen -1 und 1)...
if( MAs_pl_MAs < -1.0 || MAs_pl_MAs > 1.0 ){
// ...soll durch Wert geteilt werden, der zwischen -1 und 1 ist.
if( Div > -1.0 && Div < 1.0 )MAplMA_Div = MAs_pl_MAs * Div ;
// ...soll durch Wert geteilt werden, der nicht zwischen -1 und 1 ist.
if( Div <= -1.0 || Div >= 1.0 )MAplMA_Div = MAs_pl_MAs / Div ;
}
//=============================================================================================================
// A U T O M U L T I
//=============================================================================================================
if(AutoMulti==true){
if( Div > -1.0 && Div < 1.0 )Multi = Div * MAcount;
if( Div <= -1.0 || Div >= 1.0 )Multi = Div / MAcount;
}
//=============================================================================================================
// B U F F E R Z U W E I S U N G
//=============================================================================================================
// Wert links, der zwischen -1 und 1 ist...
if( MAplMA_Div > -1.0 && MAplMA_Div < 1.0 ){
// ...soll multipliziert werden mit Wert, der auch zwischen -1 und 1 ist.
if( Multi > -1.0 && Multi < 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div / Multi ;
//
if( Multi <= -1.0 || Multi >= 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div * Multi ;
}
//
if( MAplMA_Div <= -1.0 || MAplMA_Div >= 1.0 ){
//
if( Multi > -1.0 && Multi < 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div / Multi ;
//
if( Multi <= -1.0 || Multi >= 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div * Multi ;
}