Auflage Nr 100 oder mehr: failed prices & invalid request

 

Schickt mich mal jemand in die richtige Richtung bitte:

Die Werte sind sauber, wie ich es will und wie es Sinn macht -> irq.png -> was gibt's da zu meckern?



double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
trade.SellStop(TradeVolume,Bid-200*_Point,_Symbol,Bid-100*_Point,Bid-300*_Point,ORDER_TIME_GTC,0,0);
Dateien:
irq.PNG  11 kb
 
Denk daran, Kaufen zu Ask, Verkaufen zu Bid. Für den Exit einer Sell-Position wird daher Ask verwendet.
 
Ok, den Denkfehler bei den Basics gebe ich zu, aber für die Werte ist's ja egal, ob die Variable nun Bid oder Ask heißt, sie stimmen ja, wie im Screenshot zu sehen.
 
Christian Linden:
Ok, den Denkfehler bei den Basics gebe ich zu, aber für die Werte ist's ja egal, ob die Variable nun Bid oder Ask heißt, sie stimmen ja, wie im Screenshot zu sehen.

Nein zu erkennen ist das nicht, da der Spread nicht bekannt ist, und stimmen tut das auch nicht. Ask könnte über dem Stop liegen.

 

Auch das hatte ich nicht bedacht, tut's hier aber, nach Anpassung, dennoch nicht:

Dateien:
irq.PNG  15 kb
 

Dann füge Deine Ausdruck noch hinzu, wie der  SYMBOL_TRADE_STOPS_LEVEL ist.

Und wenn, dann doch auch gleich den SYMBOL_TRADE_FREEZE_LEVEL.

Außerdem studiere mal das Bild über die versch. Pending-Orders, was wann wo drüber oder drunter liegen muss:


 
Carl Schreiber:

Dann füge Deine Ausdruck noch hinzu, wie der  SYMBOL_TRADE_STOPS_LEVEL ist.

Und wenn, dann doch auch gleich den SYMBOL_TRADE_FREEZE_LEVEL.

Außerdem studiere mal das Bild über die versch. Pending-Orders, was wann wo drüber oder drunter liegen muss:


Das mit den Pending Orders war und ist mir soweit klar, ausgenommen dem buy-stop-limit und sell-stop-limit in den obigen Abbildungen; was soll das doppeltgemoppeltes sein? Ein Buystop und ein Sellstop sowie die Buylimit und SellLimit beinhalten den Preis bzw. das Limit, zu dem ich einzusteigen gewillt bin. Die beiden anderen sind mir zuviel und diese Option habe ich auch nicht im Metatrader, wenn ich eine PendingOrder platzieren will. 

      double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
      double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
      double spreadt=Ask-Bid;
      Print("Spread: ",spreadt);
      Print("Ask: ",Ask);
      Print("Bid: ",Bid);
      long  StopLevel=SymbolInfoInteger(Symbol(), SYMBOL_TRADE_STOPS_LEVEL);
      long  FreezeLevel=SymbolInfoInteger(Symbol(),SYMBOL_TRADE_FREEZE_LEVEL);
      Print("StopLevel: ",StopLevel);
      Print("FreezeLevel: ",FreezeLevel);
      trade.SellStop(TradeVolume,Bid-50*_Point,_Symbol,Ask+50*_Point,Bid-100*_Point,ORDER_TIME_GTC,0,0);
      
GE      0       20:51:38.676    US500-Scalper (Usa500,M15)      2020.01.01 00:00:00   Limits of the history to be loaded: start - 2019.12.31 00:00, end - 2020.01.01 00:00
OI      0       20:51:42.184    US500-Scalper (Usa500,M15)      2020.01.02 00:00:01   New start limit of the trade history to be loaded: start => 2020.01.01 00:00
OD      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   Spread: 0.2299999999995634
RF      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   Ask: 3246.99
MM      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   Bid: 3246.76
CK      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   StopLevel: 50
PD      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   FreezeLevel: 0
LS      0       20:51:42.276    Trade   2020.01.02 16:00:07   sell stop 0.5 Usa500 at 3246.26 sl: 3247.49 tp: 3245.76 (3246.90 / 3247.13 / 3246.90)
RL      0       20:51:42.279    US500-Scalper (Usa500,M15)      2020.01.02 16:00:07   CTrade::OrderSend: sell stop 0.50 Usa500 at 3246.26 sl: 3247.49 tp: 3245.76 [done]
LL      2       20:51:42.279    Trades  2020.01.02 16:00:07   failed prices for Usa500 0 [Invalid request]

 Stoplevel sind 50 und mein sl ist 123 weg, das sollte passen?

Was bedeutet es, trade operations zu freezen?

Danke!

 
  1. Stell Dir vor Du handelst ein Breakout: Kaufen wenn der Preis das letzte Hoch-Fraktal durchbricht, ABER, um ein paar Points mehr herauszuholen, kaufst Du nicht zu dem Breakout-Preis sondern mit einer Limit-Order 10 Punkte billiger. Das geht mit einer Stop-Limit-Order.
    Technisch wird die Limit-Order dann platziert, wenn der Kurs den (ersten) Preis der Stop-Order erreicht hat.
  2. Freezen wusste ich mal, müsste man den Broker fragen. Soll dem Broker vielleicht die eine oder andere 'Gestaltungs-Möglichkeit' geben.
 
Carl Schreiber:
  1. Stell Dir vor Du handelst ein Breakout: Kaufen wenn der Preis das letzte Hoch-Fraktal durchbricht, ABER, um ein paar Points mehr herauszuholen, kaufst Du nicht zu dem Breakout-Preis sondern mit einer Limit-Order 10 Punkte billiger. Das geht mit einer Stop-Limit-Order.
    Technisch wird die Limit-Order dann platziert, wenn der Kurs den (ersten) Preis der Stop-Order erreicht hat.
  2. Freezen wusste ich mal, müsste man den Broker fragen. Soll dem Broker vielleicht die eine oder andere 'Gestaltungs-Möglichkeit' geben.

und mit welcher Funktion hier https://www.mql5.com/en/docs/standardlibrary/tradeclasses/ctrade soll das umgesetzt werden?

Ergibt das "

failed prices for Usa500

" für Dich nun Sinn?

Mit dem sl ist der Tester nun froh, aber mit welchem price noch nicht?

Documentation on MQL5: Standard Library / Trade Classes / CTrade
Documentation on MQL5: Standard Library / Trade Classes / CTrade
  • www.mql5.com
Standard Library / Trade Classes / CTrade - Reference on algorithmic/automated trading language for MetaTrader 5
 
OrderOpen(sym,ORDER_TYPE_BUY_LIMIT,magic,lot,xBrk,pEnty,sl,tp,ORDER_TIME_SPECIFIED,TimeCurrent()+3600,"Hello world")
...
OrderSend(m_request,m_result);

Schaut doch nicht so schwierig aus - oder?

 
RF      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   Ask: 3246.99
MM      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   Bid: 3246.76
CK      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   StopLevel: 50
PD      0       20:51:42.276    US500-Scalper (Usa500,M15)      2020.01.02 16:00:00   FreezeLevel: 0
LS      0       20:51:42.276    Trade   2020.01.02 16:00:07   sell stop 0.5 Usa500 at 3246.26 sl: 3247.49 tp: 3245.76 (3246.90 / 3247.13 / 3246.90)
RL      0       20:51:42.279    US500-Scalper (Usa500,M15)      2020.01.02 16:00:07   CTrade::OrderSend: sell stop 0.50 Usa500 at 3246.26 sl: 3247.49 tp: 3245.76 [done]

sl = 3247.49

Ask = 3246.99

vom Ask ist Dein sl genau 50 Punkte weg.

Rechne beide sl und tp von Ask bei einem Verkaufsposition.

Grund der Beschwerde: