Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 93

 
ryzhak.vladimir:

Hallo! Es gibt eine Reihe von Schlusskursen von 30-Min-Balken des EURUSD-Paares, vom 01.01.2012 bis 31.12.2012. Ich bekomme es mit der Funktion CopyClose. Aber CopyClose[0] ist nicht gleich dem Schlusskurs des letzten Balkens am 31.12.2012 im Terminal, wenn ich den Chart öffne. Bitte sagen Sie mir, was ich falsch mache. Warum die Preise von CopyClose und der tatsächliche Preis auf dem Chart nicht übereinstimmen

Bevor Sie Close_buf[0] aufrufen, müssen Sie ArraySetAsSeries verwenden. Einmal, während des gesamten Betriebs von EA/Script/Indikatorcode.

ArraySetAsSeries(Close_buf,true);
 
fyords:

ArraySetAsSeries muss vor dem Aufruf von Close_buf[0] verwendet werden. Einmal, für die gesamte Dauer des EA/Skripts/Indikatorcodes.

Er stimmt immer noch nicht überein, er zeigt 1,32308 statt 1,31964 (letzter Bar-Schlusskurs im Jahr 2012)

//+------------------------------------------------------------------+
//|                                                    simpleBet.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
double Close_buf[];//динамический массив для хранения значений закрытия баров
string my_symbol = "EURUSD";//валютная пара
ENUM_TIMEFRAMES my_timeframe = PERIOD_M30;//таймфрейм
datetime testTimeStart = D'2012.01.01';
datetime testTimeEnd = D'2012.12.31';
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---    
     CopyClose(my_symbol,my_timeframe,testTimeStart,testTimeEnd,Close_buf); 
     ArraySetAsSeries(Close_buf,true);
     Print(Close_buf[0]);
  }
//+------------------------------------------------------------------+
 
ryzhak.vladimir:

Stimmt immer noch nicht überein, zeigt 1,32308 statt 1,31964 (Schlusskurs des letzten Balkens im Jahr 2012)

Sie stellen
datetime testTimeEnd = D'2012.12.31';
Und wenn Sie die
datetime testTimeEnd = D'2012.12.31 23:59:59';
 
Ja, es hat funktioniert, vielen Dank! Allerdings ist immer noch nicht klar, warum die Preise nur dann übereinstimmten, wenn das genaue Datum auf die Sekunde genau angegeben wurde
 
ryzhak.vladimir:
Ja, es hat funktioniert, vielen Dank! Ich verstehe allerdings immer noch nicht, warum die Preise nur dann übereinstimmten, wenn das genaue Datum auf die Sekunde genau angegeben wurde

Wahrscheinlich, weil 2012.12.31 standardmäßig 2012.12.31 00:00:00 und nicht 2012.12.31 24:00:00 lautet.

 
Zitat aus der Dokumentation zur Funktion CopyBuffer:"Die zu kopierenden Datenelemente (Indikatorpuffer mit Index buffer_num) werden ab der Startposition von der Gegenwart in die Vergangenheit gezählt, d.h. die Startposition gleich 0 bedeutet den aktuellen Takt (Indikatorwert für den aktuellen Takt). "Aber in der Praxis müssen wir ArraySetAsSeries(Close_buf,true) anwenden, um den aktuellen Balken im 0ten Element zu haben. In der Dokumentation steht jedoch, dass standardmäßig der letzte Takt im 0. Element kopiert wird. Warum gibt es einen solchen Unterschied?
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
ryzhak.vladimir: Zitat aus der Dokumentation zur Funktion CopyBuffer:"Die Elemente der kopierten Daten (Indikatorpuffer mit Index buffer_num) werden ab der Startposition von der Gegenwart in die Vergangenheit gezählt, d.h. die Startposition gleich 0 bedeutet den aktuellen Takt (Indikatorwert für den aktuellen Takt). "Aber in der Praxis müssen wir ArraySetAsSeries(Close_buf,true) anwenden, um den aktuellen Balken im 0ten Element zu haben. In der Dokumentation steht jedoch, dass standardmäßig der letzte Takt im 0. Element kopiert wird. Warum gibt es einen solchen Unterschied?
Sehen Sie sich die Abbildung genauer an. Wohin wird das Element "start_pos" kopiert?
 
Mit dem Problem der psychologischen Ausrichtung konfrontiert.
Ich habe einen Trend EA geschrieben und er scheint erfolgreich zu sein. Jetzt schreibe ich einen flachen EA und... Dies ist das 5. Mal, dass dieser EA auf den vorherigen reduziert wird, als ob ich mit nur einem Algorithmus feststecken würde. Alles beginnt als "neu", aber nachdem der Algorithmus strukturiert ist, fange ich an, einen EA zu schreiben, der sich in jeder Hinsicht an den ersten (erfolgreichen) EA anpasst.

Wenn jemand hat so etwas konfrontiert - sagen Sie mir, wie man "loswerden" der imposanten Algorithmus, der nur bringt die Kaution in der Wohnung.
 
Lester: Wenn Sie mit einem solchen Bullshit konfrontiert haben - sagen Sie mir, wie man "loszuwerden" der imposanten Algorithmus, der in der Wohnung nur die Kaution abläuft.
Ich bin noch nicht auf so etwas gestoßen, aber für eine allgemeine Verlagerung der Aufmerksamkeit sollten Sie die Algorithmen anderer Leute studieren.
 
Lester:

Mit dem Problem der psychologischen Ausrichtung konfrontiert.
Ich habe einen Trend EA geschrieben und er scheint erfolgreich zu sein. Jetzt schreibe ich einen flachen EA und... Dies ist das 5. Mal, dass dieser EA auf den vorherigen reduziert wird, als ob ich mit nur einem Algorithmus feststecken würde. Alles beginnt als "neu", aber nachdem der Algorithmus strukturiert ist, fange ich an, einen EA zu schreiben, der sich in jeder Hinsicht an den ersten (erfolgreichen) EA anpasst.

Wenn jemand hat so etwas konfrontiert - sagen Sie mir, wie man "loswerden" der Algorithmus, der nur bringt die Kaution während der Wohnung.
Ihr Händler hat kein psychologisches Problem, sondern ein Systemproblem - das Fehlen präziser Zeichen für den Unterschied zwischen dem Trend und dem Flat. Wenn Sie diesen Punkt verstanden haben, wird sich alles zum Guten wenden.
Grund der Beschwerde: