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)
-   -   Indikatorenwerte runden? (http://www.expert-advisor.com/forum/showthread.php?t=4529)

trololotromberino 20.10.15 20:39

Indikatorenwerte runden?
 
Hi Leute,

erstmal generell vielen Dank an die Profis, die mir und schon vielen anderen Anfängern weitergeholfen haben.

Ich bin auf ein Problem gestoßen. Und zwar verwende ich viele Indikatoren in meinen ersten EA´s. Das Problem ist, dass mit diesen auch die SL-Setzung, bzw. die Limit-Entries zusammenhängen.
Indikatoren haben meistens aber sehr merkwürdige Werte.
Beispielsweise hat mein Pivot-Punkt einen Wert von:
Code:

2015.10.20 20:29:19.647        2015.08.04 06:38  Neuer Versuch Pivot Punkte DE30,M15: invalid price 11722.06666667 for OrderSend function
Da wir im Dax sind, sind 11722 Punkte gemeint.

Wie kann ich den EA dazu bringen, dass er die Werte der Indikatoren auf oder abrundet?

LG
TrololoTromberino

traderdoc 20.10.15 22:46

entweder
1. int wert = (int)Indikatorwert;
2. NormalizeDouble(Indikatorwert, x); //x bedeutet die Anzahl Nachkommastellen
3. MathRound(Indikatorwert);

Am besten Ausprobieren durch Ausgabe des gerundeten Werte über
Alert() oder Print()

traderdoc

Raul0 21.10.15 09:53

Wäre es nicht einfacher mit einem Integer zu arbeiten, der keine, bzw. nur begrenzt Nachkommastellen hat?

traderdoc 21.10.15 10:41

Zitat:

Zitat von Raul0 (Beitrag 31391)
Wäre es nicht einfacher mit einem Integer zu arbeiten, der keine, bzw. nur begrenzt Nachkommastellen hat?

Eine Integerzahl hat nie eine Nachkommastelle.
Für die Integerlösung steht doch schon
int wert = (int)Indikatorwert;

Dabei wird der Indikatorwert, der in der Regel mit double deklariert wird umgewandelt in eine Integerzahl. Dieses Verfahren nennt man explizite Typenumwandlung oder Typenreduzierung.

traderdoc

Raul0 21.10.15 10:48

Zitat:

Dabei wird der Indikatorwert, der in der Regel mit double deklariert wird umgewandelt in eine Integerzahl. Dieses Verfahren nennt man explizite Typenumwandlung oder Typenreduzierung.
Ok, und was ich meinte ist, den Indikatorwert gleich mit int statt mit double abzufragen, das spart wiederum die Umwandlung. Es sei denn, er braucht im Code die Nachkommastellen für eine andere Berechnung.

traderdoc 21.10.15 10:55

Zitat:

Zitat von Raul0 (Beitrag 31394)
Ok, und was ich meinte ist, den Indikatorwert gleich mit int statt mit double abzufragen, das spart wiederum die Umwandlung. Es sei denn, er braucht im Code die Nachkommastellen für eine andere Berechnung.

Ja das ist doch nichts anderes als das:

int wert = (int)Indikatorwert;

mittels dem

int wert = (int)iCustom(...........);

weil iCustom() einen double-Wert zurückgibt.

traderdoc


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:54 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