Date à laquelle le fichier a été compilé sans heure (heures, minutes et secondes sont 0)
__DATETIME__
Date et heure auxquelles le fichier a été compilé
__LINE__
Numéro de ligne dans le code source où se trouve la macro.
__FILE__
Nom du fichier en cours de compilation
__PATH__
Chemin absolu vers le fichier compilé actuel
__FUNCTION__
Nom de la fonction dans le corps de laquelle se trouve la macro.
__FUNCSIG__
Signature de la fonction dans le corps de laquelle se trouve la macro. La description de la fonction avec les types de paramètres peut être utile pour identifier lesfonctions surchargées.
Pourriez-vous me dire où dans le code il y a une erreur qui empêche d'ouvrir une position BUY sur la même barre avec SELL qui a fermé la position précédente ?
Les règles sont simples (à apprendre) : 1 Entrée - indicateur lent traversant 0 + rapide également dans la zone (achat/vente)
2 Sortie - passage par l'indicateur rapide 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. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как я собираю себе советника методом тыка Из этих...
Pourriez-vous me dire où dans le code il y a une erreur qui empêche d'ouvrir une position BUY sur la même barre avec SELL qui a fermé une position précédente ?
Les règles sont simples (à apprendre) : 1 Entrée - indicateur lent traversant 0 + rapide également dans la zone (achat/vente)
2 Sortie - indicateur rapide franchissant la ligne 0
Tout fonctionne correctement : conditions d'ouverture franchissement de la ligne 0 de l'indicateur lent, seul l'indicateur rapide a franchi la ligne 0 à l'endroit spécifié.
Une condition doit être ajoutée pour ouvrir une position à l'endroit spécifié, lente dans la même zone et rapide franchit la ligne 0
Pourriez-vous indiquer où, dans le code, il y a une erreur qui empêche l'ouverture d'une position BUY sur la même barre que SELL, qui a fermé une position précédente ?
Les règles sont simples (à apprendre) : 1 Entrée - indicateur lent traversant 0 + rapide également dans la zone (achat/vente)
2 Sortie - passage par l'indicateur rapide 0
Vous commettez une erreur grossière : vous créez DEUX INLIKERS POUR CHAQUE TICK!
//--------------------------------------------------------------------
DPO_fast=iCustom(NULL,0,"Examples\\DPO",dpo_fast_period); // получаем хэндлы для быстрого
DPO_slow=iCustom(NULL,0,"Examples\\DPO",dpo_slow_period); // получаем хэндлы для медленного
L'identifiant de l'indicateur DOIT être créé une fois à OnInit.
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха, ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
OK, je vais chercher un mon avec 4K.
D'où vient cette photo ?
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégie
FAQ des débutants MQL5 MT5 MetaTrader 5
Vitaly Muzichenko, 2020.05.13 08:32
Voici le 4K et le1920x1080
D'où vient cette photo ?
Envoyé de 4K
Envoyé avec 4K
Eh bien, pouvez-vous vérifier à nouveau, je suppose ? Ou pas ?
Eh bien, pouvez-vous vérifier à nouveau, je suppose ? Ou pas ?
Pas souhaitable)
Comment obtenir la valeur de la version du programme MQL5 définie par la propriété# version?
Il s'avère que vous ne pouvez pas, parce que dans lessubstitutions de macro prédéfinies
Constant
Description
__DATE__
Date à laquelle le fichier a été compilé sans heure (heures, minutes et secondes sont 0)
__DATETIME__
Date et heure auxquelles le fichier a été compilé
__LINE__
Numéro de ligne dans le code source où se trouve la macro.
__FILE__
Nom du fichier en cours de compilation
__PATH__
Chemin absolu vers le fichier compilé actuel
__FUNCTION__
Nom de la fonction dans le corps de laquelle se trouve la macro.
__FUNCSIG__
Signature de la fonction dans le corps de laquelle se trouve la macro. La description de la fonction avec les types de paramètres peut être utile pour identifier lesfonctions surchargées.
__MQLBUILD__, __MQL5BUILD__
Numéro de la construction du compilateur
aucune variable de ce type
Comment obtenir la valeur de la version du programme MQL5 définie par la propriété# version?
J'utilise ceci, je n'ai pas trouvé d'autre option. Vous devez écrire la version deux fois, mais ce n'est pas si difficile.
Bonne journée, chers experts.
Pourriez-vous me dire où dans le code il y a une erreur qui empêche d'ouvrir une position BUY sur la même barre avec SELL qui a fermé la position précédente ?
Les règles sont simples (à apprendre) :
1 Entrée - indicateur lent traversant 0 + rapide également dans la zone (achat/vente)
2 Sortie - passage par l'indicateur rapide 0
Bonjour, chers experts.
Pourriez-vous me dire où dans le code il y a une erreur qui empêche d'ouvrir une position BUY sur la même barre avec SELL qui a fermé une position précédente ?
Les règles sont simples (à apprendre) :
1 Entrée - indicateur lent traversant 0 + rapide également dans la zone (achat/vente)
2 Sortie - indicateur rapide franchissant la ligne 0
Tout fonctionne correctement : conditions d'ouverture franchissement de la ligne 0 de l'indicateur lent, seul l'indicateur rapide a franchi la ligne 0 à l'endroit spécifié.
Une condition doit être ajoutée pour ouvrir une position à l'endroit spécifié, lente dans la même zone et rapide franchit la ligne 0
Bonne journée, chers experts.
Pourriez-vous indiquer où, dans le code, il y a une erreur qui empêche l'ouverture d'une position BUY sur la même barre que SELL, qui a fermé une position précédente ?
Les règles sont simples (à apprendre) :
1 Entrée - indicateur lent traversant 0 + rapide également dans la zone (achat/vente)
2 Sortie - passage par l'indicateur rapide 0
Vous commettez une erreur grossière : vous créez DEUX INLIKERS POUR CHAQUE TICK!
L'identifiant de l'indicateur DOIT être créé une fois à OnInit.
Veuillez lire l'aide d'iCustom.