Que voulez-vous obtenir exactement ? Voulez-vous l'heure de la dernière transaction(type de transaction "hors marché") ? Ou bien avez-vous besoin de connaître l'heure de clôture d'une position dans l'historique des transactions ?
Vous devez connaître l'heure de la dernière position fermée dans l'historique des transactions.
Le code que j'ai écrit fonctionnera dans MQL5, bien que j'ai accroché la bibliothèquefxsaber fonctionne code mt4, mais encore, la question reste, ne puis-je pas faire la fonctionOrderCloseTime() dans MQL5 ? Cependant, je ferais mieux d'y renoncer. J'ai plutôt une question pour les développeurs. Je n'ai pas à répondre. J'ai lu l'histoire dans la branche. Je n'ai pas compris beaucoup de choses jusqu'à présent, peut-être que je reconsidérerai mon point de vue sur le langage MQL5 avec le temps.
J'ai besoin de connaître l'heure de la dernière position fermée dans l'historique des transactions.
Le code que j'ai écrit fonctionnera dans MQL5, bien que j'aie branché la bibliothèquefxsaber, le code mt4 fonctionne toujours, mais la question demeure, ne puis-je pas faire la fonction OrderCloseTime() dans MQL5 ? Cependant, je ferais mieux d'y renoncer. J'ai plutôt une question pour les développeurs. Je n'ai pas à répondre. J'ai lu l'histoire dans la branche. Je n'ai pas compris beaucoup de choses jusqu'à présent, peut-être que je reconsidérerai mon opinion sur le langage MQL5 avec le temps.
C'est très simple. Il suffit de le lire d'abord, puis de tirer des conclusions :)
J'ai besoin de connaître l'heure de la dernière position fermée dans l'historique des transactions.
Le code que j'ai écrit fonctionnera dans MQL5, bien que j'aie branché la bibliothèquefxsaber, le code mt4 fonctionne toujours, mais la question demeure, ne puis-je pas faire la fonction OrderCloseTime() dans MQL5 ? Cependant, je ferais mieux d'y renoncer. J'ai plutôt une question pour les développeurs. Je n'ai pas à répondre. J'ai lu l'histoire dans la branche. Je ne comprends pas encore beaucoup de choses, peut-être que je reconsidérerai mon opinion sur le langage MQL5 avec le temps.
La méthode est très simple (d'autant plus que dans 99% des comptes de couverture, le type de transaction est "sortie du marché" - il s'agit de la clôture de la position).
Transaction de capture en ligneTRADE_TRANSACTION_DEAL_ADD- ajoute la transaction à l'historique, vérifie qu'il s'agissait d'un achat ou d'une vente, vérifie qu'il s'agissait d'une transaction de sortie du marchéDEAL_ENTRY_OUT
//+------------------------------------------------------------------+//| TradeTransaction function |//+------------------------------------------------------------------+voidOnTradeTransaction(constMqlTradeTransaction &trans,
constMqlTradeRequest &request,
constMqlTradeResult &result)
{
//--- get transaction type as enumeration valueENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in historyif(type==TRADE_TRANSACTION_DEAL_ADD)
{
long deal_ticket =0;
long deal_order =0;
long deal_time =0;
long deal_time_msc =0;
long deal_type =-1;
long deal_entry =-1;
long deal_magic =0;
long deal_reason =-1;
long deal_position_id =0;
double deal_volume =0.0;
double deal_price =0.0;
double deal_commission =0.0;
double deal_swap =0.0;
double deal_profit =0.0;
string deal_symbol ="";
string deal_comment ="";
string deal_external_id ="";
if(HistoryDealSelect(trans.deal))
{
deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME);
deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON);
deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);
deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);
deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT);
deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
}
elsereturn;
ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry;
if(deal_symbol==ИМЯ ВАШЕГО СИМВОЛА && deal_magic==НОМЕР ВАШЕГО MAGIC)
{
if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
{
if(deal_entry==DEAL_ENTRY_OUT)
{
*** ***
}
}
}
}
}
Généré un Expert Advisor simple en utilisant l'assistant VQL5, le code est donné ci-dessous. Aidez-moi à comprendre pourquoi la fonction "Expiration des ordres en cours (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();
}
//+------------------------------------------------------------------+
2019.09.09 18:03:27.865 Terminal MetaTrader 5 x64 build 2138 démarré (MetaQuotes Software Corp.)

2019.09.09 18:03:27.866 Terminal Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Mémoire : 20544 / 24520 Mb, Disque : 145 / 237 Gb, GMT+2
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
La vue habituelle de mon ME :
Je le ferme après le travail, rien ne dépend de la façon dont je le ferme.
La prochaine fois que j'ouvre le ME, il ressemble à ceci :
Vue - Barres d'outils vous pouvez tout configurer.
Tout se répète après l'arrêt du système.
2019.09.09 18:03:27.865 Terminal MetaTrader 5 x64 build 2138 démarré (MetaQuotes Software Corp.)
2019.09.09 18:03:27.866 Terminal Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Mémoire : 20544 / 24520 Mb, Disque : 145 / 237 Gb, GMT+2
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
La vue habituelle de mon ME :
Je le ferme après le travail, rien ne dépend de la façon dont je le ferme.
La prochaine fois que j'ouvre le ME, il ressemble à ceci :
Vue - Barres d'outils vous pouvez tout configurer.
Tout se répète après l'arrêt du système.
Maintenant, appuyez sur F12
2019.09.09 18:03:27.865 Terminal MetaTrader 5 x64 build 2138 démarré (MetaQuotes Software Corp.)
2019.09.09 18:03:27.866 Terminal Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Mémoire : 20544 / 24520 Mb, Disque : 145 / 237 Gb, GMT+2
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
La vue habituelle de mon ME :
Je le ferme après le travail, rien ne dépend de la façon dont je le ferme.
La prochaine fois que j'ouvre le ME, il ressemble à ceci :
Vue - Barres d'outils vous pouvez tout configurer.
Après l'extinction, tout se répète.
Essayez d'ouvrir le dossier de données, allez dans \config, fermez le terminal et MetaEditor, supprimez le fichier metaeditor.ini.
Maintenant, appuyez sur F12
Cela a fonctionné.
Merci beaucoup.
Essayez d'ouvrir le dossier de données, allez dans \config, fermez le terminal et MetaEditor, supprimez le fichier metaeditor.ini.
F12 a fonctionné, donc rien d'autre n'est nécessaire.
Merci pour votre aide.
F12 a fonctionné, donc rien d'autre n'est nécessaire.
Merci pour votre aide.
Wow. Je ne connaissais pas l'existence de F12 (expansion en plein écran) pour MetaEditor 5 !
Que voulez-vous obtenir exactement ? Voulez-vous l'heure de la dernière transaction(type de transaction "hors marché") ? Ou bien avez-vous besoin de connaître l'heure de clôture d'une position dans l'historique des transactions ?
Vous devez connaître l'heure de la dernière position fermée dans l'historique des transactions.
Le code que j'ai écrit fonctionnera dans MQL5, bien que j'ai accroché la bibliothèquefxsaber fonctionne code mt4, mais encore, la question reste, ne puis-je pas faire la fonctionOrderCloseTime() dans MQL5 ? Cependant, je ferais mieux d'y renoncer. J'ai plutôt une question pour les développeurs. Je n'ai pas à répondre. J'ai lu l'histoire dans la branche. Je n'ai pas compris beaucoup de choses jusqu'à présent, peut-être que je reconsidérerai mon point de vue sur le langage MQL5 avec le temps.
J'ai besoin de connaître l'heure de la dernière position fermée dans l'historique des transactions.
Le code que j'ai écrit fonctionnera dans MQL5, bien que j'aie branché la bibliothèquefxsaber, le code mt4 fonctionne toujours, mais la question demeure, ne puis-je pas faire la fonction OrderCloseTime() dans MQL5 ? Cependant, je ferais mieux d'y renoncer. J'ai plutôt une question pour les développeurs. Je n'ai pas à répondre. J'ai lu l'histoire dans la branche. Je n'ai pas compris beaucoup de choses jusqu'à présent, peut-être que je reconsidérerai mon opinion sur le langage MQL5 avec le temps.
C'est très simple. Il suffit de le lire d'abord, puis de tirer des conclusions :)
J'ai besoin de connaître l'heure de la dernière position fermée dans l'historique des transactions.
Le code que j'ai écrit fonctionnera dans MQL5, bien que j'aie branché la bibliothèquefxsaber, le code mt4 fonctionne toujours, mais la question demeure, ne puis-je pas faire la fonction OrderCloseTime() dans MQL5 ? Cependant, je ferais mieux d'y renoncer. J'ai plutôt une question pour les développeurs. Je n'ai pas à répondre. J'ai lu l'histoire dans la branche. Je ne comprends pas encore beaucoup de choses, peut-être que je reconsidérerai mon opinion sur le langage MQL5 avec le temps.
La méthode est très simple (d'autant plus que dans 99% des comptes de couverture, le type de transaction est "sortie du marché" - il s'agit de la clôture de la position).
Transaction de capture en ligneTRADE_TRANSACTION_DEAL_ADD- ajoute la transaction à l'historique, vérifie qu'il s'agissait d'un achat ou d'une vente, vérifie qu'il s'agissait d'une transaction de sortie du marchéDEAL_ENTRY_OUT
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégie
Questions des débutants MQL5 MT5 MetaTrader 5
MrBrooklin, 2019.09.09 09:50
Bonne journée à tous et grands bénéfices !
Généré un Expert Advisor simple en utilisant l'assistant VQL5, le code est donné ci-dessous. Aidez-moi à comprendre pourquoi la fonction "Expiration des ordres en cours (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.