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

 
DanLett:

d.h. während der aktuelle Balken[0] aufgebaut wird, wird der vorherige Balken definiert


Als Option:

datetime last_time;   // глобальная переменная

...

int start()
{
   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      //... ваши расчеты с плюсованием
   }
   
... дальше работаем
 
7777877:

Ja, danke hat geholfen... Aber ich möchte verstehen, warum ObjectSet(object_name,OBJPROP_TIMEFRAMES,PERIOD_H1) nicht funktioniert (wie es sollte)? Liegt es an den Fehlern in der Sprache selbst?

De facto sind sowohl PERIOD_H1 als auch OBJ_PERIOD_H1 nur eine Alphasubstitution eines numerischen Wertes.

OBJ_PERIOD_H1 = 0x0010 (für den aktuellen Build) = 0001 0000 (binär)

PERIOD_H1 = 60 (für diesen Build) = 0011 1100 (binär)


Da es leicht zu ersetzen ist, setzen Sie versehentlich 4 Zeitrahmen anstelle von einem - H4, H1, M30 und M15


Und anstatt ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x0010) aufzurufen (was Sie eigentlich tun wollten), haben Sie

ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x3C).

 
datetime last_time;   // глобальная переменная

...

int start()
{
   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(close[1]>open[1]) 
xBost_b=xBost_b+((close[1]-low[1])*10000);
   }

was ist Time[0] und wie wirkt es sich auf 1 time plus aus? ich bin etwas verwirrt...

 
DanLett:

was ist Time[0] und wie wirkt es sich auf 1 time plus aus?! ich bin nur etwas verwirrt...

Time[0] ist die Öffnungszeit des letzten (aktuellen) Balkens. Sobald ein neuer Balken kommt, ändert er sich.

Geben Sie Zeit in MetaEditor ein und drücken Sie F1 für Details

 
ilunga:

Time[0] ist die Öffnungszeit des letzten (aktuellen) Balkens. Sobald ein neuer Balken kommt, ändert er sich.

Geben Sie Zeit in MetaEditor ein und drücken Sie F1 für Details

Ich werde es jetzt lesen! Vielen Dank!
 
DanLett:
Ich werde es jetzt lesen! Vielen Dank!

Dann vergessen Sie nicht, sich iTime() anzuschauen
 
   datetime last_time;   // глобальная переменная
  int xBost_b;
  int xBost_s;
double hi=High[1];
double op=Open[1];
double cl=Close[1];
double lo=Low[1];
int Sum_xb;
int Sum_xs;
 
 if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(Close[1]>Open[1]) 
xBost_b=(hi-cl)*10000;
Sum_xb=Sum_xb+xBost_b;<---------не плюсует,выдает такое же число как и xBost

      if(Close[1]<Open[1])
 xBost_s=(cl-lo)*10000; 
Sum_xs=Sum_xs+xBost_s;    
Comment("\n kolvo_b=",xBost_b,"\n Sum_xb=",Sum_xb,"\n kolvo_s=",xBost_s,"\n Sum_xs=",Sum_xs);

   }
Wie schaffen Sie es, dass Sie jedes Mal ein Plus erhalten?
 
DanLett:
Wie schaffe ich es, dass es jedes Mal aufgeht???
Dieglobalen Variablen sollten außerhalb aller Funktionen liegen. Senden Sie die Summen auch dorthin. oder deklarieren Sie diese Variablen als statisch
 
DanLett:
Wie schaffe ich es, dass sie jedes Mal hinzugefügt wird???
Nehmen Sie last_time aus start() heraus und erklären Sie es zu static
 
Wie kann ich synthetische Balken(https://www.mql5.com/ru/articles/1353) verwenden, damit die Funktion innerhalb des EA nur mit offenen Preisen arbeitet? Bei regulären Balken wurde dies anhand der Eröffnungszeit des aktuellen Balkens durchgeführt, etwa so if (Time[0] == prevtime4) return;
prevtime4=Time[0]; aber die synthetischen Balken sind ohne Zeit...theoretisch können Sie hier schreiben, wenn bid der Eröffnungskurs ist, aber ich weiß nicht, wie man es macht.