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

 
Artyom Trishkin:

Von dieser Zeit[i] sollte eine Stunde abgezogen werden.

Druckt noch die Zeiten 10:05:00 und 22:10:00 und andere außerhalb der erlaubten Zeit.

Es sollte nicht von 17:00 bis 11:00 Uhr gedruckt werden, aber es wird gedruckt.

 for(int i=limit-2; i>0; i--) 
     {
    if(TimeHour(time[i])>=17&&TimeHour(time[i])<=11)continue;
      if(i%2==0) 
        {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k1++;
            if(k1>max) {max=k1; dat_max=time[i];}
            if(k1>=4)Print("Num: ",k1,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k1,time[i],high[i],Arr);
           }
         else k1=0;
         
           } else {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k2++;
            if(k2>max){ max=k2; dat_max=time[i];}
            if(k2>=4)Print("Num: ",k2,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k2,time[i],high[i],Arr);
           }
         else k2=0;
         
        }
      
     }

   Comment("Max: ",max,"dat_max ",dat_max," rates_total ",rates_total);

 
if(TimeHour(time[i])>=17 || TimeHour(time[i])<=11)continue;
 
Taras Slobodyanik:

Ich danke Ihnen.

 
k_chens:

Guten Tag! Bitte helfen Sie mir! Ich versuche, eine Menge Zählkontrolle zu schreiben. Wenn mein Konto +10% Gewinn macht, dann wird das Los verdoppelt. Wenn +20%, dann Los*4. Wenn sich in meinem Konto etwas verringert, dann verringert sich auch die Losgröße. Ich verstehe nicht, wie man Lots_New dazu bringt, bei jedem neuen Handel einen neuen Wert anzunehmen.

Für jemanden, der gerade erst mit dem Programmieren anfängt, ist dies alles andere als eine triviale Aufgabe. Denn um das Problem zu lösen, muss man sich einen Mechanismus ausdenken, um den nächsten Saldowert zu speichern. Außerdem müssen wir herausfinden, wo dieser Wert gespeichert werden soll. Variablen in Programmen sind für diesen Zweck nicht geeignet. Sie können zum Beispiel globale Variablen des Terminals verwenden oder sie in eine Datei schreiben. Alles hängt davon ab, wo und wie Sie das Programm einsetzen wollen.

Die universellste Lösung (wenn das Programm auf verschiedenen Computern verwendet werden soll, ohne die Möglichkeit, die Daten zwischen den Programmkopien zu übertragen) besteht darin, die Kontohistorie zu scannen, um den Gewinn/Verlust zu berechnen, der sich aus der Arbeit des Programms ergibt. Dann stellt sich aber auch die Frage nach der Wahl des Bezugspunkts (woher der Saldowert kommt, von dem aus hochgerechnet wird).

 
Hallo, können Sie bitte die Zeilen für die Auswahl eines Medikaments erklären:

Extern bool hand orders =true ;
Extern int Magic_Number =777;
//erste Zeile
((BestellMagicNumber()==Magic_Number && hand_orders==false) || (BestellMagicNumber()==0 && hand_orders==true))

//zweite Zeile
(BestellMagicNumber()==Magic_Number || (BestellMagicNumber()==0 && hand_orders==true)))


Welche medikamentösen Werte fehlen? Bitte schreiben Sie
 
Tigerfreerun:
Hallo, bitte erklären Sie die Zeilen für die Auswahl eines medjic :

Extern bool hand orders =true ;
Extern int Magic_Number =777;
//erste Zeile
((BestellMagicNumber()==Magic_Number && hand_orders==false) || (BestellMagicNumber()==0 && hand_orders==true))

//zweite Zeile
(BestellMagicNumber()==Magic_Number || (BestellMagicNumber()==0 && hand_orders==true)))


Welche medikamentösen Werte fehlen? Bitte schreiben Sie

Ersetzen Sie in Ihren Ausdrücken && durch "UND ZUR GLEICHEN ZEIT", und ersetzen Sie || durch "ODER".

sollten Sie in der Lage sein, das zu lesen und zu sehen, wie es funktioniert.


die erste Zeile funktioniert entweder mit magic =777 (wenn hand_orders=false) oder magic = 0 (wenn hand_orders=true)

die zweite Zeile funktioniert IMMER mit majic=777, und wenn hand_orders=true, funktioniert sie ZUSÄTZLICH mit majic=0

 

Wie kann ich in einer Funktion den Gewinn in Pips für zwei Instrumente berechnen?

Spin

double Punkts_B(string Sy_1="",string Sy_2="",int _Mag=-1)
  {
   double xxx=0;
   bool bw;
   for(int t=0;t<=OrdersTotal();t++)
     {
      bw=OrderSelect(t,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Sy_1 || OrderSymbol()==Sy_2
         && OrderMagicNumber()==_Mag
         && (OrderType()==OP_BUY || OrderType()==OP_SELL))
         xxx=OrderClosePrice()-OrderOpenPrice();
      RefreshRates();
     }
   return(xxx);
  }
 
PolarSeaman:

Wie kann ich in einer Funktion den Gewinn in Pips für zwei Instrumente berechnen?

Rollender

int Punkts_B(string Sy_1="",string Sy_2="",int _Mag=-1)
  {
   int xxx = 0;
   double tickValue_1 = SymbolInfoDouble(Sy_1, SYMBOL_TRADE_TICK_VALUE),
          tickValue_2 = SymbolInfoDouble(Sy_2, SYMBOL_TRADE_TICK_VALUE);
   for(int t=0;t<OrdersTotal();t++)
     {
      if( !OrderSelect(t,SELECT_BY_POS,MODE_TRADES) )  continue;
      if( OrderSymbol()!=Sy_1 && OrderSymbol()!=Sy_2 ) continue;
      if( OrderMagicNumber()!=_Mag )                   continue;
      if( OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;
      xxx+=(int)((OrderProfit()+OrderSwap()+OrderCommission())/(OrderSymbol()==Sy_1 ? tickValue_1 : tickValue_2));
     }
   return(xxx);
  }
 
Konstantin Nikitin:
Punkte von zwei verschiedenen Instrumenten können nicht gestapelt werden.
 
Maxim Kuznetsov:
Punkte von zwei verschiedenen Instrumenten können nicht addiert werden.

Er fragte, in Punkten, hier ist er in Punkten. Lass ihn denken =)

Grund der Beschwerde: