J'ai généré un Expert Advisor simple avec l'assistant VQL5, le code est ci-dessous. Veuillez m'aider à trouver pourquoi la fonction "Expiration des ordres en attente (en barres)" ne fonctionne pas. J'ai défini toutes les valeurs de Signal_Expiration de 1 à 1000, mais l'ordre en attente n'existe toujours que dans une seule barre. Je joins également les paramètres.
Pour le test, j'utilise un compte de démonstration dans le terminal Metatrader 5, build 2136.
Sincèrement, Vladimir.
//+------------------------------------------------------------------+//| EA_MasterMQL5.mq5 |//| Copyright 2019, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2019, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Include |//+------------------------------------------------------------------+#include <Expert\Expert.mqh>
//--- available signals#include <Expert\Signal\SignalITF.mqh>
//--- available trailing#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+//| Inputs |//+------------------------------------------------------------------+//--- inputs for expertinputstring Expert_Title ="EA_MB_MasterMQL5"; // Document nameulong Expert_MagicNumber =1473; //bool Expert_EveryTick =false; ////--- inputs for main signalinputint Signal_ThresholdOpen =0; // Signal threshold value to open [0...100]inputint Signal_ThresholdClose =0; // Signal threshold value to close [0...100]inputdouble Signal_PriceLevel =0.0; // Price level to execute a dealinputdouble Signal_StopLevel =50.0; // Stop Loss level (in points)inputdouble Signal_TakeLevel =50.0; // Take Profit level (in points)inputint Signal_Expiration =4; // Expiration of pending orders (in bars)inputint Signal_ITF_GoodHourOfDay=-1; // IntradayTimeFilter(-1,...) Good hourinputint Signal_ITF_BadHoursOfDay=8389119; // IntradayTimeFilter(-1,...) Bad hours (bit-map)inputint Signal_ITF_GoodDayOfWeek=-1; // IntradayTimeFilter(-1,...) Good day of weekinputint Signal_ITF_BadDaysOfWeek=0; // IntradayTimeFilter(-1,...) Bad days of week (bit-map)inputdouble Signal_ITF_Weight =1.0; // IntradayTimeFilter(-1,...) Weight [0...1.0]//--- inputs for moneyinputdouble Money_FixRisk_Percent =10.0; // Risk percentage//+------------------------------------------------------------------+//| Global expert object |//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+//| Initialization function of the expert |//+------------------------------------------------------------------+intOnInit()
{
//--- Initializing expertif(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
{
//--- failedprintf(__FUNCTION__+": error initializing expert");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Creating signal
CExpertSignal *signal=new CExpertSignal;
if(signal==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating signal");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//---
ExtExpert.InitSignal(signal);
signal.ThresholdOpen(Signal_ThresholdOpen);
signal.ThresholdClose(Signal_ThresholdClose);
signal.PriceLevel(Signal_PriceLevel);
signal.StopLevel(Signal_StopLevel);
signal.TakeLevel(Signal_TakeLevel);
signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalITF
CSignalITF *filter0=new CSignalITF;
if(filter0==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating filter0");
ExtExpert.Deinit();
return(INIT_FAILED);
}
signal.AddFilter(filter0);
//--- Set filter parameters
filter0.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
filter0.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
filter0.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
filter0.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
filter0.Weight(Signal_ITF_Weight);
//--- Creation of trailing object
CTrailingNone *trailing=new CTrailingNone;
if(trailing==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating trailing");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add trailing to expert (will be deleted automatically))if(!ExtExpert.InitTrailing(trailing))
{
//--- failedprintf(__FUNCTION__+": error initializing trailing");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Set trailing parameters//--- Creation of money object
CMoneyFixedRisk *money=new CMoneyFixedRisk;
if(money==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating money");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add money to expert (will be deleted automatically))if(!ExtExpert.InitMoney(money))
{
//--- failedprintf(__FUNCTION__+": error initializing money");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Set money parameters
money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parametersif(!ExtExpert.ValidationSettings())
{
//--- failed
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Tuning of all necessary indicatorsif(!ExtExpert.InitIndicators())
{
//--- failedprintf(__FUNCTION__+": error initializing indicators");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- okreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Deinitialization function of the expert |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
ExtExpert.Deinit();
}
//+------------------------------------------------------------------+//| "Tick" event handler function |//+------------------------------------------------------------------+voidOnTick()
{
ExtExpert.OnTick();
}
//+------------------------------------------------------------------+//| "Trade" event handler function |//+------------------------------------------------------------------+voidOnTrade()
{
ExtExpert.OnTrade();
}
//+------------------------------------------------------------------+//| "Timer" event handler function |//+------------------------------------------------------------------+voidOnTimer()
{
ExtExpert.OnTimer();
}
//+------------------------------------------------------------------+
Cela fonctionnera-t-il à la place de OrderCloseTime() ??
Mon expérience au MQL5 en est à son quatrième jour, mais j'ai déjà eu ma dose !
Ramener la fonction OrderCloseTime(), cette position peut être réalisée d'une manière ou d'une autre par programme..... - ordre - puis transaction - puis position, ou est-ce si difficile de calculer la position par machine ?
Observez le comportement anormal de la plate-forme.
1. ME5 ne conserve pas les paramètres d'interface qui étaient en place lorsqu'il a été mis hors tension. En particulier, le panneau des paramètres disparaît. Il est possible de le restaurer, mais il faut le faire à chaque fois qu'il est allumé.
2. Je fais un indicateur. Modifier les paramètres d'un indicateur dans MT5 conduit généralement à un échec : la forme des lignes change de manière significative, la couleur ne peut être modifiée, etc. En outre, si vous modifiez les paramètres d'un indicateur nouvellement installé, tout fonctionne comme prévu.
Questions :
1. Est-ce que c'est juste moi ou est-ce un problème général ? 2. S'il y a quelque chose qui m'échappe ou que je fais mal, veuillez me conseiller.
Si cela ne pose pas trop de problèmes, veuillez corriger le code MQL4 pour qu'il fonctionne dans ML5.
Tout d'abord, vous devez écrire correctement les fonctions du système. La façon la plus simple de le faire est dans le MetaEditor 5 menu Fichier - Créer - Conseiller expert (modèle). Comparez votre code et le mien :
Cela fonctionnera-t-il pour les développeurs à la place de OrderCloseTime() ??
Mon expérience au MQL5 en est à son quatrième jour, mais j'ai déjà eu ma dose !
Ramener la fonction OrderCloseTime(), cette position peut être réalisée d'une manière ou d'une autre par programme..... - ordre - puis transaction - puis position, ou est-ce si difficile de calculer la position par machine ?
Que voulez-vous obtenir exactement ? Avez-vous besoin de l'heure de la dernière transaction(type de transaction "sortie du marché") ? Ou bien voulez-vous connaître l'heure de clôture d'une position dans l'historique des transactions ?
Observez le comportement anormal de la plate-forme.
1. ME5 ne conserve pas les paramètres d'interface qui étaient en place lorsqu'il a été mis hors tension. En particulier, le panneau des paramètres disparaît. Il peut être restauré, mais vous devez le faire à chaque fois que vous l'allumez.
Qui est MOI ? Qui est le panneau de configuration ?
ME = MetaEditor.
Le panneau de configuration, c'est ma mise en garde. Je veux dire la barre d'outils avec les boutons, y compris Compile. (J'ai dit "paramètres" par inertie - c'est moi avec MT5 qui me débat aussi avec le panneau de paramètres des indicateurs)
Le panneau de configuration est ma mise en garde. Je parle de la barre d'outils, qui comporte des boutons, dont Compile. (J'ai dit "paramètres" par inertie - c'est moi avec MT5 qui me bat aussi avec le panneau des paramètres de l'indicateur).
Build 2138 daté du 06.09.2019.
Veuillez préciser sur quel équipement cela se produit :
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.
Bonne journée à tous et grands bénéfices !
J'ai généré un Expert Advisor simple avec l'assistant VQL5, le code est ci-dessous. Veuillez m'aider à trouver pourquoi la fonction "Expiration des ordres en attente (en barres)" ne fonctionne pas. J'ai défini toutes les valeurs de Signal_Expiration de 1 à 1000, mais l'ordre en attente n'existe toujours que dans une seule barre. Je joins également les paramètres.
Pour le test, j'utilise un compte de démonstration dans le terminal Metatrader 5, build 2136.
Sincèrement, Vladimir.
Cela fonctionnera-t-il à la place de OrderCloseTime() ??
Mon expérience au MQL5 en est à son quatrième jour, mais j'ai déjà eu ma dose !
Ramener la fonction OrderCloseTime(), cette position peut être réalisée d'une manière ou d'une autre par programme..... - ordre - puis transaction - puis position, ou est-ce si difficile de calculer la position par machine ?
Bonjour à tous !
Si cela ne pose pas trop de problèmes, veuillez corriger le code MQL4 pour qu'il fonctionne dans ML5.
Observez le comportement anormal de la plate-forme.
1. ME5 ne conserve pas les paramètres d'interface qui étaient en place lorsqu'il a été mis hors tension. En particulier, le panneau des paramètres disparaît. Il est possible de le restaurer, mais il faut le faire à chaque fois qu'il est allumé.
2. Je fais un indicateur. Modifier les paramètres d'un indicateur dans MT5 conduit généralement à un échec : la forme des lignes change de manière significative, la couleur ne peut être modifiée, etc.
En outre, si vous modifiez les paramètres d'un indicateur nouvellement installé, tout fonctionne comme prévu.
Questions :
1. Est-ce que c'est juste moi ou est-ce un problème général ?
2. S'il y a quelque chose qui m'échappe ou que je fais mal, veuillez me conseiller.
Bonjour à tous !
Si cela ne pose pas trop de problèmes, veuillez corriger le code MQL4 pour qu'il fonctionne dans ML5.
Tout d'abord, vous devez écrire correctement les fonctions du système. La façon la plus simple de le faire est dans le MetaEditor 5 menu Fichier - Créer - Conseiller expert (modèle). Comparez votre code et le mien :
Quand vous l'aurez corrigé, nous continuerons...Cela fonctionnera-t-il pour les développeurs à la place de OrderCloseTime() ??
Mon expérience au MQL5 en est à son quatrième jour, mais j'ai déjà eu ma dose !
Ramener la fonction OrderCloseTime(), cette position peut être réalisée d'une manière ou d'une autre par programme..... - ordre - puis transaction - puis position, ou est-ce si difficile de calculer la position par machine ?
Que voulez-vous obtenir exactement ? Avez-vous besoin de l'heure de la dernière transaction(type de transaction "sortie du marché") ? Ou bien voulez-vous connaître l'heure de clôture d'une position dans l'historique des transactions ?
Observez le comportement anormal de la plate-forme.
1. ME5 ne conserve pas les paramètres d'interface qui étaient en place lorsqu'il a été mis hors tension. En particulier, le panneau des paramètres disparaît. Il peut être restauré, mais vous devez le faire à chaque fois que vous l'allumez.
Qui est MOI ? Qui est le Panel de paramètres ?
Qui est MOI ? Qui est le panneau de configuration ?
ME = MetaEditor.
Le panneau de configuration, c'est ma mise en garde. Je veux dire la barre d'outils avec les boutons, y compris Compile.
Build 2138 daté du 06.09.2019.(J'ai dit "paramètres" par inertie - c'est moi avec MT5 qui me débat aussi avec le panneau de paramètres des indicateurs)
ME = MetaEditor.
Le panneau de configuration est ma mise en garde. Je parle de la barre d'outils, qui comporte des boutons, dont Compile.
Build 2138 daté du 06.09.2019.(J'ai dit "paramètres" par inertie - c'est moi avec MT5 qui me bat aussi avec le panneau des paramètres de l'indicateur).
Veuillez préciser sur quel équipement cela se produit :
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
Bugs, bugs, questions
Vladimir Karputov, 2019.07.31 12:12
Précisez ces données :
copier trois lignes de l'onglet "Log" (sélectionner trois lignes -> clic droit de la souris -> Copier)
et le coller dans votre message. Vous devriez obtenir quelque chose comme ça :