O que é que quer obter exactamente? Quer o momento da última transacção(tipo de transacção "fora do mercado")? Ou precisa de saber a hora de fechar uma posição na história do comércio?
É preciso saber a hora da última posição fechada na história do comércio.
O código que escrevi funcionará em MQL5, embora tenha enganchado a bibliotecafxsaber código de obras mt4, mas mesmo assim, a questão permanece, não posso fazer a funçãoOrderCloseTime() em MQL5? No entanto, é melhor desistir. Tenho mais uma pergunta para os criadores. Não tenho de responder. Li a história no ramo. Não compreendi muitas coisas até agora, talvez reconsidere a tempo a minha opinião sobre a linguagem MQL5.
Preciso de saber o tempo da última posição fechada na história do comércio.
O código que escrevi vai funcionar na MQL5, embora tenha ligado a bibliotecafxsaber, o código mt4 ainda funciona, mas a questão permanece, não posso fazer a função OrderCloseTime() na MQL5? No entanto, é melhor desistir. Tenho mais uma pergunta para os criadores. Não tenho de responder. Li a história no ramo. Até agora não compreendi muitas coisas, talvez reconsidere a tempo a minha opinião sobre a linguagem MQL5.
É simples. Basta lê-lo primeiro, depois tirar conclusões :)
Preciso de saber o tempo da última posição fechada na história do comércio.
O código que escrevi vai funcionar na MQL5, embora tenha ligado a bibliotecafxsaber, o código mt4 ainda funciona, mas a questão permanece, não posso fazer a função OrderCloseTime() na MQL5? No entanto, é melhor desistir. Tenho mais uma pergunta para os criadores. Não tenho de responder. Li a história no ramo. Ainda não compreendo muitas coisas, talvez reconsidere a tempo a minha opinião sobre a linguagem MQL5.
Utilizar um método muito simples (especialmente porque em 99% das contas de cobertura o tipo de negócio é "saída do mercado" - isto é o fecho da posição).
Transacção de captura onlineTRADE_TRANSACTION_DEAL_ADD- adicionar transacção ao histórico, verificar se foi COMPRA ou VENDA, verificar se foi uma transacção de saída do mercadoDEAL_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)
{
*** ***
}
}
}
}
}
Gerado um simples Expert Advisor usando o VQL5 Wizard, o código é dado abaixo. Ajude-me a compreender porque é que a função "Expiração de ordens pendentes (em barras)" não funciona, traduzida como "Expiração de ordens pendentes (em barras)". Defino quaisquer valores de Sinal_Expiração de 1 a 1000, mas a ordem pendente ainda existe apenas dentro de uma barra. Também anexar definições de parâmetros.
Para testes, estou a utilizar uma conta demo no terminal Metatrader 5, construir 2136.
Atenciosamente, 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();
}
//+------------------------------------------------------------------+
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
2019.09.09 18:03:27.865 Terminal MetaTrader 5 x64 build 2138 iniciado (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, Memória: 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
A visão habitual do meu ME:
Fecho-o depois do trabalho, nada depende de como o fecho.
Da próxima vez que eu abrir o ME, é o que parece:
Ver - Barras de ferramentas que pode configurar tudo.
Tudo se repete após o encerramento.
2019.09.09 18:03:27.865 Terminal MetaTrader 5 x64 build 2138 iniciado (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, Memória: 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
A visão habitual do meu ME:
Fecho-o depois do trabalho, nada depende de como o fecho.
Da próxima vez que eu abrir o ME, é o que parece:
Ver - Barras de ferramentas que pode configurar tudo.
Tudo se repete após o encerramento.
Agora pressione F12
2019.09.09 18:03:27.865 Terminal MetaTrader 5 x64 build 2138 iniciado (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, Memória: 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
A visão habitual do meu ME:
Fecho-o depois do trabalho, nada depende de como o fecho.
Da próxima vez que eu abrir o ME, é o que parece:
Ver - Barras de ferramentas que pode configurar tudo.
Após o desligamento, tudo se repete.
Tente abrir a Pasta de Dados lá vai para \config, feche o terminal e MetaEditor, apague o ficheiro metaeditor.ini
Agora pressione F12
Isto tem funcionado.
Muito obrigado.
Tente abrir a Pasta de Dados lá vai para \config, feche o terminal e MetaEditor, apague o ficheiro metaeditor.ini
F12 funcionou, por isso nada mais é necessário.
Obrigado pela ajuda.
F12 tem funcionado, por isso nada mais é necessário.
Obrigado por toda a sua ajuda.
Uau. Não sabia da F12 (expandir para ecrã inteiro) para o MetaEditor 5!
O que é que quer obter exactamente? Quer o momento da última transacção(tipo de transacção "fora do mercado")? Ou precisa de saber a hora de fechar uma posição na história do comércio?
É preciso saber a hora da última posição fechada na história do comércio.
O código que escrevi funcionará em MQL5, embora tenha enganchado a bibliotecafxsaber código de obras mt4, mas mesmo assim, a questão permanece, não posso fazer a funçãoOrderCloseTime() em MQL5? No entanto, é melhor desistir. Tenho mais uma pergunta para os criadores. Não tenho de responder. Li a história no ramo. Não compreendi muitas coisas até agora, talvez reconsidere a tempo a minha opinião sobre a linguagem MQL5.
Preciso de saber o tempo da última posição fechada na história do comércio.
O código que escrevi vai funcionar na MQL5, embora tenha ligado a bibliotecafxsaber, o código mt4 ainda funciona, mas a questão permanece, não posso fazer a função OrderCloseTime() na MQL5? No entanto, é melhor desistir. Tenho mais uma pergunta para os criadores. Não tenho de responder. Li a história no ramo. Até agora não compreendi muitas coisas, talvez reconsidere a tempo a minha opinião sobre a linguagem MQL5.
É simples. Basta lê-lo primeiro, depois tirar conclusões :)
Preciso de saber o tempo da última posição fechada na história do comércio.
O código que escrevi vai funcionar na MQL5, embora tenha ligado a bibliotecafxsaber, o código mt4 ainda funciona, mas a questão permanece, não posso fazer a função OrderCloseTime() na MQL5? No entanto, é melhor desistir. Tenho mais uma pergunta para os criadores. Não tenho de responder. Li a história no ramo. Ainda não compreendo muitas coisas, talvez reconsidere a tempo a minha opinião sobre a linguagem MQL5.
Utilizar um método muito simples (especialmente porque em 99% das contas de cobertura o tipo de negócio é "saída do mercado" - isto é o fecho da posição).
Transacção de captura onlineTRADE_TRANSACTION_DEAL_ADD- adicionar transacção ao histórico, verificar se foi COMPRA ou VENDA, verificar se foi uma transacção de saída do mercadoDEAL_ENTRY_OUT
Fórum sobre Comércio, Sistemas de Comércio Automatizados e Testes de Estratégia
Perguntas de principiantes MQL5 MT5 MetaTrader 5
MrBrooklin, 2019.09.09 09 09:50
Bom dia a todos e grandes lucros!
Gerado um simples Expert Advisor usando o VQL5 Wizard, o código é dado abaixo. Ajude-me a compreender porque é que a função "Expiração de ordens pendentes (em barras)" não funciona, traduzida como "Expiração de ordens pendentes (em barras)". Defino quaisquer valores de Sinal_Expiração de 1 a 1000, mas a ordem pendente ainda existe apenas dentro de uma barra. Também anexar definições de parâmetros.
Para testes, estou a utilizar uma conta demo no terminal Metatrader 5, construir 2136.
Atenciosamente, Vladimir.