Hi,
Ich habe es getestet (mit statischem und dynamischem Buffer und mit iMA), du hast recht, es kommen unterschiedliche Werte heraus.
Hier der Code mit dem ich es getestet habe:
#define STATIC // zum Testen mit dynamischem Buffer diese Zeile auskommentieren #define BUFSIZE 1 // static buffersize int handleMA; #ifdef STATIC double bufferMA[BUFSIZE]; // static buffer #else double bufferMA[]; // dynamic buffer #endif input int ma_Period = 60; input int ma_Shift = 0; input ENUM_MA_METHOD ma_Method = MODE_SMA; input ENUM_APPLIED_PRICE ma_Price = PRICE_CLOSE; input bool offline = true; // offline (when market is closed) int OnInit() { handleMA=iMA(_Symbol,_Period,ma_Period,ma_Shift,ma_Method,ma_Price); if(handleMA==INVALID_HANDLE) { MessageBox("*ERROR* creating handle to iMA",MQLInfoString(MQL_PROGRAM_NAME),MB_ICONERROR); return(INIT_FAILED); } #ifndef STATIC ArraySetAsSeries(bufferMA,true); // only for dynamic arrays #endif if(offline) OnTick(); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { IndicatorRelease(handleMA); // not really necessary, compler doe's it for you } void OnTick() { if(CopyBuffer(handleMA,0,0,BUFSIZE,bufferMA)!=BUFSIZE) { MessageBox("*ERROR* CopyBuffer",MQLInfoString(MQL_PROGRAM_NAME),MB_ICONERROR); return; } Comment("Aktueller MA("+IntegerToString(ma_Period)+") Wert: "+DoubleToString(bufferMA[0],_Digits)); }
Ich reiche die Frage an die Spezialisten weiter.
Was stimmt hier nicht?
Ebenso Dank im Vorraus.
Hallo Zusammen,
danke für die schnelle Rückmeldung.
NormalizeDouble hat das Problem leider nicht behoben.
Viele Grüße
Hallo,
gab es hier eine Lösung? Denn ich habe das selbe Problem... (im MT5)
Gruß csicsicsi
Hi,
Ich habe es getestet (mit statischem und dynamischem Buffer und mit iMA), du hast recht, es kommen unterschiedliche Werte heraus.
Hier der Code mit dem ich es getestet habe:
Ich reiche die Frage an die Spezialisten weiter.
Was stimmt hier nicht?
Ebenso Dank im Vorraus.
das kann nicht den Wert der aktuellen Kerze ausgeben, da Du ja die Kerze 9 auf Print hast
anstelle von
Print(MA[9]);
musst Du
Print(MA[0]);
aber ich empfehle Dir den Code von Otto, das mit dem MqlParams das versteh ich nicht wie das funktionieren soll
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo Zusammen,
ich bin noch neu auf dem Gebiet der EA Programmierung.
Ich möchte im Programm auf einen Moving Average zugreifen, klappt auch soweit.
Mir ist jedoch folgendes aufgefallen: Setze ich einen Moving Average mit den selben Einstellungen wie im EA händisch in den Chart, sind die im EA berechneten Werte deutlich unterschiedlich zu den angezeigten im Chart. Bsp: im EURUSD Chart wird für den MA an der aktuellen Kerze "Value: 1.177749" angezeigt. Der Print Befehl am Ende des Codes gibt "1.1776438333..." aus.
Woran könnte das liegen?
Danke schon Mal im Voraus!