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.
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:
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!
- 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. - Freezen wusste ich mal, müsste man den Broker fragen. Soll dem Broker vielleicht die eine oder andere 'Gestaltungs-Möglichkeit' geben.
- 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. - 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?
- www.mql5.com
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.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
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?