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

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

danke

Aber in dieser Funktion: double GetProfitFromStart()

gelb ist nur der Name der Funktion, richtig?

und im Prinzip kann es alles sein?

Ja, ich habe es so genannt, um es deutlich zu machen Get Profit FromStart
 
MakarFX:
Ja, ich habe es so genannt, um es deutlich zu machen Get Profit FromStart

Ich danke Ihnen.

In der Funktion Expertentick

void OnTick() - es stellt sich heraus, dass die Code-Zeile: if(CountOrders()==0&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE)) nicht nur der erste Order-Trigger ist, wenn der EA anfänglich gestartet wird

sondern auch bei jedem Lauf, nachdem der Auftrag gemäß einer Bedingung geschlossen wurde:

if(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
     {
      if (IsTesting())
        {
         CloseOrder(); ObjectSetInteger(0,"lab_Button",OBJPROP_STATE,false);
        }
      else
        {
         CloseOrder();
}
}

Verstehe ich das richtig?

 
MakarFX:

die Höhe des Verlusts bei allen Verlustaufträgen

Ich habe es wohl wieder falsch verstanden

oder die Höhe des Verlusts bei jedem Verlustauftrag

oder der kumulierte Verlust aller Verlustaufträge...


Wenn Sie nur einen einzigen Ausdruck benötigen, sollten Sie ihn als Skript erstellen

Das müssen Sie nicht, Sie können es auch so machen

Ihr Code hat geholfen, jetzt werden die gleichen Meldungen nicht mehr 100 Mal, sondern nur noch 4-10 Mal angezeigt. Vielleicht sollte der else-Operator hinzugefügt werden.
 
Petronet:
Ihr Code hat geholfen, jetzt werden die gleichen Meldungen nicht mehr 100 Mal, sondern nur noch 4-10 Mal angezeigt. Vielleicht muss der else-Operator hinzugefügt werden.
Wie und wo wird der Code geschrieben?
 
законопослушный гражданин:

Ich danke Ihnen.

In der Funktion Expertentick

void OnTick() - es stellt sich heraus, dass die Code-Zeile: if(CountOrders()==0&ObjectGetInteger (0, "lab_Button",OBJPROP_STATE)) nicht nur der erste Order-Trigger ist, wenn der EA anfänglich gestartet wird

sondern auch bei jedem Lauf, nachdem der Auftrag gemäß einer Bedingung geschlossen wurde:

Verstehe ich das richtig?

Dies sind die Bedingungen für die Ausführung des EA, wenn( if) (CountOrders()==0( keine Bestellung )&&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE))( und der Button gedrückt wird), dann können wir handeln

 
MakarFX:
Wie und wo wird der Code geschrieben?
Der Code wird in den Körper der Funktion int start() des EA eingefügt. Ich fügte else-Operator, der eine leere Variable schraubt, Duplizierung von Daten gestoppt hat, aber wenn zwei aufeinanderfolgende minus Gewinne, Duplizierung von Daten tritt auf 10 und 2-3 mal. Ich habe meine ursprüngliche Schleife auskommentiert, die 100 Mal die gleichen Informationen enthielt. Ihr Arbeitsgerät.
int start()
  {
  
  //for (int trade = OrdersHistoryTotal() - 1; trade >= 0; trade--) 
  //{
     //if ( OrderSelect(trade, SELECT_BY_POS,MODE_HISTORY)) 
     //{
         //old_order_type = OrderType();
         //if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         //{
                //Print("Закрылись с минусом:", OrderProfit());
                //break; //прекращаем поиск
         //}
         
     //}
     //break;
  //}
  
  for(int pos=0; pos<OrdersHistoryTotal(); pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderCloseTime()>=TimeStart)
              {
               if(OrderProfit()<0) {cnt=OrderProfit();
               Print("ордера с минусом", cnt); TimeStart=TimeCurrent(); cnt=0;}
               else gg=gg+1;
              }
           }
        }
     }
 
Petronet:
Der Code wird in den Körper der Funktion int start() des EA eingefügt. Ich fügte else-Operator, die Schrauben leere Variable, Duplizierung von Daten gestoppt hat, aber wenn zwei aufeinanderfolgende verlieren Gewinne, Duplizierung von Daten tritt 10 und 2-3 mal. Ich habe meine ursprüngliche Schleife auskommentiert, die 100 Mal die gleichen Informationen enthielt. Ihr Arbeitsgerät.
// это в глобальные переменные
datetime TimeStart; 

// это в init()

TimeStart=Time[0];

Wird einmal gedruckt, wenn ein unrentabler Handel erscheint

 
Hallo zusammen, ich habe eine Funktion zum Schließen von Positionen am Freitag um 20:30 Uhr eingefügt

Aber der Berater sieht nicht, dass heute Freitag ist und schließt jeden Tag Positionen.

sieht es so aus

input bool     UseTimeLimitClose           = true;     // -- Funktion ein/ausschalten --
enum daysOfWeek 
   { 
     Monday = 1, 
     Tuesday = 2, 
     Wednesday = 3, 
     Thursday = 4, 
     Friday = 5
   };
input  daysOfWeek closday          =    5;            // -- Handel bis Tag --
input int    Close_Hour            =   20;            // -- Handel bis Uhrzeit Std.--
input int    Close_min             =   30;



void OnTick() 

 if(UseTimeLimitClose)
     {
      MqlDateTime TimeNow;
      TimeToStruct(TimeCurrent(),TimeNow);
      if  ( TimeNow.day_of_week >= closday  && TimeNow.hour >= Close_Hour && TimeNow.min >= Close_min  ) 
       {
          CloseAllPositions();
       }     

 
Eugen8519:
Hallo zusammen, ich habe eine Funktion zum Schließen von Positionen am Freitag um 20:30 Uhr eingefügt

Aber der Berater sieht nicht, dass heute Freitag ist und schließt jeden Tag Positionen.

steht so

void OnTick() 

 if(UseTimeLimitClose)
     {
      if  (TimeDayOfWeek(TimeCurrent())==closday  && TimeHour(TimeCurrent())>= Close_Hour && TimeMinute(TimeCurrent()) >= Close_min  ) 
       {
          CloseAllPositions();
       }     
 

Bitte sagen Sie mir, wie ich dies in eine externe Variable ausgeben kann

double levelss[7] = {0,0.236,0.382,0.5,0.618,1,1.618}; // Уровни Fibo