|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
der Code war/ist korrekt, trotzdem 130 Error
Ich versteh die Broker nicht mehr, an dem Code wurde nix geändert, der lief. Und nun plötzlich:
1. hin und wieder wird eine Order gesendet 2. dann andauernd ein 130 Error (ERR_INVALID_STOPS) Code (Beispiel Long Order, nur der relevante Teil): Code:
// wir machen einen Loop über alle Objekte // öffnet Long, wenn Entry Linie getroffen wird, SL aus StopLoss Linie rq_esname=obj_name; //FullNameESline rq_esprice=ObjectGetDouble(0,obj_name,OBJPROP_PRICE); //PriceOfESline rq_slname=EStoSLname(obj_name); //FullNameSLline rq_slprice=ObjectGetDouble(0,rq_slname,OBJPROP_PRICE); //PriceSLline StopLoss=NormalizeDouble(rq_slprice,_Digits); //StopLoss // ========== Buy Orders ============================================= if(rq_dirletter=="B") //AllBuyOrders { rq_dirprice=MarketInfo(_Symbol,MODE_ASK); //RequiredBuyPrice // ======= Buy 4. sending a buy order if ES is hit if(rq_dirprice>=rq_esprice) //AskHitsEntryLine { _Debug(__FUNCTION__,__LINE__, " rq_dirprice="+DoubleToStr(rq_dirprice,_Digits) +" StopLoss="+DoubleToStr(StopLoss,_Digits) ); rq_tktno=OrderSend(_Symbol,OP_BUY,LotSize, //GetTicketSendingOrder rq_dirprice,Slippage,StopLoss,TakeProfit, rq_comment,MagicNumber,ColorArrowLong); if(rq_tktno>0) //OrderSendSuccess { //GetStatistics } else //OrderSendError { _Debug(__FUNCTION__,__LINE__,IntegerToString(_LastError) ); } } } // Debug sagt: // rq_dirprice=11959.95 StopLoss=11942.52 ( das sind 17,43 oder 1743p unter Kaufpreis) // _LastError=130 (ERR_INVALID_STOPS) // MarketInfo(_Symbol,MODE_STOPLEVEL) liefert: 0 So, und nun - hat jemand eine Idee? Danke. AVT |
|
|||
Dann hat sich vielleicht beim Broker was geändert.
Wie wird der SL denn genau berechnet? Edit:Statt rq_dirprice könnte man auch einfach Ask schreiben. |
|
|||
Nun, wenn es nicht am StopLoss liegt, dann liegt es eben halt am TakeProfit.
Auch der fällt unter den Fehler 130. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke für Eure Antworten.
Zitat:
2. aber nicht, wenn man OP_BUY und OP_SELL mit jeweils 4 Bedingungen auswerten muß, da ist eine Variable einfacher Zitat:
Im Anhang die optische Darstellung der Linien. Das ist eine "BuyStop Order" die als Marketorder ausgeführt wird: der ES wandert so lange nach unten bis entweder der SL erreicht wird (dann wird alles verworfen) oder Ask den ES auslöst, dann wird gekauft (in diesem Fall war es ca 7 Punkte vor dem Stop). Im Code habe ich vor der Orderaufgabe ein Warnung für den Stoplevel und den Minimalstop eingefügt (sollten eigentlich schon beim "Malen" der Linien korrigiert werden; die werden aber nicht aktiv, also gibt es weder einen floating stoplevel, noch einen minimal stop und die Linienwerten sind auch ok): Code:
if( MarketInfo(_Symbol,MODE_STOPLEVEL)>0) _Debug(__FUNCTION__,__LINE__,"floating stop"); if(SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL)>0) _Debug(__FUNCTION__,__LINE__,"min stop needed"); Code:
Expert-Log: 0 10:45:12.179 Skalpell7.1 DE30mini,M1: rq_esprice=11889.70 rq_dirprice=11889.70 StopLoss=11882.36 TakeProfit=11929.11 0 10:45:12.367 Skalpell7.1 DE30mini,M1: 130 Terminal-Log: 0 10:45:12.179 '2010080': order buy market 0.10 DE30mini sl: 11882.36 tp: 11929.11 1 10:45:12.367 '2010080': order buy 0.10 DE30mini opening at market sl: 11882.36 tp: 11929.11 failed [Invalid S/L or T/P] Differenzen: TP 11929.11 diff=39.41 Punkte über ES/Ask ES 11889.70 SL 11882.36 diff=7.34 Punkte unter ES/ASk |
|
|||
Da man nicht den ganzen Code sieht, ist das schwierig nachzuvollziehen. Nach meiner Erfahrung liegt die Hauptursache meist beim STOPLEVEL, welches nicht eingehalten wird.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke traderdoc, ich versuch mal das in eine Kurzform zu bringen, melde mich wieder. AVT
|
|
|||
Ich habe einen kleinen MiniEA daraus gemacht mit festen Werten für die Linien (Namen und alles wie im großen Original).
Der zeigt dasselbe "komische" Verhalten (ja ich weiß, komisch gibt's beim Proggen nicht) - jedenfalls öffnet er hin und wieder ne Order, meistens aber krieg ich den 130ger um die Ohren geknallt - nicht mehr lustig Beim Testen bitte vorher in den Quellen alles an _Debug(...) auskommentieren, das man nicht sehen will, ich habe erst mal alles drin gelassen (man weiß ja nie). Danke für Eure Hilfe. AVT |
Lesezeichen |
Stichworte |
130, err_invalid_stops |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|