Rustam Ayupov trailing stop loss dans le terminal de trading MT5. Je trade manuellement, avec le réglage du trailing stop et lorsque j'ai fait connaissance avec le terminal de trading MetaQuotes, sur compte démo, mon système de trading, rodé depuis longtemps avec d'autres brokers, s'est mis à fermer des trades de manière indépendante.... dans un ordre aléatoire, sans aucune régularité. J'ai déjà passé en revue les paramètres, imaginant les sauts de cotation, lorsque le serveur de trading est paresseux. Attendre en embuscade, attendre une telle fermeture non programmée du trailing stoploss, ne fonctionne pas non plus, la bête était plus rusée que moi) Si quelqu'un parmi les traders plus expérimentés, cela est familier, éclairez s'il vous plaît ? Ou suggérer ce que cela pourrait être ? Il n'y a pas beaucoup de courtiers avec MT5, et le système lui-même n'est tout simplement pas comparable à MT4, je veux maîtriser le terminal de trading MT5 et ce courtier. MERCI .
3. interdire les DLL et supprimer tous les indicateurs et conseillers que vous ne comprenez pas.
2. dans l'armoire personnelle DC, se déconnecter de tous les groupes, signaux, consultants, et tout ce qui est similaire.
1. changer les mots de passe de vos comptes de trading
Quelle est la bonne façon d'utiliser OnSetColorBackground pour un objet CButton ? J'ai besoin de colorer le bouton à partir de OnTick en fonction des conditions. Aucun clic sur le bouton n'est attendu.
Je déclare et utilise la fonction "colouring" comme suit :
Pouvez-vous me dire pourquoi le script de modification du stop loss ne fonctionne pas et donne l'erreur 4756 ?
En même temps, le même script pour changer le take profit fonctionne bien.
Il y a un bon exemple sur ce sujet dans le manuel
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 позиции
Structure d'une demande de transaction
Modification SL & TP
Ordre de transaction pour la modification des niveaux de StopLoss et/ou TakeProfit. Il faut spécifier 4 champs :
action
symbole
sl
tp
position
Lors de la modification ou de la clôture d'une position dans le système de couverture, il faut veiller à spécifier son ticket (MqlTradeRequest::position). Dans le système de compensation, le ticket peut également être spécifié, mais la position est identifiée par le nom du symbole.
Структура торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Lors de la modification ou de la clôture d'une position dans un système de couverture, il faut veiller à spécifier son ticket (MqlTradeRequest::position). Dans le système de compensation, le ticket peut également être spécifié, mais la position est identifiée par le nom du symbole.
//+------------------------------------------------------------------+//| 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()//+------------------------------------------------------------------+
Le take profit change bien. Mais lorsque l'on essaie de modifier le stop loss avec une valeur explicitement définie, l'erreur 4756 est générée, et dans le journal c'est :
Le take profit change parfaitement. Mais lorsque l'on essaie de modifier le stop loss avec une valeur explicitement définie, l'erreur 4756 est générée, et dans le journal c'est :
Transslator #: La position a été ouverte au prix de 0,85098. Il en va de même pour d'autres paires, et à différentes distances du stop.
Le prix auquel la position est ouverte n'a pas d'importance, c'est le prix au moment de la modification du stop qui est important. Pour une position de vente, il s'agit du cours vendeur.
Sergey Gridnev #: Le prix auquel la position est ouverte n'a pas d'importance, c'est le prix au moment de la modification du stop qui compte. Pour une position de vente, il s'agit du cours vendeur.
C'est le forex, le prix actuel change constamment, mais il est évidemment très éloigné du stop placé.
3. interdire les DLL et supprimer tous les indicateurs et conseillers que vous ne comprenez pas.
2. dans l'armoire personnelle DC, se déconnecter de tous les groupes, signaux, consultants, et tout ce qui est similaire.
1. changer les mots de passe de vos comptes de trading
Quelle est la bonne façon d'utiliser OnSetColorBackground pour un objet CButton ? J'ai besoin de colorer le bouton à partir de OnTick en fonction des conditions. Aucun clic sur le bouton n'est attendu.
Je déclare et utilise la fonction "colouring" comme suit :
Existe-t-il un exemple où cette fonction est implémentée dans le code ? Je ne l'ai pas trouvé dans la bibliothèque.
Bonjour !
Pouvez-vous me dire pourquoi le script de modification du stop loss ne fonctionne pas et donne l'erreur 4756 ?
En même temps, le même script pour changer le take profit fonctionne bien.
Bonjour !
Pouvez-vous me dire pourquoi le script de modification du stop loss ne fonctionne pas et donne l'erreur 4756 ?
En même temps, le même script pour changer le take profit fonctionne bien.
Il y a un bon exemple sur ce sujet dans le manuel
Structure d'une demande de transaction
Modification SL & TP
Ordre de transaction pour la modification des niveaux de StopLoss et/ou TakeProfit. Il faut spécifier 4 champs :
Lors de la modification ou de la clôture d'une position dans le système de couverture, il faut veiller à spécifier son ticket (MqlTradeRequest::position). Dans le système de compensation, le ticket peut également être spécifié, mais la position est identifiée par le nom du symbole.
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
Le manuel contient un bon exemple à ce sujet
Lors de la modification ou de la clôture d'une position dans un système de couverture, il faut veiller à spécifier son ticket (MqlTradeRequest::position). Dans le système de compensation, le ticket peut également être spécifié, mais la position est identifiée par le nom du symbole.
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
Merci pour votre réponse !
J'ai retravaillé le script comme suit :
Le take profit change bien. Mais lorsque l'on essaie de modifier le stop loss avec une valeur explicitement définie, l'erreur 4756 est générée, et dans le journal c'est :
Le take profit change parfaitement. Mais lorsque l'on essaie de modifier le stop loss avec une valeur explicitement définie, l'erreur 4756 est générée, et dans le journal c'est :
Quel est le prix demandé en ce moment ?
La position a été ouverte au prix de 0,85098. Il en va de même pour d'autres paires, et à différentes distances du stop.
Le prix auquel la position est ouverte n'a pas d'importance, c'est le prix au moment de la modification du stop qui compte. Pour une position de vente, il s'agit du cours vendeur.