Cosa vuoi ottenere esattamente? Vuoi il tempo dell'ultimo trade(tipo di trade "fuori mercato")? O avete bisogno di sapere il tempo di chiusura di una posizione nella storia del trading?
È necessario conoscere il tempo dell'ultima posizione chiusa nella storia del trading.
Il codice che ho scritto funzionerà in MQL5, anche se ho agganciato la libreriafxsaber funziona codice mt4, ma ancora, la domanda rimane, non posso fare la funzioneOrderCloseTime() in MQL5? Tuttavia, è meglio che ci rinunci. Ho più che altro una domanda per gli sviluppatori. Non devo rispondere, ho letto la storia nel ramo. Non ho capito molte cose finora, forse col tempo riconsidererò le mie opinioni sul linguaggio MQL5.
Ho bisogno di sapere il tempo dell'ultima posizione chiusa nella storia del trading.
Il codice che ho scritto funzionerà in MQL5, anche se ho collegato la libreriafxsaber, il codice mt4 funziona ancora, ma la domanda rimane, non posso fare la funzione OrderCloseTime() in MQL5? Tuttavia, è meglio che ci rinunci. Ho più che altro una domanda per gli sviluppatori. Non devo rispondere, ho letto la storia nel ramo. Non ho capito molte cose finora, forse col tempo riconsidererò le mie opinioni sul linguaggio MQL5.
È abbastanza semplice. Devi solo leggerlo prima, poi trarre le conclusioni :)
Ho bisogno di sapere il tempo dell'ultima posizione chiusa nella storia del trading.
Il codice che ho scritto funzionerà in MQL5, anche se ho collegato la libreriafxsaber, il codice mt4 funziona ancora, ma la domanda rimane, non posso fare la funzione OrderCloseTime() in MQL5? Tuttavia, è meglio che ci rinunci. Ho più che altro una domanda per gli sviluppatori. Non devo rispondere, ho letto la storia nel ramo. Non capisco ancora molte cose, forse col tempo riconsidererò le mie opinioni sul linguaggio MQL5.
Il metodo è molto semplice (soprattutto perché nel 99% dei conti hedge il tipo di operazione è "uscita dal mercato" - questa è la chiusura della posizione).
Cattura online la transazioneTRADE_TRANSACTION_DEAL_ADD- aggiunge la transazione alla storia, controlla che sia stata acquistata o venduta, controlla che sia stata una transazione di uscita dal mercatoDEAL_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)
{
*** ***
}
}
}
}
}
Generato un semplice Expert Advisor utilizzando VQL5 Wizard, il codice è riportato di seguito. Aiutami a capire perché la funzione "Scadenza degli ordini pendenti (in barre)" non funziona. Ho impostato qualsiasi valore di Signal_Expiration da 1 a 1000, ma l'ordine pendente esiste ancora solo in una barra. Allego anche le impostazioni dei parametri.
Per i test, sto usando un conto demo nel terminale Metatrader 5, build 2136.
Sinceramente, 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 Terminale MetaTrader 5 x64 build 2138 avviato (MetaQuotes Software Corp.)

2019.09.09 18:03:27.866 Terminale Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Memoria: 20544 / 24520 Mb, Disco: 145 / 237 Gb, GMT+2
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
La solita vista del mio ME:
Lo chiudo dopo il lavoro, niente dipende da come lo chiudo.
La volta successiva che apro il ME, appare così:
View - Toolbars si può impostare tutto.
Tutto si ripete dopo lo spegnimento.
2019.09.09 18:03:27.865 Terminale MetaTrader 5 x64 build 2138 avviato (MetaQuotes Software Corp.)
2019.09.09 18:03:27.866 Terminale Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Memoria: 20544 / 24520 Mb, Disco: 145 / 237 Gb, GMT+2
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
La solita vista del mio ME:
Lo chiudo dopo il lavoro, niente dipende da come lo chiudo.
La volta successiva che apro il ME, appare così:
View - Toolbars si può impostare tutto.
Tutto si ripete dopo lo spegnimento.
Ora premi F12
2019.09.09 18:03:27.865 Terminale MetaTrader 5 x64 build 2138 avviato (MetaQuotes Software Corp.)
2019.09.09 18:03:27.866 Terminale Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Memoria: 20544 / 24520 Mb, Disco: 145 / 237 Gb, GMT+2
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
La solita vista del mio ME:
Lo chiudo dopo il lavoro, niente dipende da come lo chiudo.
La volta successiva che apro il ME, appare così:
View - Toolbars si può impostare tutto.
Dopo lo spegnimento, tutto si ripete.
Prova ad aprire la cartella dati e vai a \config, chiudi il terminale e MetaEditor, cancella il file metaeditor.ini
Ora premi F12
Questo ha funzionato.
Grazie mille.
Prova ad aprire la cartella dati e vai a \config, chiudi il terminale e MetaEditor, cancella il file metaeditor.ini
F12 ha funzionato, quindi non è necessario altro.
Grazie per l'aiuto.
F12 ha funzionato, quindi non serve altro.
Grazie per tutto il vostro aiuto.
Wow. Non sapevo di F12 (espandere a schermo intero) per MetaEditor 5!
Cosa vuoi ottenere esattamente? Vuoi il tempo dell'ultimo trade(tipo di trade "fuori mercato")? O avete bisogno di sapere il tempo di chiusura di una posizione nella storia del trading?
È necessario conoscere il tempo dell'ultima posizione chiusa nella storia del trading.
Il codice che ho scritto funzionerà in MQL5, anche se ho agganciato la libreriafxsaber funziona codice mt4, ma ancora, la domanda rimane, non posso fare la funzioneOrderCloseTime() in MQL5? Tuttavia, è meglio che ci rinunci. Ho più che altro una domanda per gli sviluppatori. Non devo rispondere, ho letto la storia nel ramo. Non ho capito molte cose finora, forse col tempo riconsidererò le mie opinioni sul linguaggio MQL5.
Ho bisogno di sapere il tempo dell'ultima posizione chiusa nella storia del trading.
Il codice che ho scritto funzionerà in MQL5, anche se ho collegato la libreriafxsaber, il codice mt4 funziona ancora, ma la domanda rimane, non posso fare la funzione OrderCloseTime() in MQL5? Tuttavia, è meglio che ci rinunci. Ho più che altro una domanda per gli sviluppatori. Non devo rispondere, ho letto la storia nel ramo. Non ho capito molte cose finora, forse col tempo riconsidererò le mie opinioni sul linguaggio MQL5.
È abbastanza semplice. Devi solo leggerlo prima, poi trarre le conclusioni :)
Ho bisogno di sapere il tempo dell'ultima posizione chiusa nella storia del trading.
Il codice che ho scritto funzionerà in MQL5, anche se ho collegato la libreriafxsaber, il codice mt4 funziona ancora, ma la domanda rimane, non posso fare la funzione OrderCloseTime() in MQL5? Tuttavia, è meglio che ci rinunci. Ho più che altro una domanda per gli sviluppatori. Non devo rispondere, ho letto la storia nel ramo. Non capisco ancora molte cose, forse col tempo riconsidererò le mie opinioni sul linguaggio MQL5.
Il metodo è molto semplice (soprattutto perché nel 99% dei conti hedge il tipo di operazione è "uscita dal mercato" - questa è la chiusura della posizione).
Cattura online la transazioneTRADE_TRANSACTION_DEAL_ADD- aggiunge la transazione alla storia, controlla che sia stata acquistata o venduta, controlla che sia stata una transazione di uscita dal mercatoDEAL_ENTRY_OUT
Forum sul trading, sistemi di trading automatico e test di strategia
Domande dai principianti MQL5 MT5 MetaTrader 5
MrBrooklin, 2019.09.09 09:50
Buona giornata a tutti e grandi profitti!
Generato un semplice Expert Advisor utilizzando VQL5 Wizard, il codice è riportato di seguito. Aiutami a capire perché la funzione "Scadenza degli ordini pendenti (in barre)" non funziona. Ho impostato qualsiasi valore di Signal_Expiration da 1 a 1000, ma l'ordine pendente esiste ancora solo in una barra. Allego anche le impostazioni dei parametri.
Per i test, sto usando un conto demo nel terminale Metatrader 5, build 2136.
Sinceramente, Vladimir.