[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 177

 
badbadboy:

Ich brauche sie, damit der EA mit der Berechnung beginnen kann.
Haben Sie einen EA, der nur Positionen eröffnet? Jede Kopie (Version) sollte ihren eigenen Magier haben, und jede wird nur ihre eigenen Positionen überwachen.
 

Hilfe zum Verständnis:

Die Aufgabe besteht darin, verlorene Kauf-/Verkaufsaufträge einzeln zu zählen. Code:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Der Code selbst ist ein Schnipsel aus einem EA. Der Expert Advisor ist in Betrieb und generiert durchweg Verluste. Es gibt eine Menge verlorener Aufträge (ich drucke sie an anderer Stelle aus), die alle protokolliert werden. Aber in diesem Codefragment gibt der Expert Advisor nicht die

if (OrderProfit() < 0)


Was mache ich falsch?

 
borilunad:
Haben Sie einen EA, der nur Positionen eröffnet? Jede Kopie (Version) sollte ihren eigenen Magier haben, und jede wird nur ihre eigenen Positionen überwachen.

Ich hab's. Danke vielmals!
 
belozad:

Hilfe zum Verständnis:

Die Aufgabe besteht darin, verlorene Kauf-/Verkaufsaufträge einzeln zu zählen. Code:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Der Code selbst ist ein Schnipsel aus einem EA. Der EA läuft und macht ständig Verluste. Es gibt eine Reihe von Verlustaufträgen (ich drucke sie an anderer Stelle aus), die alle protokolliert werden. Aber in diesem Codefragment gibt der Expert Advisor nicht die

if (OrderProfit() < 0)


Was mache ich falsch?

Versuchen Sie

int w = OrdersHistoryTotal();
int BUY=0;
int SELL=0;

for (i=0; i<w; i++)
 {
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      { 
         if (OrderType()==OP_BUY) BUY++;
         if (OrderType()==OP_SELL) SELL++;
      }
   }
}
 Print("  BUY = ",BUY);
 Print("  SELL = ",SELL);       
 

Ich verliere den Verstand, was ist mit meinem mql4 los?

Warum führt die Software bei jedem Zyklus die folgende Bedingung aus? Es steht geschrieben, dass das "i" nur gedruckt werden soll, wenn ein neuer Auftrag abgeschlossen wird!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }

 
belozad:

Ich werde verrückt, was ist mit meinem mql4 los?

Warum führt das Programm die folgende Bedingung bei jedem Zyklus aus? Es ist so geschrieben, dass "i" nur gedruckt wird, wenn ein neuer Auftrag abgeschlossen wird!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }



Wenn i keine statische Variable ist, wird sie bei jedem Tick gedruckt.
 
badbadboy:

Wenn i keine statische Variable ist, wird sie trotzdem bei jedem Tick gedruckt.

Oh, ich habe mich schon gewundert, warum ich mehrere Stücke in meinem Programm habe, die durch den Arsch gehen! =)

Also müssen alle Arbeitsvariablen, deren Werte ich in verschiedenen Ticks verwende, als statisch deklariert werden?

 
belozad:

Oh, ich habe mich schon gefragt, warum ich ein paar Softwareprogramme in meinem Hintern habe! =)

Also müssen alle Arbeitsvariablen, deren Werte ich in verschiedenen Augenblicken verwende, als statisch deklariert werden?


Schauen Sie sich die Eigenschaften der Variablen an und überlegen Sie dann, was und wie Sie es deklarieren wollen.
 

Mit der Funktion OrderModify() können keine Kommentare geändert werden. Gibt es eine andere Möglichkeit, dies zu tun?

 
pasha5282:

Mit der Funktion OrderModify() können keine Kommentare geändert werden. Gibt es eine andere Möglichkeit, dies zu tun?


Nur vom Terminal aus.