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)
-   -   der Code war/ist korrekt, trotzdem 130 Error (http://www.expert-advisor.com/forum/showthread.php?t=6494)

AVT 02.09.19 15:06

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

Die Order wird zum aktuellen ASK geöffnet, der SL-Wert entspricht exakt dem der SL Linie, deren Preis wurde mit NormalizeDouble angepaßt und er liegt verdammt weit unter dem Entry. SL Begrenzung liegt bei 0, wenn es floating wäre, dann hätte es einen Wert.
So, und nun :confused: :confused: - hat jemand eine Idee? Danke. AVT

MA-EA 02.09.19 19:13

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.

traderdoc 02.09.19 20:33

Nun, wenn es nicht am StopLoss liegt, dann liegt es eben halt am TakeProfit.
Auch der fällt unter den Fehler 130.

traderdoc

AVT 03.09.19 11:53

Liste der Anhänge anzeigen (Anzahl: 1)
Danke für Eure Antworten.
Zitat:

Zitat von MA-EA (Beitrag 42800)
Wie wird der SL denn genau berechnet?
Edit:Statt rq_dirprice könnte man auch einfach Ask schreiben.

1. der wird gar nicht "berechnet", sondern ist der Preis der SL_Linie
2. aber nicht, wenn man OP_BUY und OP_SELL mit jeweils 4 Bedingungen auswerten muß, da ist eine Variable einfacher

Zitat:

Zitat von traderdoc (Beitrag 42801)
Nun, wenn es nicht am StopLoss liegt, dann liegt es eben halt am TakeProfit.
Auch der fällt unter den Fehler 130.

Ist auch nicht die Ursache (der wird aus der TP_Linie genommen, rein optisch schon drüber).

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");

Hier die Debugs zum Bild:
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

Ich bin komplett ratlos. AVT

traderdoc 03.09.19 16:43

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

AVT 03.09.19 18:46

Zitat:

Zitat von traderdoc (Beitrag 42807)
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

Danke traderdoc, ich versuch mal das in eine Kurzform zu bringen, melde mich wieder. AVT :)

AVT 04.09.19 13:54

Liste der Anhänge anzeigen (Anzahl: 1)
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 :mad: :mad:

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


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