J'ai plusieurs indicateurs liés à plusieurs horizons temporels, si j'utilise la fonction comment(), alors seules les valeurs de l'indicateur pour l'horizon temporel testé sont affichées, les valeurs des autres indicateurs restent inchangées, je suppose que les indicateurs des autres horizons temporels ne sont pas non plus pris en compte dans le test.
...
Tout d'abord, montrez-moi la partie du code où vous trouvez dans l'EA les valeurs de l'indicateur pour d'autres horizons temporels. Je pense qu'il y a peut-être une erreur.
Bonjour, pourriez-vous me dire comment enregistrer qu'un ordre n'est ouvert qu'une seule fois (tant que la condition est remplie) et que lorsque l'ordre est fermé (même si la condition est toujours remplie), aucun autre ordre n'est exécuté !
J'ai besoin d'un ordre d'ouverture basé sur une condition, une fois par heure au début de l'heure (sur une nouvelle barre horaire) et indépendamment du résultat, une nouvelle ouverture seulement après 1 heure ou 2 ou 3 etc. et aussi seulement au début de l'heure (sur une nouvelle barre horaire) en fonction de la condition ? ????.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после открытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+datetime SecondsAfterOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после закрытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+datetime SecondsAfterCloseLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
}
}
}
}
return(TimeCurrent()-t);
}
paladin80: Tout d'abord, montrez la partie du code où vous trouvez les valeurs de l'indicateur pour d'autres horizons temporels dans l'EA. Je soupçonne qu'une erreur s'y cache.
int pic1=GetExtremumZZBar("",PERIOD_M1,0,12,5,3);
int pic5=GetExtremumZZBar("",PERIOD_M5,0,12,5,3);
int pic15=GetExtremumZZBar("",PERIOD_M15,0,12,5,3);
int pic30=GetExtremumZZBar("",PERIOD_M30,0,12,5,3);
int pic60=GetExtremumZZBar("",PERIOD_H1,0,12,5,3);
int pic240=GetExtremumZZBar("",PERIOD_H4,0,12,5,3);
La fonction de Kim
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Возвращает номер бара экстремума ЗигЗага по его номеру. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL или "" - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| ne - номер экстремума ( 0 - последний) |//| dp - ExtDepth |//| dv - ExtDeviation |//| bs - ExtBackstep |//+----------------------------------------------------------------------------+int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
if (sy=="" || sy=="0") sy=Symbol();
double zz;
int i, k=iBars(sy, tf), ke=0;
for (i=0; i<k; i++) {
zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
if (zz!=0) {
ke++;
if (ke>ne) return(i);
}
}
Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
return(-1);
}
int pic1=GetExtremumZZBar(NULL,PERIOD_M1,0,12,5,3);
int pic5=GetExtremumZZBar(NULL,PERIOD_M5,0,12,5,3);
int pic15=GetExtremumZZBar(NULL,PERIOD_M15,0,12,5,3);
int pic30=GetExtremumZZBar(NULL,PERIOD_M30,0,12,5,3);
int pic60=GetExtremumZZBar(NULL,PERIOD_H1,0,12,5,3);
int pic240=GetExtremumZZBar(NULL,PERIOD_H4,0,12,5,3);
//---int GetExtremumZZBar(string sy, int tf, int ne, int dp, int dv, int bc) {
...
}
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.
J'ai plusieurs indicateurs liés à plusieurs horizons temporels, si j'utilise la fonction comment(), alors seules les valeurs de l'indicateur pour l'horizon temporel testé sont affichées, les valeurs des autres indicateurs restent inchangées, je suppose que les indicateurs des autres horizons temporels ne sont pas non plus pris en compte dans le test.
...
comment faire en sorte qu'un ordre s'ouvre une fois par heure et seulement au début de l'heure
ou
https://docs.mql4.com/ru/dateandtime/minute
seulement bien sûr pour vérifier si un ordre est ouvert afin qu'un autre ne soit pas ouvert
Tout d'abord, montrez la partie du code où vous trouvez les valeurs de l'indicateur pour d'autres horizons temporels dans l'EA. Je soupçonne qu'une erreur s'y cache.
La fonction de Kim
Hmm, essayez comme ça :