Comment créer un délai dans un EA avant d'ouvrir un nouveau trade après la fin d'un trade précédent.
C'est-à-dire que l'opération s'est terminée t/p et qu'après cela, je dois attendre par exemple 15 minutes et ce n'est qu'ensuite que la formule continuera à fonctionner :)
Trouvé
OrderCloseTime(
)
Mais comment puis-je lier cela à l'heure du programme, et pour qu'il n'y ait pas de conflit avec l'exécution de l'EA à travers l'historique. Merci d'avance
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
Nombre d'éléments de la série temporelle (dans le sens de la barre actuelle vers l'indice ascendant), parmi lesquels la recherche doit être effectuée.
commencer
-
L'indice (décalage par rapport à la barre actuelle) de la barre de départ à partir de laquelle la recherche de la valeur la plus élevée commencera. Les valeurs négatives sont ignorées et remplacées par des valeurs nulles.
La question est de savoir comment spécifier que la recherche doit être effectuée avant la barre au-dessus de laquelle la fractale est apparue et si la période est inférieure à une minute..... comment faire ?
ce serait génial. J'ai parcouru le tutoriel sur les variables globales, je comprends que c'est ce dont j'ai besoin, mais je ne comprends pas les nuances. Où les déclarer, comment y inscrire les valeurs nécessaires, etc.
Si, par exemple, 5 EAs sont suspendus dans le terminal sur 5 paires différentes et que chaque EA a 4 variables qui doivent être écrites, cela signifie que nous avons besoin de 20 variables globales et qu'elles doivent être nommées d'une manière ou d'une autre en utilisant la commande Symbol() afin que je ne doive pas écrire chaque nom dans l'EA.
En somme, ce n'est pas encore pour mon cerveau (((
Retenez le temps d'ouverture de la barre où la dernière fractale a été définie, utilisez-le pour trouver le numéro de cette barre. Si la période est inférieure à une minute........, comment ça se fait ? Si la période du graphique, moins d'une minute est tout simplement pas là.
Merci pour la réponse, mais je voulais savoir comment savoir si la fractale actuelle a été brisée ou non avant que la prochaine fractale n'apparaisse.
Si vous recherchez le prix d'une fractale fraîche (vous pouvez faire défiler la molette de la souris sur cette page), vous saurez alors si cette fractale est en rupture. Mon profil contient des liens vers l'expo ProfitUnity de B.Williams. Je l'ai écrit moi-même. Maintenant, je trade par signaux inverses, dans la direction du retour du prix vers sa moyenne mobile.
ce serait génial. J'ai parcouru le tutoriel sur les variables globales, je comprends que c'est ce dont j'ai besoin, mais je ne comprends pas les nuances. Où les déclarer, comment y inscrire les bonnes valeurs, etc.
Si, par exemple, 5 EAs sont suspendus dans le terminal sur 5 paires différentes et que chaque EA a 4 variables qui doivent être écrites, cela signifie que nous avons besoin de 20 variables globales et qu'elles doivent être nommées d'une manière ou d'une autre en utilisant la commande Symbol() afin que je ne doive pas écrire chaque nom dans l'EA.
En somme, ce n'est pas encore pour mon cerveau (((
Si je n'ai pas assez de cervelle pour les variables globales du terminal, alors pour les écrire dans un fichier aussi...
double Var1, Var2, Var3, Var4; // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "") // префикс имени переменной
{
staticdatetime ldt_NewBar;
datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----//---- Сохраняемся в начале каждой минутыif (ldt_NewBar == ldaTBeginBar) return;
ldt_NewBar = ldaTBeginBar;
//---- Сохраняем поочереди значения каждой переменнойstring ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
GlobalVariableSet (ls_Name, Var1);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
GlobalVariableSet (ls_Name, Var2);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
GlobalVariableSet (ls_Name, Var3);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()void fGet_MineGV (string fs_PrefName = "") // префикс имени переменной
{
string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----//---- Восстанавливаем значения переменныхif (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}
Mais, il y a une première fois pour tout. fSave_MineGV() dans start() et fGet_MineGV() dans init().
J'espère que vous trouverez la solution et que vous écrirez vos variables de sauvegarde au lieu de Var1, etc.
ce serait génial. J'ai parcouru le tutoriel sur les variables globales, je comprends que c'est ce dont j'ai besoin, mais je ne comprends pas les nuances. Où les déclarer, comment y inscrire les valeurs nécessaires, etc.
Si, par exemple, 5 EAs sont suspendus dans le terminal sur 5 paires différentes et que chaque EA a 4 variables qui doivent être écrites, cela signifie que nous avons besoin de 20 variables globales et qu'elles doivent être nommées d'une manière ou d'une autre en utilisant la commande Symbol() afin que je ne doive pas écrire chaque nom dans l'EA.
Eh bien, ce n'est pas encore pour mon cerveau(()
Les variables dont vous avez besoin sont vraiment 20, vous ne voulez pas les écrire dans votre EA, faites-en un fichier séparé, il y a des commandes de préprocesseur pour prédéfinir les constantes, et pour un débutant il est beaucoup plus facile de travailler avec des variables globales, qu'avec des fichiers, mais bien sûr vous êtes le patron.
veuillez me conseiller... que diable... dans sa forme originale (sansPlaySound("alert.wav") ;) - travaux. Mais si vous ajoutez à n'importe quel lien en plus de l'attribution du drapeau et d'une certaine action (jouer de la musique par exemple) ... alors les drapeaux s'impriment 0000 et la musique joue à pleine vitesse ! s'il vous plaît dites-moi où l'erreur ?
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.
Bonjour à tous.
Comment créer un délai dans un EA avant d'ouvrir un nouveau trade après la fin d'un trade précédent.
C'est-à-dire que l'opération s'est terminée t/p et qu'après cela, je dois attendre par exemple 15 minutes et ce n'est qu'ensuite que la formule continuera à fonctionner :)
Trouvé
https://www.mql5.com/ru/forum/131859
Je suis désolé,
ce serait génial. J'ai parcouru le tutoriel sur les variables globales, je comprends que c'est ce dont j'ai besoin, mais je ne comprends pas les nuances. Où les déclarer, comment y inscrire les valeurs nécessaires, etc.
Si, par exemple, 5 EAs sont suspendus dans le terminal sur 5 paires différentes et que chaque EA a 4 variables qui doivent être écrites, cela signifie que nous avons besoin de 20 variables globales et qu'elles doivent être nommées d'une manière ou d'une autre en utilisant la commande Symbol() afin que je ne doive pas écrire chaque nom dans l'EA.
En somme, ce n'est pas encore pour mon cerveau (((
Retenez le temps d'ouverture de la barre où la dernière fractale a été définie, utilisez-le pour trouver le numéro de cette barre. Si la période est inférieure à une minute........, comment ça se fait ? Si la période du graphique, moins d'une minute est tout simplement pas là.
Merci pour la réponse, mais je voulais savoir comment savoir si la fractale actuelle a été brisée ou non avant que la prochaine fractale n'apparaisse.
Si vous recherchez le prix d'une fractale fraîche (vous pouvez faire défiler la molette de la souris sur cette page), vous saurez alors si cette fractale est en rupture. Mon profil contient des liens vers l'expo ProfitUnity de B.Williams. Je l'ai écrit moi-même. Maintenant, je trade par signaux inverses, dans la direction du retour du prix vers sa moyenne mobile.
Je suis désolé,
ce serait génial. J'ai parcouru le tutoriel sur les variables globales, je comprends que c'est ce dont j'ai besoin, mais je ne comprends pas les nuances. Où les déclarer, comment y inscrire les bonnes valeurs, etc.
Si, par exemple, 5 EAs sont suspendus dans le terminal sur 5 paires différentes et que chaque EA a 4 variables qui doivent être écrites, cela signifie que nous avons besoin de 20 variables globales et qu'elles doivent être nommées d'une manière ou d'une autre en utilisant la commande Symbol() afin que je ne doive pas écrire chaque nom dans l'EA.
En somme, ce n'est pas encore pour mon cerveau (((
Si je n'ai pas assez de cervelle pour les variables globales du terminal, alors pour les écrire dans un fichier aussi...
Mais, il y a une première fois pour tout. fSave_MineGV() dans start() et fGet_MineGV() dans init().
J'espère que vous trouverez la solution et que vous écrirez vos variables de sauvegarde au lieu de Var1, etc.Je suis désolé,
ce serait génial. J'ai parcouru le tutoriel sur les variables globales, je comprends que c'est ce dont j'ai besoin, mais je ne comprends pas les nuances. Où les déclarer, comment y inscrire les valeurs nécessaires, etc.
Si, par exemple, 5 EAs sont suspendus dans le terminal sur 5 paires différentes et que chaque EA a 4 variables qui doivent être écrites, cela signifie que nous avons besoin de 20 variables globales et qu'elles doivent être nommées d'une manière ou d'une autre en utilisant la commande Symbol() afin que je ne doive pas écrire chaque nom dans l'EA.
Eh bien, ce n'est pas encore pour mon cerveau(()
//+------------------------------------------------------------------+
P.S. Il est préférable de prédéfinir les variables (pour une paire de devises) une fois init.
rigonich,
pourquoi, dans l'EA je veux juste, je pensais au contraire que l'enregistrement des fichiers est plus facile.
TarasBY ,
Merci, tout est clair, je vais essayer, je pense que ça va marcher.