Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Anzahl der Stellen eines Moving Average bei 5-stelligem Broker (http://www.expert-advisor.com/forum/showthread.php?t=6291)

Angel 04.01.19 17:48

Anzahl der Stellen eines Moving Average bei 5-stelligem Broker
 
Hi,

mein Broker ist 5-stellig und möchte mit einem Moving Average arbeiten.

Ich habe das Problem, dass in FOREX (zB EUR/USD)

Code:


double EMA15P10;
EMA15P10=iMA(NULL,15,10,0,1,0,0);

nach dem Komma mit 4 Stellen ausgegeben wird. Ich möchte jedoch mit verschiedenen EMA des selben Timeframes und der ähnlichen Perioden arbeiten. Um Genauigkeitsfehler zu minimieren, möchte ich die Moving Averages 5-stellig sind und damit möchte ich rechnen.
Gibt es einen Weg, das Ergebnis der iMA() 5-stellig ausgeben zu lassen?
mit

Code:

double EMA15P10;
string EMA15P10GENAU;
EMA15P10=iMA(NULL,15,10,0,1,0,0);
EMA15P10GENAU=DoubleToStr(EMA15P10,5);

komme ich nicht weiter, da der nun 5-stellige, genaue Wert des Moving Average (EMA15P10GENAU) nur zur Ausgabe taugt, als string jedoch nicht zur Addition oder sonstigen mathematischen Operationen, die ich benötige. Außer seltsamerweise


Code:

if (EMA15P10>EMA15P16)
{}

das haut offenbar hin.

Hat jemand eine Idee? Warum werden die iMA() eigentlich nur 4-stellig ausgegeben?
Bid und Ask werden übrigens auch 4-stellig ausgegeben, obwohl ich 5-stellig kaufe / verkaufe - dies ist auch bei den Orders ersichtlich.

traderdoc 04.01.19 20:01

Liste der Anhänge anzeigen (Anzahl: 1)
Das kann ich nicht ganz nachvollziehen, warum bei Dir nur 4 Stellen nach dem Komma angegeben werden.

In meinem Bild siehst Du links das Datenfenster, wo alle Kurswerte und auch der MA 5-stellig angegeben werden.
Im rechten Fenster sieht man die direkte Alert()-Ausgabe der ermittelten MA-Werte auf Kerze 0 (aktuelle Kerze).
Man kann sich die Werte aber auch über

NormalizeDouble(Wert, Digits)

normiert als double-Zahl auf die Anzahl Kiommastellen der Werte der Handelspaare, mit Alert() anzeigen lassen und damit dann auch rechnen.

Das gilt ebenso für die Kurswerte Ask und Bid.

traderdoc

Angel 04.01.19 22:27

Danke für die rasche Antwort.
Im Datenfenster sehe ich auch alles 5-stellig... aber ich brauche die Werte ja im Programm.
Ich lasse mir zur Kontrolle gerne die Werte mit Comment() im Chart ausgeben. Comment() aktualisiert sich dann ständig im Rahmen der OnTick-Funktion. Und dort ist alles 4-stellig, auch Ask und Bid.
Mit

Code:

EMA15P10GENAU=NormalizeDouble(EMA15P10,5)
Comment(EMA15P10,5);

versuchte ich es auch schon, die 5 Nachkommastellen hinzubekommen - ohne Erfolg.

MA-EA 05.01.19 00:35

Zitat:

Zitat von Angel (Beitrag 41954)
Ich möchte jedoch mit verschiedenen EMA des selben Timeframes und der ähnlichen Perioden arbeiten. Um Genauigkeitsfehler zu minimieren, möchte ich die Moving Averages 5-stellig sind und damit möchte ich rechnen.
Gibt es einen Weg, das Ergebnis der iMA() 5-stellig ausgeben zu lassen?

:confused:

Find vielleicht erst mal raus, warum Dein EMA nur 4 digits hat.

traderdoc 05.01.19 01:03

Zitat:

Zitat von Angel (Beitrag 41956)
Danke für die rasche Antwort.
Im Datenfenster sehe ich auch alles 5-stellig... aber ich brauche die Werte ja im Programm.
Ich lasse mir zur Kontrolle gerne die Werte mit Comment() im Chart ausgeben. Comment() aktualisiert sich dann ständig im Rahmen der OnTick-Funktion. Und dort ist alles 4-stellig, auch Ask und Bid.
Mit

Code:

EMA15P10GENAU=NormalizeDouble(EMA15P10,5)
Comment(EMA15P10,5);

versuchte ich es auch schon, die 5 Nachkommastellen hinzubekommen - ohne Erfolg.

Über

double value = iMA(NULL,15,10,0,1,0,0);
Comment(NormalizeDouble(value, Digits));

wirst auch Du eine 5-Stelligkeit sehen. Würde man das NormalizeDouble() weglassen, würden sogar noch viel mehr Stellen angezeigt werden.

traderdoc

PS: @MA-EA - wieder ein super Kommentar!!

Angel 05.01.19 02:58

Danke! Erst recht zu später Stunde... Jetzt, wo Wochenende ist und kein Tick mehr die OnTick-Funktion antreibt, musste ich das Testprogramm in die OnInit-Funktion verschieben. Dort wird es 1 x ausgeführt. Dann versuchte ich es mit dem Strategietester. Ergebnis: Im Strategietester funktioniert es in der OnTick-Funktion... :rolleyes:

So.. nun zu dem Programm:
Code:

  double Test,ND,ND1;
  string DTS;
  Test = iMA(NULL,15,10,0,1,0,0);
  ND = NormalizeDouble(Test,5);
  ND1= NormalizeDouble(iMA(NULL,15,10,0,1,0,0),5);   
  DTS = DoubleToString(Test,5);       
  Comment(" Test = ",Test," ND = ",ND," ND1 = ",ND1," DTS = ",DTS);

[IMG] https://1drv.ms/u/s!AqQnnO2HdvchkFiU8MWTWNF8O-1A [/IMG]

Es klappt!

Lange Rede, kurzer Sinn: Hier, wo ich mein ursprüngliches Programm auseinanderpflückte, bis fast in den Wahnsinn grübelte, einen neuen EA mit diesem Codeschnipsel schrieb.... funktioniert es!!! Obwohl es der ursprüngliche Code ist !
Ich frage mich echt, wo da immer der Fehler liegt... im Gegensatz zu dem ursprünglichen Programm, das die Frage verursachte, habe ich augenscheinlich nichts verändert... Vielleicht der MQL4-Klabautermann... :(
Danke, traderdoc !!!

MA-EA 05.01.19 08:38

Müsste ein EMA nicht die Punkte genauso anzeigen wie Ask oder Bid oder was auch immer? :confused:

Angel 10.01.19 17:20

Ok - Heureka !!!
Nach ewigem nervigem und genervten Suchen , Ausprobieren und Festbeißen am Problem fand ich nun den Fehler:

Seltsamerweise wird 5-stellig nach Einfügen von

PHP-Code:

#property strict 

oben , wo die ersten Zeilen Programmcode eingefügt werden, angezeigt.

Das war´s schon.

Wahnsinn...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum