MT4, bitte helfen Sie der Gemeinschaft. 1. Im Expert Advisor, der auf dem M1-Chart arbeitet (mit Ticks oder mit einem Timer von 0,5 Sekunden), müssen Sie die Berechnungen zum Zeitpunkt einer neuen Kerze auf dem H1-Chart durchführen. Wir können den Beginn der M1 Kerze fangen, nach der letzten M1 Kerze jeder Stunde (NN:00 Minuten), aber es ist nicht sehr schön ... Außerdem kann es sein, dass die H1-Kerze zu diesem Zeitpunkt nicht erscheint. Vielleicht hat es jemand eleganter gemacht? 2. Wie viel länger dauert es, die Indikatorwerte über iCustom() abzurufen, verglichen mit dem Indikatorcode im Expert Advisor-Text? 3. wenn der Code des Indikators in den Text der Expert Advisor ist viel schneller zu berechnen, wie in der Expert Advisor an den M1-Chart, um den Indikator-Wert auf dem H1-Chart zu berechnen?
MT4, ich bitte die Community um Hilfe. 1. Wenn Sie mit dem Expert Advisor auf dem M1-Chart arbeiten (mit Ticks oder mit einem Timer von 0,5 Sekunden), müssen Sie die Berechnungen in dem Moment durchführen, in dem eine neue Kerze auf dem H1-Chart erscheint. Wir können den Beginn der M1 Kerze fangen, nach der letzten M1 Kerze jeder Stunde (NN:00 Minuten), aber es ist nicht sehr schön ... Außerdem kann es sein, dass die H1-Kerze zu diesem Zeitpunkt nicht erscheint. Vielleicht hat es jemand eleganter gemacht? 2. Wie viel länger dauert es, die Indikatorwerte über iCustom() abzurufen, verglichen mit dem Indikatorcode im Expert Advisor Text? 3. wenn der Code des Indikators in den Text der Expert Advisor ist viel schneller zu berechnen, wie in der Expert Advisor an den M1-Chart, um den Indikator-Wert auf dem H1-Chart zu berechnen?
Die Antwort auf die erste Frage: Die Funktion definiert einen neuen Balken.
Die Antwort auf die erste Frage: Die Funktion definiert einen neuen Balken.
Vielen Dank Sergey, ich habe die Dokumentation durchgesehen, aber irgendwie habe ich iTime() übersehen ... : Und warumwird NevBar() inOnInit() aufgerufen?
Sergey Gritsay: Ich höre zum ersten Mal von ihnen und frage mich, was daran so beängstigend ist. Ich benutze sie auch selten, aber sie sind für bestimmte Aufgaben besser geeignet.
Das Problem ist, dass eine statische Variable nur verwendet werden kann, wenn NevDay() während der gesamten Laufzeit des EA für dasselbe Symbol und denselben Zeitrahmen aufgerufen wird. Bei 2 oder mehr Symbolen gibt NevDay() falsche Werte zurück. My Expert Advisor ist für mehrere Währungen ausgelegt ... :(
MikeZv: Der Punkt ist, dass die statische Variable nur verwendet werden kann, wenn NevDay() für dasselbe Symbol und denselben Zeitrahmen aufgerufen wird. Wenn es 2 oder mehr Symbole gibt, gibt NevDay() falsche Werte zurück. Mein Expert Advisor ist mehrwährungsfähig ... :(
Wenn Sie es für den Mehrwährungsmodus benötigen, hier ist ein Beispiel, es funktioniert in MT4 und MT5
MikeZv: Der Punkt ist, dass die statische Variable nur verwendet werden kann, wenn NevDay() für dasselbe Symbol und denselben Zeitrahmen aufgerufen wird. Wenn es 2 oder mehr Symbole gibt, gibt NevDay() falsche Werte zurück. Mein Expert Advisor ist mehrwährungsfähig ... :(
Hier ist eine weitere Option, die die Klasse
//+------------------------------------------------------------------+//| тест.mq4 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2016, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class CNevBar
{
private:
datetime curbar;
datetime lastbar;
public:
CNevBar();
~CNevBar();
bool new_bar(string symbol,ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+void CNevBar::~CNevBar(void)
{
}
//+------------------------------------------------------------------+bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
{
curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar!=curbar)
{
lastbar=curbar;
return(true);
}
return(false);
}
CNevBar *eurusd_H1; // объявим экземпляр класса для симмвола EURUSD
CNevBar *eurusd_M15; // объявим экземпляр класса для симмвола EURUSD
CNevBar *audusd_M30; // объявим экземпляр класса для симмвола AUDUSD
CNevBar *audusd_M5; // объявим экземпляр класса для симмвола AUDUSD//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---
eurusd_H1=new CNevBar();// создадим экземпляр класса для симмвола EURUSD
audusd_M30=new CNevBar();// создадим экземпляр класса для симмвола AUDUSD
eurusd_M15=new CNevBar();// создадим экземпляр класса для симмвола EURUSD
audusd_M5=new CNevBar();// создадим экземпляр класса для симмвола AUDUSD//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---delete eurusd_H1;// удалим экземпляр класса для симмвола EURUSDdelete audusd_M30;// удалим экземпляр класса для симмвола AUDUSDdelete eurusd_M15;// удалим экземпляр класса для симмвола EURUSDdelete audusd_M5;// удалим экземпляр класса для симмвола AUDUSD
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
if(eurusd_H1.new_bar("EURUSD",PERIOD_H1))
{
Alert("EURUSD"," Новый бар на Н1");
}
if(eurusd_M15.new_bar("EURUSD",PERIOD_M15))
{
Alert("EURUSD"," Новый бар на M15");
}
if(audusd_M30.new_bar("AUDUSD",PERIOD_M30))
{
Alert("AUDUSD"," Новый бар на M30");
}
if(audusd_M5.new_bar("AUDUSD",PERIOD_M5))
{
Alert("AUDUSD"," Новый бар на M5");
}
//---
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
Testergebnis
2016.02.2021:09:432015.01.1000:00 тест3 test started
2016.02.2021:09:452015.01.1200:00 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:09:472015.01.1200:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M30
2016.02.2021:09:502015.01.1200:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:09:532015.01.1200:05 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:09:592015.01.1200:10 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:042015.01.1200:15 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:042015.01.1200:15 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:102015.01.1200:20 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:132015.01.1200:25 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:162015.01.1200:30 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:162015.01.1200:30 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M30
2016.02.2021:10:162015.01.1200:30 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:232015.01.1200:35 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:262015.01.1200:40 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:292015.01.1200:45 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:292015.01.1200:45 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:342015.01.1200:50 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:362015.01.1200:55 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: EURUSD Новый бар на Н12016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M30
2016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:462015.01.1201:05 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:502015.01.1201:10 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:552015.01.1201:15 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:552015.01.1201:15 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:572015.01.1201:17 Tester: stop button pressed
MT4, bitte helfen Sie der Gemeinschaft.
1. Im Expert Advisor, der auf dem M1-Chart arbeitet (mit Ticks oder mit einem Timer von 0,5 Sekunden), müssen Sie die Berechnungen zum Zeitpunkt einer neuen Kerze auf dem H1-Chart durchführen.
Wir können den Beginn der M1 Kerze fangen, nach der letzten M1 Kerze jeder Stunde (NN:00 Minuten), aber es ist nicht sehr schön ... Außerdem kann es sein, dass die H1-Kerze zu diesem Zeitpunkt nicht erscheint.
Vielleicht hat es jemand eleganter gemacht?
2. Wie viel länger dauert es, die Indikatorwerte über iCustom() abzurufen, verglichen mit dem Indikatorcode im Expert Advisor-Text?
3. wenn der Code des Indikators in den Text der Expert Advisor ist viel schneller zu berechnen, wie in der Expert Advisor an den M1-Chart, um den Indikator-Wert auf dem H1-Chart zu berechnen?
MT4, ich bitte die Community um Hilfe.
1. Wenn Sie mit dem Expert Advisor auf dem M1-Chart arbeiten (mit Ticks oder mit einem Timer von 0,5 Sekunden), müssen Sie die Berechnungen in dem Moment durchführen, in dem eine neue Kerze auf dem H1-Chart erscheint.
Wir können den Beginn der M1 Kerze fangen, nach der letzten M1 Kerze jeder Stunde (NN:00 Minuten), aber es ist nicht sehr schön ... Außerdem kann es sein, dass die H1-Kerze zu diesem Zeitpunkt nicht erscheint.
Vielleicht hat es jemand eleganter gemacht?
2. Wie viel länger dauert es, die Indikatorwerte über iCustom() abzurufen, verglichen mit dem Indikatorcode im Expert Advisor Text?
3. wenn der Code des Indikators in den Text der Expert Advisor ist viel schneller zu berechnen, wie in der Expert Advisor an den M1-Chart, um den Indikator-Wert auf dem H1-Chart zu berechnen?
Die Antwort auf die erste Frage: Die Funktion definiert einen neuen Balken.
Anwendungsbeispiel
int OnInit() { //--- NevBar(PERIOD_H1); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(NevBar(PERIOD_H1)) { производим вычисления. } } //+------------------------------------------------------------------+Die Antwort auf die erste Frage: Die Funktion definiert einen neuen Balken.
Vielen Dank Sergey, ich habe die Dokumentation durchgesehen, aber irgendwie habe ich iTime() übersehen ... :
Und warumwird NevBar() inOnInit() aufgerufen?
Der erste Funktionsaufruf, sonst wird er sofort ausgelöst. Um sicherzustellen, dassOnInit() nicht aufgerufen wird
Der erste Funktionsaufruf, sonst wird er sofort ausgelöst. Um sicherzustellen, dassOnInit() nicht aufgerufen wird
Vielen Dank, Sergej! Im Forum wurde ich zu Tode erschreckt: "Verwenden Sie keine statischen Variablen! " :)
Vielen Dank, Sergej! Im Forum wurde ich zu Tode erschreckt: "Verwenden Sie keine statischen Variablen! " :)
Ich höre zum ersten Mal von ihnen und frage mich, was daran so beängstigend ist. Ich benutze sie auch selten, aber sie sind für bestimmte Aufgaben besser geeignet.
Der Punkt ist, dass die statische Variable nur verwendet werden kann, wenn NevDay() für dasselbe Symbol und denselben Zeitrahmen aufgerufen wird. Wenn es 2 oder mehr Symbole gibt, gibt NevDay() falsche Werte zurück. Mein Expert Advisor ist mehrwährungsfähig ... :(
Wenn Sie es für den Mehrwährungsmodus benötigen, hier ist ein Beispiel, es funktioniert in MT4 und MT5
Der Punkt ist, dass die statische Variable nur verwendet werden kann, wenn NevDay() für dasselbe Symbol und denselben Zeitrahmen aufgerufen wird. Wenn es 2 oder mehr Symbole gibt, gibt NevDay() falsche Werte zurück. Mein Expert Advisor ist mehrwährungsfähig ... :(
Hier ist eine weitere Option, die die Klasse
Testergebnis