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

 
Vladimir Tkach:

Zwei Tage lang habe ich eine schöne Tafel gemacht. Es stellte sich jedoch heraus, dass ich die als Eingaben festgelegten Expert Advisor-Parameter nicht ändern konnte.

Was soll ich jetzt tun?

überhaupt keine Phantasie?

input double _PARAM=1.0; // да, input менять в коде нельзя, они типа const

double PARAM=0;         // но никто не заставляет использовать только и исключительно их

int OnInit()

{

   if (MoonPhaze()==0 && _PARAM>0.1) {

       PARAM=_PARAM;       // всё что задаёт пользователь через input должно проверяться и использоваться только внутри OnInit - это просто хороший тон

   }

}
 

Ich scheine missverstanden zu werden.

Ich ändere die Parameter im Panel (das sich auf dem Diagramm befindet), aber sie ändern sich nicht im Expert Advisor. Traurigkeit, Traurigkeit.


 
Allerdings ändern sich ihre Werte im Laufe des Programms. OK, das ist in Ordnung.
 
missha32:

Bitte helfen Sie mir, ich bin beim Schreiben dieser Funktion völlig verwirrt

Ich brauche die Funktion, um die Anzahl der an einem Tag abgeschlossenen Aufträge zurückzugeben


Ich würde es so schreiben:

int CountInHistoryCloseOrder() 
{
int kp=0;
for(int i=OrdersHistoryTotal(); i>=0; i--) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
   {
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn) 
     {//mn - должна быть глобальной
      if(TimeToString(OrderCloseTime(),TIME_DATE)==TimeToString(TimeCurrent(),TIME_DATE))
       {
        kp++;
       }
     }
   }
 }
return(kp);
 
missha32:

Bitte helfen Sie mir, ich bin beim Schreiben dieser Funktion völlig verwirrt

Ich brauche die Funktion, um die Anzahl der abgeschlossenen Aufträge pro Tag zurückzugeben

int OrdersClosedInDay(datetime time) {

datetime from=time-TimeHour(time)*60*60-TimeMinutes(time)*60-TimeSeconds(time);

datetime to=from+24*60*60;

int count=0;

for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--) {

   if (!OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)) continue;

   if (OrderCloseTime()>=from && OrderCloseTime()<to)   count++;

}

return count;

}

 
Valerius:


Ich würde es so formulieren:

Danke für die Hilfe, es fängt an, Sinn zu machen, aber nur zu Beginn eines neuen Tages werden die Werte zurückgesetzt, und wir brauchen es, um bis zur nächsten Serie von Aufträgen zu bleiben, die an einem Tag abgeschlossen werden

Ich habe es herausgefunden und eine weitere Funktion hinzugefügt

 
Artyom Trishkin:
Sie können keine Objekte zeichnen. Aber Sie können mit CCanvas Klasse zeichnen - Sie können dort
Ich danke Ihnen!
 
Vladimir Tkach:

Ich scheine missverstanden zu werden.

Ich ändere die Parameter im Panel (das sich auf dem Diagramm befindet), aber sie ändern sich nicht im Expert Advisor. Traurigkeit.


Wenn Sie keine doppelten Instanzen erstellen und diese im Programm weiterverwenden wollen, können Sie Benutzerparameter immer als "extern" festlegen - ihre Werte können im Laufe der Arbeit programmatisch geändert werden.
 
Bitte beraten Sie mich. Wie kann ich meinen EA so einstellen, dass er bei der nächsten Kerze schließt?
 
AlGuru:
Bitte beraten Sie mich. Wie kann ich im EA festlegen, dass er bei der nächsten Kerze schließt?
Wenn der Balken, an dem die Position eröffnet wurde, 1 ist, wird diese Position geschlossen.
Grund der Beschwerde: