Rustam Ayupov trailing stop loss nel terminale di trading MT5. Faccio trading manualmente, con l'impostazione del trailing stop e quando ho fatto conoscenza con il terminale di trading MetaQuotes, sul conto demo, il mio sistema di trading, che è stato elaborato per molto tempo con altri broker, ha iniziato a chiudere le operazioni in modo indipendente.... tutti in ordine casuale, senza alcuna regolarità. Ho già esaminato i parametri, immaginando i salti di quotazione, quando il server di trading è lento. Aspettare in agguato, in attesa di tale chiusura imprevista di trailing stoploss, anche non funziona, la bestia era più astuto di me) Se qualcuno da più esperti commercianti, questo è familiare, illuminare per favore? O suggerire cosa potrebbe essere? Non ci sono così tanti broker con MT5, e il sistema stesso non è paragonabile a MT4, voglio padroneggiare il terminale di trading MT5 e questo broker. GRAZIE .
3. vietare DLL e rimuovere tutti gli indicatori e consiglieri che non si capisce.
2. nell'armadio personale DC, disconnettersi da tutti i gruppi, segnali, consulenti e tutto ciò che è simile.
Qual è il modo corretto di utilizzare OnSetColorBackground per un oggetto CButton? Ho bisogno di colorare il pulsante da OnTick a seconda delle condizioni. Non è previsto alcun clic sul pulsante.
Dichiaro e utilizzo la funzione "colorazione" in questo modo:
Potete dirmi perché lo script per cambiare lo stop loss non funziona e dà l'errore 4756?
Allo stesso tempo, lo stesso script per cambiare il take profit funziona bene.
Nel manuale c'è un buon esempio su questo argomento
request.action =TRADE_ACTION_SLTP; // тип торговой операции
request.position=position_ticket; // тикет позиции
request.symbol=position_symbol; // символ
request.sl =sl; // Stop Loss позиции
request.tp =tp; // Take Profit позиции
request.magic=EXPERT_MAGIC; // MagicNumber позиции
Struttura di una richiesta di negoziazione
Modifica SL e TP
Ordine di compravendita per la modifica dei livelli di StopLoss e/o TakeProfit. Richiede la specificazione di 4 campi:
azione
simbolo
SL
tp
posizione
Quando si modifica o si chiude una posizione nel sistema di copertura, è necessario specificare il ticket (MqlTradeRequest::position). Nel sistema di netting è possibile specificare anche il ticket, ma la posizione è identificata dal nome del simbolo.
Структура торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Il manuale contiene un buon esempio su questo argomento
Quando si modifica o si chiude una posizione in un sistema di copertura, è necessario specificare il ticket (MqlTradeRequest::position). Nel sistema di netting è possibile specificare anche il ticket, ma la posizione è identificata dal nome del simbolo.
//+------------------------------------------------------------------+//| Modify SL TP.mq5 |//| |//+------------------------------------------------------------------+#property description"Скрипт"#property script_show_inputsinputint Magic_Number = 0;
inputdouble Price_of_New_Take_Profit = 0.0;
inputdouble Price_of_New_Stop_Loss = 0.0;
//--------------------------------------------------------------------//--- объявление запроса и результата//MqlTick tick;MqlTradeRequest request;
MqlTradeResult result;
//MqlTradeCheckResult check;//MqlDateTime tm;//--------------------------------------------------------------------voidOnStart()
{
// double Position_SL,Position_TP;// ulong Position_Magic = 0;//--- перебор всех открытых позицийfor(int i=0; i<PositionsTotal(); i++)
{
if(_Symbol == PositionGetSymbol(i))
{
//--- параметры ордераulong Position_Ticket = PositionGetTicket(i);// тикет позицииstring Position_Symbol = PositionGetString(POSITION_SYMBOL); // символ int Symbol_Digits = (int)SymbolInfoInteger(Position_Symbol,SYMBOL_DIGITS); // количество знаков после запятойulong Position_Magic = PositionGetInteger(POSITION_MAGIC); // MagicNumber позицииdouble Position_Volume = PositionGetDouble(POSITION_VOLUME); // объем позицииdouble Position_SL = PositionGetDouble(POSITION_SL); // Stop Loss позицииdouble Position_TP = PositionGetDouble(POSITION_TP); // Take Profit позицииENUM_POSITION_TYPE Position_Type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); // тип позици if(Position_Magic == Magic_Number)
{
if (Position_SL != Price_of_New_Stop_Loss || Position_TP != Price_of_New_Take_Profit)
{
//--- обнуление значений запроса и результатаZeroMemory(request);
ZeroMemory(result);
//--- установка параметров операции
request.action = TRADE_ACTION_SLTP; // тип торговой операции
request.position = Position_Ticket; // тикет позиции
request.symbol = Position_Symbol; // символ
request.sl = NormalizeDouble(Price_of_New_Stop_Loss,_Digits); // Stop Loss позиции
request.tp = NormalizeDouble(Price_of_New_Take_Profit,_Digits); // Take Profit позиции
request.magic = Position_Magic; // MagicNumber позиции//--- вывод информации о модификацииPrint(TimeToString(TimeCurrent()), " Modify ", request.position,
" with Position_Magic ", IntegerToString(Position_Magic));
Print(" SL ", DoubleToString(Position_SL,_Digits), " -> ", DoubleToString(request.sl,_Digits),
"; TP ", DoubleToString(Position_TP,_Digits), " -> ", request.tp);
//--- отправка запроса и вывод информации об ошибке, если отправить запрос не удалосьif(!OrderSend(request,result)) PrintFormat("OrderSend error %d",GetLastError());
//--- информация об операции PrintFormat("retcode=%u deal=%I64u order=%I64u", result.retcode, result.deal, result.order);
}
}
}
}
//--- Цикл, пока скрипт не будет прерванwhile(!IsStopped()) Comment("Сделано");
Comment("");
}
// End OnStart()//+------------------------------------------------------------------+
Il take profit cambia bene. Ma quando si cerca di modificare lo stop loss con un valore impostato esplicitamente, viene generato l'errore 4756 e nel log è riportato:
Il take profit cambia perfettamente. Ma quando si tenta di modificare lo stop loss con un valore esplicitamente impostato, viene generato l'errore 4756, che nel log è il seguente:
Transslator #: La posizione è stata aperta al prezzo di 0,85098. La stessa storia vale per altre coppie e a distanze diverse dallo stop.
Non importa a quale prezzo viene aperta la posizione, è importante il prezzo al momento della modifica dello stop. Per una posizione di vendita è il prezzo Ask.
Sergey Gridnev #: Non importa a quale prezzo viene aperta la posizione, ma conta il prezzo al momento della modifica dello stop. Per una posizione di vendita, questo è il prezzo Ask.
Si tratta del forex, il prezzo corrente cambia continuamente, ma è ovviamente lontano dallo stop piazzato.
3. vietare DLL e rimuovere tutti gli indicatori e consiglieri che non si capisce.
2. nell'armadio personale DC, disconnettersi da tutti i gruppi, segnali, consulenti e tutto ciò che è simile.
1. cambiare le password dei conti di trading
Qual è il modo corretto di utilizzare OnSetColorBackground per un oggetto CButton? Ho bisogno di colorare il pulsante da OnTick a seconda delle condizioni. Non è previsto alcun clic sul pulsante.
Dichiaro e utilizzo la funzione "colorazione" in questo modo:
Esiste un esempio in cui questa funzione è implementata nel codice? Non l'ho trovato nella libreria.
Ciao!
Potete dirmi perché lo script per cambiare lo stop loss non funziona e dà l'errore 4756?
Allo stesso tempo, lo stesso script per cambiare il take profit funziona bene.
Ciao!
Potete dirmi perché lo script per cambiare lo stop loss non funziona e dà l'errore 4756?
Allo stesso tempo, lo stesso script per cambiare il take profit funziona bene.
Nel manuale c'è un buon esempio su questo argomento
Struttura di una richiesta di negoziazione
Modifica SL e TP
Ordine di compravendita per la modifica dei livelli di StopLoss e/o TakeProfit. Richiede la specificazione di 4 campi:
Quando si modifica o si chiude una posizione nel sistema di copertura, è necessario specificare il ticket (MqlTradeRequest::position). Nel sistema di netting è possibile specificare anche il ticket, ma la posizione è identificata dal nome del simbolo.
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
Il manuale contiene un buon esempio su questo argomento
Quando si modifica o si chiude una posizione in un sistema di copertura, è necessario specificare il ticket (MqlTradeRequest::position). Nel sistema di netting è possibile specificare anche il ticket, ma la posizione è identificata dal nome del simbolo.
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
Grazie per la risposta!
Ho rielaborato lo script in questo modo:
Il take profit cambia bene. Ma quando si cerca di modificare lo stop loss con un valore impostato esplicitamente, viene generato l'errore 4756 e nel log è riportato:
Il take profit cambia perfettamente. Ma quando si tenta di modificare lo stop loss con un valore esplicitamente impostato, viene generato l'errore 4756, che nel log è il seguente:
A quanto ammonta il prezzo Ask in questo momento?
La posizione è stata aperta al prezzo di 0,85098. La stessa storia vale per altre coppie e a distanze diverse dallo stop.
Non importa a quale prezzo viene aperta la posizione, ma conta il prezzo al momento della modifica dello stop. Per una posizione di vendita, questo è il prezzo Ask.