Datum, an dem die Datei ohne Zeitangabe kompiliert wurde (Stunden, Minuten und Sekunden sind 0)
__DATETIME__
Datum und Uhrzeit, zu der die Datei kompiliert wurde
__LINE__
Zeilennummer im Quellcode, in der sich das Makro befindet
__FILE__
Name der zu kompilierenden Datei
__PATH__
Absoluter Pfad zur aktuellen kompilierten Datei
__FUNCTION__
Name der Funktion, in deren Körper sich das Makro befindet
__FUNCSIG__
Funktionssignatur, in deren Körper sich das Makro befindet. Die Funktionsbeschreibung mit den Parametertypen kann bei der Identifizierung vonüberladenen Funktionen hilfreich sein
Könnten Sie mir bitte sagen, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken mit SELL eröffnet wird, der die vorherige Position geschlossen hat?
Die Regeln sind einfach (zu lernen): 1 Einstieg - langsamer Indikator über 0 + schneller Indikator ebenfalls in der Zone (Kauf/Verkauf)
2 Ausfahrt - Überquerung durch Schnellblinker 0
//+------------------------------------------------------------------+//| TestDPO.mq5 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#include <Trade\Trade.mqh>
CTrade trade;
inputint dpo_fast_period = 9; // DPO Fast Periodinputint dpo_slow_period = 40; // DPO Fast Periodinputint magic = 1000; // Magic советникаinputulong slippage = 10; // Проскальзывание ценыinputdouble volume = 0.1; // размер позицииint DPO_fast; // Хэндл для быстрого DPOint DPO_slow; // Хэндл для медленного DPOdouble fDPOVal[]; //Динамический массив для хранения значений fast DPOdouble sDPOVal[]; //Динамический массив для хранения значений slow DPO//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---------------Задаем цены покупки и продажи------------------------double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
int signal=0; // сигнал на покупку, продажу//--------------Проверка на новый барif(!isNewBar())
return;
//--------------------------------------------------------------------
DPO_fast=iCustom(NULL,0,"Examples\\DPO",dpo_fast_period); // получаем хэндлы для быстрого
DPO_slow=iCustom(NULL,0,"Examples\\DPO",dpo_slow_period); // получаем хэндлы для медленногоArraySetAsSeries(fDPOVal,true); //задаем направление индексов массиваArraySetAsSeries(sDPOVal,true);
if(CopyBuffer(DPO_fast,0,0,10,fDPOVal)<0) // наполняем массив значений DPO fast
{
Alert("Ошибка копирования буфера индикатора fast DPO. Ошибка ", GetLastError());
}
if(CopyBuffer(DPO_slow,0,0,10,sDPOVal)<0) // наполняем массив значений DPO slow
{
Alert("Ошибка копирования буфера индикатора slow DPO. Ошибка ", GetLastError());
}
double DPO_fast_c_value=NormalizeDouble(fDPOVal[1],6); // запоминаем значение индикатора DPO fast на предыдущем бареdouble DPO_slow_c_value=NormalizeDouble(sDPOVal[1],6); // запоминаем значение индикатора DPO slow на предыдущем бареdouble DPO_fast_p_value=NormalizeDouble(fDPOVal[2],6); // запоминаем значение индикатора DPO fast на пред-предыдущем бареdouble DPO_slow_p_value=NormalizeDouble(sDPOVal[2],6); // запоминаем значение индикатора DPO slow на пред-предыдущем бареif(DPO_slow_c_value>0 && DPO_slow_p_value<0 && DPO_fast_c_value>0) // если медленный индикатор пересекает 0 снизу вверх и быстрый находится выше 0
signal=1; // сигнал на открытие покупкиif(DPO_slow_c_value<0 && DPO_slow_p_value>0 && DPO_fast_c_value<0) // если медленный индикатор пересекает 0 сверху вниз и быстрый находится ниже 0
signal=-1; // сигнал на открытие продажиif(DPO_fast_c_value>0 && DPO_fast_p_value<0) // если быстрый индикатор пересекает 0 снизу вверх
signal=-2; // сигнал на закрытие продажиif(DPO_fast_c_value<0 && DPO_fast_p_value>0) // если быстрый индикатор пересекает 0 сверху вниз
signal=2; // сигнал на закрытие покупкиswitch (signal)
{
case -1:
trade.Sell(volume,NULL,Bid,0,0,NULL);
break;
case1:
trade.Buy(volume,NULL,Ask,0,0,NULL);
break;
case -2:
trade.PositionClose(_Symbol,slippage);
break;
case2:
trade.PositionClose(_Symbol,slippage);
break;
}
}
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как я собираю себе советника методом тыка Из этих...
Könnten Sie mir bitte sagen, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken mit SELL eröffnet wird, der eine vorherige Position geschlossen hat?
Die Regeln sind einfach (zu lernen): 1 Einstieg - langsamer Indikator über 0 + schneller ebenfalls in der Zone (Kauf/Verkauf)
2 Ausfahrt - schneller Blinker über die 0-Linie
Alles funktioniert richtig: Öffnungsbedingungen Kreuzung der langsamen Indikator 0 Linie, nur schnelle Indikator überquerte 0 Linie an der angegebenen Stelle.
Eine Bedingung muss hinzugefügt werden, um eine Position an der angegebenen Stelle zu öffnen, langsam im gleichen Bereich und schnell kreuzt die 0-Linie
Könnten Sie bitte angeben, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken wie eine SELL-Position eröffnet wird, die eine vorherige Position geschlossen hat?
Die Regeln sind einfach (zu lernen): 1 Einstieg - langsamer Indikator über 0 + schneller Indikator ebenfalls in der Zone (Kauf/Verkauf)
2 Ausfahrt - Überquerung durch Schnellblinker 0
Sie machen einen groben Fehler: Sie erstellen ZWEI INLIKER für jeden TICK!
//--------------------------------------------------------------------
DPO_fast=iCustom(NULL,0,"Examples\\DPO",dpo_fast_period); // получаем хэндлы для быстрого
DPO_slow=iCustom(NULL,0,"Examples\\DPO",dpo_slow_period); // получаем хэндлы для медленного
Der Indikator-Handle MUSS einmal bei OnInit erstellt werden.
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха, ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
OK, ich werde nach einem Mon mit 4K suchen.
Woher stammt dieses Bild?
Forum für Handel, automatisierte Handelssysteme und Strategietests
FAQ von Anfängern MQL5 MT5 MetaTrader 5
Vitaly Muzichenko, 2020.05.13 08:32
Hier ist 4K und1920x1080
Woher stammt dieses Bild?
Gesendet von 4K
Gesendet mit 4K
Können Sie das noch einmal überprüfen? Oder nicht?
Können Sie das noch einmal überprüfen? Oder nicht?
Nicht erwünscht)
Wie erhält man den Wert der MQL5-Programmversion, die durch die Eigenschaft # Version definiert ist?
Es stellt sich heraus, dass das nicht möglich ist, weil inVordefinierte Makro-Ersetzungen
Konstante
Beschreibung
__DATUM__
Datum, an dem die Datei ohne Zeitangabe kompiliert wurde (Stunden, Minuten und Sekunden sind 0)
__DATETIME__
Datum und Uhrzeit, zu der die Datei kompiliert wurde
__LINE__
Zeilennummer im Quellcode, in der sich das Makro befindet
__FILE__
Name der zu kompilierenden Datei
__PATH__
Absoluter Pfad zur aktuellen kompilierten Datei
__FUNCTION__
Name der Funktion, in deren Körper sich das Makro befindet
__FUNCSIG__
Funktionssignatur, in deren Körper sich das Makro befindet. Die Funktionsbeschreibung mit den Parametertypen kann bei der Identifizierung vonüberladenen Funktionen hilfreich sein
__MQLBUILD__, __MQL5BUILD__
Nummer des Compiler-Builds
keine solche Variable
Wie erhält man den Wert der MQL5-Programmversion, die durch die Eigenschaft # Version definiert ist?
Ich benutze das, ich konnte keine andere Option finden. Sie müssen die Version zweimal angeben, aber das ist nicht so schwierig
Guten Tag, liebe Experten.
Könnten Sie mir bitte sagen, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken mit SELL eröffnet wird, der die vorherige Position geschlossen hat?
Die Regeln sind einfach (zu lernen):
1 Einstieg - langsamer Indikator über 0 + schneller Indikator ebenfalls in der Zone (Kauf/Verkauf)
2 Ausfahrt - Überquerung durch Schnellblinker 0
Guten Tag, geschätzte Experten.
Könnten Sie mir bitte sagen, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken mit SELL eröffnet wird, der eine vorherige Position geschlossen hat?
Die Regeln sind einfach (zu lernen):
1 Einstieg - langsamer Indikator über 0 + schneller ebenfalls in der Zone (Kauf/Verkauf)
2 Ausfahrt - schneller Blinker über die 0-Linie
Alles funktioniert richtig: Öffnungsbedingungen Kreuzung der langsamen Indikator 0 Linie, nur schnelle Indikator überquerte 0 Linie an der angegebenen Stelle.
Eine Bedingung muss hinzugefügt werden, um eine Position an der angegebenen Stelle zu öffnen, langsam im gleichen Bereich und schnell kreuzt die 0-Linie
Guten Tag, liebe Experten.
Könnten Sie bitte angeben, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken wie eine SELL-Position eröffnet wird, die eine vorherige Position geschlossen hat?
Die Regeln sind einfach (zu lernen):
1 Einstieg - langsamer Indikator über 0 + schneller Indikator ebenfalls in der Zone (Kauf/Verkauf)
2 Ausfahrt - Überquerung durch Schnellblinker 0
Sie machen einen groben Fehler: Sie erstellen ZWEI INLIKER für jeden TICK!
Der Indikator-Handle MUSS einmal bei OnInit erstellt werden.
Bitte lesen Sie dieiCustom-Hilfe.