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

 
Aleksei Stepanenko MqlDateTime Struktur. In diesem Fall wird es jedoch Signale für fehlende Balken geben, die es nicht geben sollte.

Zum Beispiel:

1 Balken am Mittwoch verpasst, durch dieses Symbol um 00:30 gestartet, d.h. um 00:00 verloren

M30 Zeitrahmen, es stellte sich heraus, dass es 47 an einem Tag statt 48 waren. Dies ist genau das, was wir identifizieren müssen


 
Vitaly Muzichenko #:

Hier ist ein Beispiel:

1 Balken am Mittwoch verpasst, durch dieses Symbol um 00:30 gestartet, d.h. um 00:00 verloren

M30 Zeitrahmen, bekam 47 am Tag statt 48. Das ist genau das, was wir erkennen müssen.


Ich kenne den richtigen Weg nicht, aber ich würde in diese Richtung denken

      datetime tt=Time[Bars-1];
      //--- 
      if(Time[i]==tt){tt+=PeriodSeconds(PERIOD_CURRENT);}
      else
      {Print(TimeToString(tt,TIME_DATE|TIME_MINUTES));tt+=PeriodSeconds(PERIOD_CURRENT);}
 
Vitaly Muzichenko #:

Hier ist ein Beispiel:

1 Balken am Mittwoch verpasst, durch dieses Symbol um 00:30 gestartet, d.h. um 00:00 verloren

M30 Zeitrahmen, bekam 47 am Tag statt 48. Dies ist genau das, was wir identifizieren müssen


int  Bars( 
   string           symbol_name,     // имя символа 
   ENUM_TIMEFRAMES  timeframe,       // период 
   datetime         start_time,      // с какой даты 
   datetime         stop_time        // по какую дату 
   );
Wenn 47
 

Vitaly Muzichenko #:

Das ist genau das, was wir herausfinden müssen.

Ich verstehe, es geht um Fehlalarme, von denen es viele geben wird.

//дата последней свечи
 curr_time=iTime(symbol,frame,0);
//ограничение на торговлю вне начала бара
if(last_time==curr_time) return;

if((iBarShift(eSymbol,eFrame,last_time)-iBarShift(eSymbol,eFrame,curr_time))>PeriodSeconds(eFrame)) printf("а-я-яй");
last_time=curr_time;
 
Alexey Viktorov #:
Wenn 47

Dies ist möglich, Sie können auch CopyOpen()

Ich kann mich nicht entscheiden, wie ich das in einer Schleife durch die ganze Geschichte organisieren soll.

 

noch einfacher:

for(int i=TotalBars-1; .....
   {
   if((iBarShift(eSymbol,eFrame,last_time)-i)>PeriodSeconds(eFrame)) printf("а-я-яй");
   last_time=iTime(symbol,frame,i);
 
Vitaly Muzichenko #:

Dies ist möglich, Sie können auch CopyOpen()

Ich kann mich nicht entscheiden, wie ich das in einer Schleife durch die ganze Geschichte organisieren soll.

Die Öffnungszeit des Null-Tages-Balkens minus 1 Sekunde bis zur Öffnung des ersten Tagesbalkens. Dann von der Eröffnung des ersten Tagesbalkens minus 1 Sekunde bis zur Eröffnung des zweiten Tagesbalkens und so weiter.
 
Vitaly Muzichenko #:

Dies ist möglich, Sie können auch CopyOpen()

Ich kann mich nicht entscheiden, wie ich sie in einer Schleife über die gesamte Geschichte anordnen soll

Genau (z.B. für M30) - wenn die Zeit zwischen den Eröffnungen (modulo % 24 Stunden) benachbarter Balken länger ist als M30 - bedeutet dies, dass dazwischen Balken fehlen.

int nbars = ( ( iTime(_Symbol,PERIOD_M30,N) - iTime(_Symbol,PERIOD_M30,N+1) ) ) / PeriodSeconds(PERIOD_M30) ) % 48; // сколько баров должно быть между ссоедними отметками

if (nbars>1) PrintFormat("Пропущено баров: %d",nbars-1);

 

Ich danke Ihnen allen, das Prinzip ist klar, das Problem ist formalisiert.

---

Nun eine Frage: Was mache ich falsch, haben alle Zeichen den gleichen Wert?

#property strict

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print( DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_POINT),8) );
  }
//+------------------------------------------------------------------+
0       14:39:38.965    sc GBPCHF,M30: 0.00001000
0       14:46:44.478    sc NZDCHF,M30: 0.00001000
0       14:44:54.709    sc EURUSD,M30: 0.00001000

---

P.S. Terminal MT4, geprüft auf zwei verschiedenen Terminals in verschiedenen Maklerfirmen

P.SS. Ich habe es in MT5 überprüft, das Ergebnis ist das gleiche

2021.11.20 15:05:34.881 sc (EURCHF,M30)  0.00001000
2021.11.20 15:05:39.203 sc (AUDUSD,M30)  0.00001000
2021.11.20 15:05:51.985 sc (EURAUD,M30)  0.00001000

---

Wahrscheinlich mache ich etwas falsch!

Ich benötige den "Punktwert".

 
Vitaly Muzichenko #:

Ich danke Ihnen allen, das Prinzip ist klar, das Problem ist formalisiert.

---

Nun eine Frage: Was mache ich falsch, haben alle Zeichen den gleichen Wert?

Vitaly, hier ist es notwendig, entweder die Entwickler zu nerven, oder

Grund der Beschwerde: