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

 
m-r LSV:

Verstehe ich das richtig?

if(rates_total - prev_calculated == 1)
 Print("Новый бар");
 
Taras Slobodyanik:

Vielen Dank, ich habe das jetzt

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {
   fin=iTime(Symbol(), PERIOD_M1 ,0);
   if(last==fin) return(rates_total);
   last=fin;
   
   if(rates_total - prev_calculated == 1)
   Print("Новый бар");


return(rates_total);

	          
 

Können Sie mir bitte die Richtung der letzten geschlossenen Kerze beim Öffnen eines Balkens mitteilen?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {
   fin=iTime(Symbol(), PERIOD_M1 ,0);
   if(last==fin) return(rates_total);
   last=fin;
   
   if(rates_total - prev_calculated == 1)
   //Print("Новый бар");
   
   if(open[1] > close[1])
   {
      Print("Dn");
   }
   else if(open[1] < close[1])
   {
      Print("Up");
   }

return(rates_total);

Dieser Code zeigt immer die gleiche Meldung an, unabhängig davon, welche Kerze geschlossen wurde.
Ich verstehe, dass ich den Candlestick durch eine Schleife neu berechnen muss?
Bitte um Rat, Leute!

 
Taras Slobodyanik:

Warum verspotten Sie einen unerfahrenen Programmierer so?

Was ist, wenn eine verpasste Geschichte geladen wird und die Differenz größer als 1 ist? Es ist uns eigentlich egal, lassen wir einen Takt aus... denken wir mal darüber nach, einen mehr, einen weniger. Und warum sollten wir den Code ohne Erklärungen geben? Sehen Sie, was Sie am Ende bekommen?

 
Alexey Viktorov:

Warum verspotten Sie einen unerfahrenen Programmierer so?

Was ist, wenn eine verpasste Geschichte geladen wird und die Differenz größer als 1 ist? Es ist uns eigentlich egal, lassen wir einen Takt aus... denken wir mal darüber nach, einen mehr, einen weniger. Und warum sollten wir den Code ohne Erklärungen geben? Sehen Sie, was Sie am Ende bekommen?

Alexej, sag mir den richtigen Weg. Ich bitte Sie.
 
Alexey Viktorov:

Warum verspotten Sie einen unerfahrenen Programmierer so?

Was ist, wenn eine verpasste Geschichte geladen wird und die Differenz größer als 1 ist? Es ist uns eigentlich egal, lassen wir einen Takt aus... denken wir mal darüber nach, einen mehr, einen weniger. Und warum sollten wir den Code ohne Erklärungen geben? Sehen Sie, was Sie am Ende bekommen?

Das ist offensichtlich.)

Wenn es geladen ist, wird es mehr als 1 sein und es ist kein neuer Balken, warum sollte man ihn verfolgen, es gibt so etwas bei dem Problem nicht.

 
m-r LSV:

Können Sie mir bitte die Richtung der letzten geschlossenen Kerze beim Öffnen eines Balkens mitteilen?

Dieser Code erzeugt immer dieselbe Meldung, unabhängig davon, welche Kerze geschlossen wurde.
Ich verstehe, dass ich den Candlestick durch eine Schleife neu berechnen muss?
Bitte um Rat, Leute!

weil es keine Klammern gibt.

if(rates_total - prev_calculated == 1)
   {
   //Print("Новый бар");
   if(open[1] > close[1])
        {
        Print("Dn");
        }
   else if(open[1] < close[1])
        {
        Print("Up");
        }
   }
 
m-r LSV:

Verstehe ich das richtig?

Ja, das ist richtig.

m-r LSV:

Die Öffnung der Kerze wird um 9-12 Sekunden verzögert.
Können Sie mir bitte sagen, ob dies die erste Zecke ist?

Es ist einfach extrem wichtig für mich, Berechnungen anzustellen und alle Aktionen beim ersten Tick einer neuen Kerze durchzuführen.


Beim ersten Tick wirdeine neue Kerze gebildet.

Um das zu überprüfen, können Sie nach den Zecken fragen

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
 {
  MqlTick tick[];
  if(prev_calculated > 0 && rates_total > prev_calculated)
   {
    if(CopyTicks(_Symbol, tick, COPY_TICKS_ALL, 0, 2) <= 0)
      Print("ERR ", GetLastError());
    else
      ArrayPrint(tick);
   }

  return(rates_total);
 }

und sehen, dass der letzte Tick zur aktuellen Kerze gehört und der vorherige Tick zur vorherigen Kerze.

2021.06.02 17:50:59.311 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:50:59.311 00 (EURUSD,M1)  [0] 2021.06.02 17:50:58 1.22005 1.22007 0.0000        0 1622656258958       4       0.00000
2021.06.02 17:50:59.311 00 (EURUSD,M1)  [1] 2021.06.02 17:51:00 1.22004 1.22010 0.0000        0 1622656260655       6       0.00000
2021.06.02 17:51:58.741 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:51:58.741 00 (EURUSD,M1)  [0] 2021.06.02 17:51:59 1.22021 1.22026 0.0000        0 1622656319887       6       0.00000
2021.06.02 17:51:58.741 00 (EURUSD,M1)  [1] 2021.06.02 17:52:00 1.22020 1.22025 0.0000        0 1622656320080       6       0.00000

In meiner Demoversion öffnet sie sich zum Beispiel ohne Verzögerungen.

Bei einem weniger flüssigen Paar gibt es jedoch eine Verzögerung von 1 Sekunde.

2021.06.02 17:55:59.742 00 (CADJPY,M1)                   [time]  [bid]  [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:55:59.742 00 (CADJPY,M1)  [0] 2021.06.02 17:55:59 90.881 90.885  0.000        0 1622656559379       2         0.000
2021.06.02 17:55:59.742 00 (CADJPY,M1)  [1] 2021.06.02 17:56:01 90.882 90.887  0.000        0 1622656561076       6         0.000
 
Taras Slobodyanik:

es ist offensichtlich)

Wenn es geladen ist, wird es mehr als 1 sein, und es ist kein neuer Balken, warum sollte man ihn verfolgen, so etwas gibt es in der Aufgabe nicht.

Wo steht geschrieben, dass zusammen mit der neuen Leiste keine Historie nachgeladen werden kann?
 
Taras Slobodyanik:

weil es keine Klammern gibt

Es hat nicht geholfen :(

2021.06.02 17:54:09.465 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:55:09.439 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:56:09.686 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:57:09.471 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:58:09.586 Test (Volatility 10 Index,M1)      Up