Fehlermeldung bei OrderSend "Invalid Price"

 

Hallo zusammen,

ich habe mit folgendem Code eine Pending Order SellStop aufgegeben:

 

      MqlTradeResult result={}; 

      OrderSend(request,result); 

   //--- die Antwort des Servers im Journal ausgeben   

      Alert("Resultat:",result.comment);

Das funktioniert in der Regal auch. Dieses Mal habe ich die Fehlermeldung "invalid price" erhalten, kann mir diese aber mit Blick auf den Chart nicht erklären.

Irgendwie habe ich in Erinnerung, dass der Einstiegsprice einen gewissen Abstand zum aktuellen Preis haben muss. Kann ich den nächst gültigen Preis irgendwie vorab abrufen oder mir eine genauere Erklärung anzeigen lassen?

Irgendwie finde ich in der Doku dazu nichts.


Danke vielmals für Eure Hilfe!

VG

Mirko

 
Mirko Wüster:
Dieses Mal habe ich die Fehlermeldung "invalid price" erhalten, kann mir diese aber mit Blick auf den Chart nicht erklären.
Da hilft nur alle Preise zur Zeit des Auftrags oder 'request' und 'result' ausdrucken.
 
Carl Schreiber #:
Da hilft nur alle Preise zur Zeit des Auftrags oder 'request' und 'result' ausdrucken.

Ich glaube es passiert nur dann, wenn der Einstiegskurs sehr nah zum aktuellen Kurs liegt.

Ich finde leider nicht raus, wie ich den nächst möglichen Preis finden kann bzw. mit welchem Befehl mir dieser angezeigt wird.

 
Schau in die Symbol Spezifikation, da steht es drin
 
Mirko Wüster #:
Ich finde leider nicht raus, wie ich den nächst möglichen Preis finden kann bzw. mit welchem Befehl mir dieser angezeigt wird.

SYMBOL_TRADE_STOPS_LEVEL

Minimale Einrückung in Punkten vom laufenden Schlusspreis für Einstellung der Stop Order

int

SYMBOL_TRADE_FREEZE_LEVEL

Distanz der Einfrierung der Handelsoperationen (in Punkten)

int


Abzurufen mit SymbolInfoInteger(). (Schreib das in den EA, stell den Cursor 'drauf und drück F1 - auch für später)

Ist in Punkten, muss also umgerechnet werden.

 
Carl Schreiber #:

SYMBOL_TRADE_STOPS_LEVEL

Minimale Einrückung in Punkten vom laufenden Schlusspreis für Einstellung der Stop Order

int

SYMBOL_TRADE_FREEZE_LEVEL

Distanz der Einfrierung der Handelsoperationen (in Punkten)

int


Abzurufen mit SymbolInfoInteger(). (Schreib das in den EA, stell den Cursor 'drauf und drück F1 - auch für später)

Ist in Punkten, muss also umgerechnet werden.

Guten Morgen,

vielen Dank für die Befehle.

Bei mir scheint das Problem der Einstiegskurs zu sein. Wenn ich SL und TP weg lasse, passiert das gleiche. Gelten die Befehle auch für diesen?

Ich habe irgendwie auch noch Probleme, das zum nächst möglichen Kurs umzurechnen.

Muss ich die Punkte in Tick/Pips umrechnen und dann zum aktuellen Kurs addieren/subtrahieren?

Und kann ich vor OrderSend eine Testabfrage machen, ob der Einstiegskurs gültig ist?

Sorry für die dummen Fragen ^^

 

Es gibt keine dummen Fragen, aber es gibt Fragen, die man sich leicht selbst beantworten kann!

Kursor auf OrderSend() stellen und F1 drücken, dann lesen .. bis OrderCheck(), draufklicken und wieder lesen..

Und das wäre nur eine Methode!

 
Carl Schreiber #:

Es gibt keine dummen Fragen, aber es gibt Fragen, die man sich leicht selbst beantworten kann!

Kursor auf OrderSend() stellen und F1 drücken, dann lesen .. bis OrderCheck(), draufklicken und wieder lesen..

Und das wäre nur eine Methode!

Sorry nochmal und vielen Dank für deine Hilfe!
 
Carl Schreiber #:

Es gibt keine dummen Fragen, aber es gibt Fragen, die man sich leicht selbst beantworten kann!

Kursor auf OrderSend() stellen und F1 drücken, dann lesen .. bis OrderCheck(), draufklicken und wieder lesen..

Und das wäre nur eine Methode!

Leider liefert die OrderCheck Methode auch nur die Fehlermeldung invalid price ohne irgendeine Erklärung, warum der invalid ist.

Ich bin eigentlich der Meinung, dass es passen müsste, bekomme aber trotzdem die Fehlermeldung.

double FreezeLevel = SymbolInfoInteger(Symbol(), SYMBOL_TRADE_FREEZE_LEVEL)*SymbolInfoDouble(Symbol(),SYMBOL_POINT);

liefert mir aber auch irgendwie immer 0.0 als Ergebnis.

Woran könnte das liegen?

 
zeig mal deinen code, dann sieht man vielleicht mehr
 
Mirko Wüster #:

Leider liefert die OrderCheck Methode auch nur die Fehlermeldung invalid price ohne irgendeine Erklärung, warum der invalid ist.

..

.. SymbolInfoInteger(Symbol(), SYMBOL_TRADE_FREEZE_LEVEL)*SymbolInfoDouble(Symbol(),SYMBOL_POINT);

liefert mir aber auch irgendwie immer 0.0 als Ergebnis.

Mann!! Denk nicht, es müsste klappen, prüfe es, also druck es aus. Es klappt nicht, also ist Deine Denke falsch!

Stell den Kursor auf MqlTradeResult und drück F! und lies und kopiere, was Du brauchst.

Übrigens Du wärst nicht der Erste, der z.B. Bid und Ask und SL und TP vertauscht hat: