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)
-   -   Berechneter Wert wird nicht als Einstiegskurs akzeptiert (http://www.expert-advisor.com/forum/showthread.php?t=6112)

elbonia 07.05.18 22:09

Berechneter Wert wird nicht als Einstiegskurs akzeptiert
 
Hallo, ich bin neu hier und nähere mich gerade der MQL-Programmierung mit zunächst simplen Beispielprogrammen - dachte ich zumindest... :confused:. Bei meinem Versuch, eine einfache Sell-Limit-Order zu platzieren, bin ich auf folgendes Problem gestoßen:
Zunächst ermittelt mein EA den Mittelwert aus Anfangs- und Schlusskurs der M5-Kerze zu einer bestimmten Zeit (hier zum Beispiel um 8 Uhr). Dieser Wert soll als Einstiegskurs der Sell-Limit-Order verwendet werden. Wenn ich mir die Variable achtuhr_mean ausgeben lasse, sieht sie auch nach einem ganz normalen double-Wert aus, genau wie achtuhr_open und achtuhr_close. Aber im OrderSend-Befehl führt achtuhr_mean immer zu einem Fehler 4107 ("invalid price"). Mit achtuhr_open oder achtuhr_close als Einstiegspreis lässt sich die Order problemlos platzieren.
Es muss irgendwie an der Division durch 2 liegen. Lasse ich "/2" weg, nehme also nur die Summe aus Einstiegs- und Schlusskurs, funktioniert die Order.

Habt Ihr eine Idee, was hier schiefgelaufen ist?
Vielen Dank schon mal im Voraus!


void OnInit()
{
datetime acht_Uhr=D'2018.05.07 08:00:00';
int shift=iBarShift("EURUSD",PERIOD_M5,acht_Uhr); // Index der Kerze um 8 Uhr
double achtuhr_open = iOpen("EURUSD",PERIOD_M5, shift); // Anfangskurs der Kerze um 8 Uhr
double achtuhr_close = iClose("EURUSD",PERIOD_M5, shift); // Schlusskurs der Kerze um 8 Uhr
double achtuhr_mean = (achtuhr_open + achtuhr_close)/2; // Durchschnitt

int pendingsell = OrderSend("EURUSD", OP_SELLLIMIT, 0.01, achtuhr_mean, 1, 0, 0, NULL, 0, 0, Green);
}

traderdoc 07.05.18 22:36

double achtuhr_mean = NormalizeDouble((achtuhr_open + achtuhr_close)/2, Digits); // Durchschnitt

traderdoc

elbonia 07.05.18 23:06

Super, vielen Dank! :)
Das klappt schon mal.

Ich hatte mir schon gedacht, dass es evtl. mit der Genauigkeit zu tun hat, zu viele oder zu wenige Nachkommastellen. Um das auszuschließen, hatte ich für achtuhr_mean auch mal eine Zahl mit 10 Nachkommastellen eingegeben. Das lief problemlos...


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