[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 564

 

Ich habe Ihnen bereits den Code gegeben, um den Exp aus dem Diagramm zu entfernen. Da es nur eine Funktion (pro Diagramm) geben kann, führt der Aufruf dieser Funktion mit ihrem eigenen Handle dazu, dass sich die Funktion selbst löscht

 
FAQ:


...um sich selbst den Befehl zu geben, entfernt zu werden


Danke, es funktioniert.

P.S..

#include <WinUser32.mqh>
 
Das versteht sich von selbst. Wenn Sie mit importierten Funktionen arbeiten, denken Sie daran, die Exporte der entsprechenden Anwendungen zu verbinden.
 
Hilfe, warum funktioniert es nicht?

Ich danke Ihnen.

//-----
  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:

Schließen Sie Ihr Fenster, geben Sie sich selbst einen Befehl zum Löschen...

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

MQL4 bietet also keine Standardmethode zum Beenden des Expert Advisors. Nur durch eine direkte Verwendung der Win32-API.

Verstanden, danke.

 
takeda:

MQL4 bietet also keine Standardmethode zur Beendigung eines Expert Advisors. Nur durch direkte Verwendung der Win32-API.

Ich verstehe, danke.

Bibliothek. Viele nützliche Funktionen für das MT4-Management. Einschließlich der Entfernung des Expert Advisors ist dort.
 
Zhunko:
Bibliothek. Viele nützliche Funktionen für das MT4-Management. Einschließlich der Entfernung des Expert Advisors ist vorhanden.

Ich habe einen Blick darauf geworfen (bisher nur flüchtig). Wunderbare Bibliothek!

Ich danke Ihnen!

 

Guten Tag.

Die Auftragsänderung funktioniert nur teilweise, helfen Sie mir herauszufinden, was das Problem ist.

Code und Protokoll im Anhang. Ich habe in das Protokoll geschrieben, was funktioniert und was nicht.....

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);
}
Dateien:
log.txt  4 kb
 
TEXX:

Guten Tag.

Die Auftragsänderung funktioniert nur teilweise, helfen Sie mir herauszufinden, was das Problem ist.

Code und Protokoll im Anhang. Im Protokoll habe ich aufgeschrieben, was funktioniert und was nicht.....


Korrigieren Sie zunächst diese Zeilen:

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

auf diese:

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


Korrigieren Sie zunächst diese Zeilen:

zu diesen:


hat nicht geholfen...