Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 117

 

wie man solche Zäune in Metazitaten behandelt)?

 
Zhunko:
Wir müssen Nachrichten abfangen.

Wenn die Nachricht bereits ausgeführt wurde, wurde sie bereits aus der Warteschlange gelöscht.

Ok, ich habe folgende Frage.

#property indicator_chart_window
bool First = true;
int start(){
   if(First){
      int indexFirstLeftOnChart = WindowFirstVisibleBar();//иницилизируем под флагом, потому что в init() могут быть артефакты
      Alert("indexFirstLeftOnChart ", indexFirstLeftOnChart);
      First = false;
   }
   if(WindowFirstVisibleBar() != indexFirstLeftOnChart){//проверяем на каждом тике, изменилось ли значение
      Alert("first indexFirstLeftOnChart ", indexFirstLeftOnChart);      
      indexFirstLeftOnChart = WindowFirstVisibleBar();//если изменилось, записываем его
      Alert("second indexFirstLeftOnChart ", indexFirstLeftOnChart);
   }
   return(0);
}

- Es piept bei jedem Tick, denn es stellt sich heraus, dass der erste indexFirstLeftOnChart gleich Null ist. Wie kann ich das bekämpfen? Build 509.

 
static bool First = true;
 
gyfto:

Wenn eine Nachricht bereits ausgeführt wurde, wurde sie bereits aus der Warteschlange gelöscht.

Das Abfangen erfolgt in der Regel vor der Ausführung. Andernfalls ist es nicht klar, warum man sie abfangen sollte.
 
FAQ:
static bool First = true;


Zhunko:
In der Regel wird er vor der Ausführung abgefangen. Andernfalls verstehe ich nicht, wozu Sie etwas abfangen müssen.


Vor der Ausführung gibt es keine Frage. Es macht also keinen Sinn, die Gültigkeitsprüfung von AccountNumber() in die DLL zu verschieben. Das bedeutet, dass die Kontonummer bereits in dll gespeichert ist.

 
static int indexFirstLeftOnChart;
 

Ich habe etwas über einen einfachen Punkt, ein Kopfweh. Es gibt eine Funktion zur Suche nach Aufträgen.

t - Zähler für alle Aufträge.

p - Zähler der ausstehenden Aufträge.

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   int total = OrdersTotal() - 1;
   t = 0;
   p = 0;
   for (int i=total; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1)
      {
          p++;
      }
      t++;
      pr ("FindOrders(): " + "t = " + t + "   " + TimeToStr(TimeCurrent()));
      pr ("FindOrders(): " + "p = " + p + "   " + TimeToStr(TimeCurrent()));
   }
}

Ich habe es von Anfang an gesagt:

int start()
{
   if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                               // ..уже были выполнены
   
   int oTotal = 0, oPending = 0;
   
   FindOrders(oTotal, oPending);
   
   int signal = GetGeneralSignal(oTotal);
   
   if (signal != SIGNAL_NO)
   {
       if (!Trade(signal))
       return(0);
   }
   else

In der Tat, wenn wir es öffnen, auch wenn es keine Aufträge gibt, sehen wir dies (auch wenn es keine Aufträge gibt, druckt es, als ob es welche gibt...):

Wie ist das möglich?

 
Guten Abend zusammen. Ich habe vor kurzem beschlossen, MQL4 zu beherrschen (ich habe das Tutorial von Sergey Kovalev studiert). Ich habe heute beschlossen, ein einfaches Skript zur Auftragseröffnung zu erstellen, um zu üben. Der Code lautet:
int start()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());

Rückkehr;

}

Das Skript funktionierte nicht und es wurde die Fehlermeldung 4109 (Handel nicht erlaubt) angezeigt. Beim Versuch, die Situation zu ändern, trat auch der Fehler 4016 (Uninitialised array) auf. Ich würde gerne wissen, was diese Fehler verursacht und wie man ein einfaches Handelseröffnungsskript erstellt. Ich habe gerade das Beispiel aus dem Tutorial https://book.mql4.com/ru/trading/ordersend kopiert (ich habe gerade die Funktion GetLastError hinzugefügt) und bekam trotzdem den Fehler 4109.

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
   return;                                   // Выход из start()
  }

Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
 
Pfand = Typ 6
 
Können Sie mir sagen, ob es eine Möglichkeit gibt, die Kommentare auf der Bestellung als Standard einzustellen???