[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 564

 

Je vous ai déjà donné le code pour supprimer l'exp du graphique. Puisqu'il ne peut y en avoir qu'un seul (par graphique), l'appel de cette fonction avec son propre identifiant entraînera la suppression de l'exp.

 
FAQ:


...pour se donner l'ordre d'être retiré


Merci, ça marche.

P.S..

#include <WinUser32.mqh>
 
Il va sans dire. Lorsque vous travaillez avec des fonctions importées, n'oubliez pas de connecter les exportations des applications concernées.
 
Au secours, pourquoi ça ne marche pas ?

Merci.

//-----
  static bool First = true;
  static int PreOrdersTotal = 0;
  int NowOrdersTotal = CountTrades();
  if(First)
  {
    PreOrdersTotal = NowOrdersTotal;
    First = false;
    return(0);
  }
  if(UseSound == true && NowOrdersTotal < PreOrdersTotal) {PlaySound(CloseSound);}
  PreOrdersTotal = NowOrdersTotal;
//-----

 
FAQ:

Fermez votre fenêtre, donnez-vous la commande de supprimer...

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);

Ainsi, MQL4 ne fournit pas un moyen standard de mettre fin à l'Expert Advisor. Uniquement par utilisation directe de l'API Win32.

Je l'ai, merci.

 
takeda:

Ainsi, MQL4 ne fournit pas une manière standard de terminer un Expert Advisor. Uniquement par utilisation directe de l'API Win32.

Je vois, merci.

Bibliothèque. Beaucoup de fonctions utiles pour la gestion de MT4. Y compris la suppression du conseiller expert.
 
Zhunko:
Bibliothèque. Beaucoup de fonctions utiles pour la gestion de MT4. La suppression du conseiller expert est incluse.

J'ai jeté un coup d'œil (jusqu'à présent de manière superficielle). Magnifique bibliothèque !

Merci !

 

Bon après-midi.

La modification de la commande fonctionne partiellement, aidez-moi à comprendre quel est le problème.

Code et journal joints. J'ai écrit dans le journal ce qui fonctionne et ce qui ne fonctionne pas......

void AllSellLockBuyModifi()
{
 double sell_sl = 0.0;
 double sell_tp = NormalizeDouble((AllAvP()-TakeProfit*Point),Digits);
 int spread = MarketInfo(Symbol(),MODE_SPREAD);
 double lock_buy_tp = NormalizeDouble((LastSellLockBuyAvP()+TakeProfit*Point),Digits);
 double last_sell_sl = NormalizeDouble((lock_buy_tp+spread*Point),Digits);
 double lock_buy_sl = NormalizeDouble((sell_tp-spread*Point),Digits);     
 Print("AllAvP = ",AllAvP()," sell_tp = ",sell_tp," lock_buy_tp = ",lock_buy_tp," last_sell_sl = ",last_sell_sl," lock_buy_sl = ",lock_buy_sl);
 for (int i = 0; i <= OrdersTotal(); i++)
    {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()!=Symbol())continue;
     if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
     if (OrderType()==OP_SELL)
       {Print("Find Sell Order");
        if (OrderOpenPrice()==!LastSellPrice()) sell_sl = 0;
        if (OrderOpenPrice()==LastSellPrice()) sell_sl = last_sell_sl;
        Print("Мод-ция ордера SELL № ",OrderTicket());
        OrderModify (OrderTicket(),OrderOpenPrice(),sell_sl,sell_tp,0,CLR_NONE);
        error=GetLastError();
        if (error != 0) Print("Мод-ция ордера SELL № ",OrderTicket()," ошибка № ",error);
       }         
         else 
             { Print("Find BUY Order");       
              if (OrderType()==OP_BUY)
                {
                 Print("Мод-ция ордера LOCK BUY");
                 OrderModify (OrderTicket(),OrderOpenPrice(),lock_buy_sl,lock_buy_tp,0,CLR_NONE);
                 error=GetLastError();
                 if (error != 0) Print("Мод-ция ордера LOCK BUY № ",OrderTicket()," ошибка № ",error);
                }
             }
    }
 return(0);
}
Dossiers :
log.txt  4 kb
 
TEXX:

Bon après-midi.

La modification de la commande fonctionne partiellement, aidez-moi à comprendre quel est le problème.

Code et journal joints. Dans le journal, j'ai écrit ce qui fonctionne et ce qui ne fonctionne pas......


Pour commencer, corrigez ces lignes :

for (int i = 0; i <= OrdersTotal(); i++)
    {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

sur ces derniers :

for (int i = 0; i < OrdersTotal(); i++)
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
 
PapaYozh:


Pour commencer, corrigez ces lignes :

à ceux-là :


n'a pas aidé...
Raison: