Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1674

 
законопослушный гражданин #:

gemacht. absolut nicht anders als das vorherige Magazin.

keine Fehler oder sonstiges.

Es sollten keine Fehler auftreten, zeigen Sie das Protokoll
 
for(int i = 0; i <= OrdersTotal(); i++)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            return(false);

Brauchen Sie keine Klammern für die Schleife? Es scheint, dass man sie nur dann nicht braucht, wenn es nicht mehr als eine Zeile gibt.

UPD:
Ah, ich habe es, es gibt eine Zeile.

 
MakarFX #:
Es sollten keine Fehler auftreten, zeigen Sie das Protokoll

Hier sind die letzten Seiten des Logbuchs von MT4.

Ist dieses Protokoll erforderlich?

Dateien:
0w11cw.txt  30 kb
 
Oh, Entschuldigung. Ich habe den Vergleich und die Zuordnung verwechselt. Es ist jetzt alles in Ordnung. Seit ich mich hingesetzt habe, um zu schreiben, bin ich verrückt geworden. Ich schreibe schlecht und bin gestresst, und mein Kopf funktioniert überhaupt nicht, obwohl ich das natürlich wusste.
 
законопослушный гражданин #:

Hier sind die letzten Seiten des Logbuchs von MT4.

Ist dieses Protokoll erforderlich?

Hier ist die Antwort in Ihrem Protokoll)

Die Funktion bCheckOrders() zeigt nach dem Öffnen einer Bestellung an, dass keine Bestellungen vorhanden sind, so dass sie weiterhin geöffnet werden

 
pribludilsa #:
Und mein Kopf funktioniert überhaupt nicht, obwohl ich das natürlich wusste.

Sie haben eine lustige Art, sich auszudrücken)))

 
MakarFX #:

Sie haben eine lustige Art, sich auszudrücken)))

Ich meine, ich wusste, wie man Aufgaben und Vergleiche schreibt, aber ich war trotzdem verwirrt. Verwirrt.
 
pribludilsa #:
Ich meine, ich wusste, wie man Aufgaben und Vergleiche schreibt, aber ich war trotzdem verwirrt. Durcheinander.

Das ist nicht das, was ich meine...

pribludilsa #:
und mein Kopf funktioniert überhaupt nicht, obwohl ich das natürlich wusste.

 
MakarFX #:

Hier ist die Antwort in Ihrem Protokoll)

Die Funktion bCheckOrders() zeigt nach dem Öffnen einer Bestellung an, dass keine Bestellungen vorliegen, so dass sie weiterhin geöffnet wird

Oh mein Gott, wo steht das denn?

Vielleicht habe ich das Protokoll nicht richtig gelesen?

Die FunktionbCheckOrders()gibt nach dem Öffnen einer Order aus, dass es keine Order gibt, daher wird die Öffnung fortgesetzt - durch void OnTick() - ich verstehe, dass dies nicht wahr ist.

bis die Bestellung abgeschlossen ist bCheckOrders() - kann nicht ausgeben, dass es keine Bestellung gibt.

 
законопослушный гражданин #:

Oh, Scheiße. Wo steht das?

Vielleicht habe ich das Protokoll nicht richtig gelesen?

Die FunktionbCheckOrders()gibt nach dem Öffnen einer Order aus, dass es keine Order gibt, daher wird die Öffnung fortgesetzt - durch void OnTick() - ich verstehe, dass dies nicht wahr ist.

bis der Auftrag abgeschlossen ist bCheckOrders()-kann das Fehlen eines Auftrags nicht anzeigen.

bCheckOrders() arbeitet nicht korrekt!

Ich habe Ihnen bereits eine Funktion zur Auftragszählung geschrieben.

Machen Sie es einfach so und es sollte funktionieren.

Anstelle von bCheckOrders() setzen Sie diese Funktion

//+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountOrders() 
  {
   int cnt=0;
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderMagicNumber()==Magic) cnt++;
           }
        }
     }
   return(cnt);
  }

und in OnTick(), statt bCheckOrders(), schreiben Sie dies

//+------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
   if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     }
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfit

  if(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
     {
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
      CloseOrder();
     }
DrawLABEL("lab_Take",1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2),AC));
  }
Grund der Beschwerde: