Gerei um simples Expert Advisor com VQL5 Wizard, o código está abaixo. Ajude-me por favor a descobrir porque é que a função "Expiração de encomendas pendentes (em barras)" não funciona. Defini 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();
}
//+------------------------------------------------------------------+
Funcionará para os criadores em vez de OrderCloseTime()?
A minha experiência na MQL5 é o quarto dia, mas já tive a minha dose!
Trazer de volta a função OrderCloseTime(), esta posição pode ser feita de alguma forma programática.... - ordem - depois troca - depois posição, ou é assim tão difícil calcular a posição por máquina?
Observar o comportamento não natural da plataforma.
1. ME5 não mantém as configurações de interface que estavam no lugar quando foi desligado. Em particular, o painel de ajustes desaparece. Pode ser restaurado, mas tem de ser feito de cada vez que é ligado.
2. Estou a fazer um indicador. A alteração das definições do indicador em MT5 conduz normalmente a uma falha: a forma das linhas muda significativamente, a cor não pode ser alterada, etc. Além disso, se alterar as definições num indicador recentemente instalado, tudo funciona como planeado.
Questões:
1. É impressão minha ou é um problema geral? 2. Se é algo que me está a faltar ou a fazer mal, por favor aconselhem-me.
Se não for muito incómodo, por favor corrija o código MQL4 para que funcione no ML5
Em primeiro lugar, é preciso escrever correctamente o sistema funciona. A forma mais fácil de o fazer é em MetaEditor 5 menu File - Create - Expert Advisor (modelo). Compare o seu código e o meu:
Funcionará para os criadores em vez de OrderCloseTime()?
A minha experiência na MQL5 é o quarto dia, mas já tive a minha dose!
Trazer de volta a função OrderCloseTime(), esta posição pode ser feita de alguma forma programática.... - ordem - depois troca - depois posição, ou é tão difícil calcular a posição por máquina?
O que é que quer obter exactamente? Precisa da hora da última transacção(tipo de "saída de mercado")? Ou quer saber a hora de fecho de uma posição na história do comércio?
Observar o comportamento não natural da plataforma.
1. ME5 não mantém as configurações de interface que estavam no lugar quando foi desligado. Em particular, o painel de ajustes desaparece. Pode ser restaurado, mas tem de o fazer de cada vez que o liga.
O painel de ajustes, é a minha advertência. Refiro-me à barra de ferramentas com botões, incluindo o Compile. (Eu disse "definições" por inércia - sou eu com o MT5 que também estou a lutar com o painel de definições de indicadores)
O painel de ajustes é a minha advertência. Refiro-me à barra de ferramentas, que tem botões, incluindo o Compile. (Eu disse "definições" por inércia - sou eu com o MT5 que também incomoda com o painel de definições dos parâmetros indicadores)
Build 2138 datado de 06.09.2019.
Por favor especifique em que equipamento isto está a acontecer:
Bom dia a todos e grandes lucros!
Gerei um simples Expert Advisor com VQL5 Wizard, o código está abaixo. Ajude-me por favor a descobrir porque é que a função "Expiração de encomendas pendentes (em barras)" não funciona. Defini 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.
Funcionará para os criadores em vez de OrderCloseTime()?
A minha experiência na MQL5 é o quarto dia, mas já tive a minha dose!
Trazer de volta a função OrderCloseTime(), esta posição pode ser feita de alguma forma programática.... - ordem - depois troca - depois posição, ou é assim tão difícil calcular a posição por máquina?
Boa tarde a todos!
Se não for muito incómodo, por favor corrija o código MQL4 para que funcione no ML5
Observar o comportamento não natural da plataforma.
1. ME5 não mantém as configurações de interface que estavam no lugar quando foi desligado. Em particular, o painel de ajustes desaparece. Pode ser restaurado, mas tem de ser feito de cada vez que é ligado.
2. Estou a fazer um indicador. A alteração das definições do indicador em MT5 conduz normalmente a uma falha: a forma das linhas muda significativamente, a cor não pode ser alterada, etc.
Além disso, se alterar as definições num indicador recentemente instalado, tudo funciona como planeado.
Questões:
1. É impressão minha ou é um problema geral?
2. Se é algo que me está a faltar ou a fazer mal, por favor aconselhem-me.
Boa tarde a todos!
Se não for muito incómodo, por favor corrija o código MQL4 para que funcione no ML5
Em primeiro lugar, é preciso escrever correctamente o sistema funciona. A forma mais fácil de o fazer é em MetaEditor 5 menu File - Create - Expert Advisor (modelo). Compare o seu código e o meu:
Quando o tiver corrigido, continuaremos...Funcionará para os criadores em vez de OrderCloseTime()?
A minha experiência na MQL5 é o quarto dia, mas já tive a minha dose!
Trazer de volta a função OrderCloseTime(), esta posição pode ser feita de alguma forma programática.... - ordem - depois troca - depois posição, ou é tão difícil calcular a posição por máquina?
O que é que quer obter exactamente? Precisa da hora da última transacção(tipo de "saída de mercado")? Ou quer saber a hora de fecho de uma posição na história do comércio?
Observar o comportamento não natural da plataforma.
1. ME5 não mantém as configurações de interface que estavam no lugar quando foi desligado. Em particular, o painel de ajustes desaparece. Pode ser restaurado, mas tem de o fazer de cada vez que o liga.
Quem é ME? Quem é o Painel de Ajustes?
Quem é ME? Quem é o painel de ajustes?
ME = MetaEditor.
O painel de ajustes, é a minha advertência. Refiro-me à barra de ferramentas com botões, incluindo o Compile.
Build 2138 datado de 06.09.2019.(Eu disse "definições" por inércia - sou eu com o MT5 que também estou a lutar com o painel de definições de indicadores)
ME = MetaEditor.
O painel de ajustes é a minha advertência. Refiro-me à barra de ferramentas, que tem botões, incluindo o Compile.
Build 2138 datado de 06.09.2019.(Eu disse "definições" por inércia - sou eu com o MT5 que também incomoda com o painel de definições dos parâmetros indicadores)
Por favor especifique em que equipamento isto está a acontecer:
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Insectos, insectos, perguntas
Vladimir Karputov, 2019.07.31 12:12
Especificar tais dados:
copiar três linhas do separador "Log" (seleccionar três linhas -> clique com o botão direito do rato -> Copiar)
e cole-o na sua mensagem. Deveria obter algo assim: