Durante a noite reparei numa coisa muito estranha, a hora de início do bar é reflectida com um erro - o erro foi de mais de um minuto. Agora quero verificá-lo e fiz um indicador de teste
#property indicator_chart_windowdatetime old_time=0;
int MaxBars=10; // ограничение //+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit() {return(0);}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& spread[])
{
if(rates_total<10) return(0); // ничего не считаем и ничего не рисуем на графике int start_pos, // точка старта
count_tick;
MqlDateTime str1,str2;
if(prev_calculated==0)
{
old_time=0;
count_tick=0;
start_pos=rates_total-3;
}
else start_pos=prev_calculated-1;
//--- расчет for(int i=start_pos;i<rates_total;i++)
{
TimeToStruct(TimeCurrent(),str1); // время сервераTimeToStruct(time[i], str2); // время бара if(str1.min!=str2.min) {
// Сбой - тик принадлежит не своему бару
count_tick++;
Print("тик №=",count_tick," i=", i," c=",close[i]," time[i]=",time[i]," time=",TimeCurrent()," delta=",str1.sec);
}
} // end for(...return(rates_total);
}
Os dois primeiros tiquetaques são claros, é um começo indicador. Mas os próximos .... Acontece que existe um novo bar de acordo com o tempo do servidor, enquanto este tick pertence ao antigo bar. À noite, este delta é um pesadelo...
A questão para os criadores é um bug ? ou foi concebido assim?
Z.I. enquanto escreve isto é o que aparece no diário de bordo
Durante a noite reparei numa coisa muito estranha, a hora de início do bar é reflectida com um erro - o erro foi de mais de um minuto. Agora decidi verificá-lo e criei um indicador de teste
Se adicionar taxas_total à saída, verá que ocorrem erros ao comparar os minutos actuais com os minutos da barra anterior.
Os parâmetros abrir[], alto[], baixo[] e fechar[] contêm matrizes com os preços de abertura, máximo, mínimo e fecho do período de tempo actual. Parâmetro tempo[] contém um conjunto de valores de tempo aberto, parâmetro spread[] contém um conjunto com o histórico de spreads (se for especificado um spread para um instrumento comercial). Os parâmetros volume[] e tick_volume[] contêm a história do comércio e do volume do tick, respectivamente.
Durante a noite reparei numa coisa muito estranha, a hora de início do bar é reflectida com um erro - o erro foi de mais de um minuto. Decidi verificá-lo agora e fiz um indicador de teste
Os dois primeiros tiquetaques são claros, é um começo indicador. Mas os próximos .... Acontece que existe um novo bar de acordo com o tempo do servidor, enquanto este tick pertence ao antigo bar. À noite, este delta é um pesadelo...
Pergunta aos criadores, é um bug ou foi concebido dessa forma?
Z.I. enquanto escreve isto é o que aparece no diário de bordo
Já está. Obrigado. Fiz uma verificação dentro do laço.
if(old_time<time[i])
{
Print("НОВЫЙ бар");
old_time=time[i];
//...
}
// а нужно вот такif(old_time<time[rates_total-1]) // работаем только по завершенным барам
{
Print("НОВЫЙ бар");
old_time=time[rates_total-1];
//...
}
Na altura do novo bar i ainda não mudou. Não económico, os mesmos dados são repetidamente calculados. Embora...
é esta situação https://book.mql4.com/ru/samples/icustom fig.119 excluída na MQL5 se não ? e este modelo de indicador sempre sairá sempre bem próximo ? ou existem algumas armadilhas ?
inputint MaxBars=240;
datetime old_time=0;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit() {return(0);}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& spread[])
{
//---if(prev_calculated==0)
{
//... расчитать историю//...
old_time=time[rates_total-1];
}
// работаем только по завершенным барамif(old_time<time[rates_total-1])
{
old_time=time[rates_total-1];
Print("НОВЫЙ бар close[1]=", close[rates_total-2]);
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
sergey1294: Quando começo a executar a minha EA, todo o terminal cai no testador, mas se o coloco num gráfico, tudo está bem.
Está provado pela experiência que cerca de 110 parâmetros podem ser digeridos (e há questões). Com 120, o terminal trava se o Expert Advisor for especificado no testador.
Já dei algumas soluções em privado, mas se algo acontecer, podem também perguntar aos criadores. Acho que eles podem ajudar com esta limitação.
Está provado pela experiência que cerca de 110 parâmetros podem ser digeridos (e há questões). A 120 o terminal cai se o Expert Advisor for especificado no testador.
Já dei algumas soluções em privado, mas se alguma coisa, pode perguntar aos programadores. Acho que eles podem ajudar com esta limitação.
estranho, é claro, que tal restrição afecte o testador. Em quad, por exemplo, não existe tal problema
Está provado pela experiência que cerca de 110 parâmetros podem ser digeridos (e há questões). A 120 o terminal cai se o Expert Advisor for especificado no testador.
Já dei algumas soluções em privado, mas se alguma coisa, pode perguntar aos criadores. Acho que eles podem ajudar com esta limitação.
stringo: Um máximo de 64 parâmetros pode ser optimizado.
Optimizar 64 e utilizar aproximadamente 110 no testador (sem optimização). Embora 110, claro, já seja um "pesadelo" de parâmetros para o Conselheiro Especialista (mas acontece)...
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.
Durante a noite reparei numa coisa muito estranha, a hora de início do bar é reflectida com um erro - o erro foi de mais de um minuto. Agora quero verificá-lo e fiz um indicador de teste
Registo2010.06.18 10:42:03 prov_tick (EURUSD,M1) tick #=6 i=50558 c=1.23797 time[i]=2010.06.18 08:41:00 time=2010.06.18 08:42:05 delta=5
2010.06.18 10:40:59 prov_tick (EURUSD,M1) tick #=5 i=50557 c=1.23848 time[i]=2010.06.18 08:40:00 time=2010.06.18 08:41:01 delta=1
2010.06.18 10:40:01 prov_tick (EURUSD,M1) tick #=4 i=50556 c=1.23862 time[i]=2010.06.18 08:39:00 time=2010.06.18 08:40:04 delta=4
2010.06.18 10:39:03 prov_tick (EURUSD,M1) tick #=3 i=50555 c=1.23881 time[i]=2010.06.18 08:38:00 time=2010.06.18 08:39:05 delta=5
2010.06.18 10:38:30 prov_tick (EURUSD,M1) tick#2 i=50554 c=1.23859 time[i]=2010.06.18 08:37:00 time=2010.06.18 08:38:31 delta=31
2010.06.18 10:38:30 prov_tick (EURUSD,M1) tick#1 i=50553 c=1.23858 time[i]=2010.06.18 08:36:00 time=2010.06.18 08:38:31 delta=31
Os dois primeiros tiquetaques são claros, é um começo indicador. Mas os próximos .... Acontece que existe um novo bar de acordo com o tempo do servidor, enquanto este tick pertence ao antigo bar. À noite, este delta é um pesadelo...
A questão para os criadores é um bug ? ou foi concebido assim?
Z.I. enquanto escreve isto é o que aparece no diário de bordo
2010.06.18 10:45:09 prov_tick (EURUSD,M1) tick #=9 i=50561 c=1.23787 time[i]=2010.06.18 08:44:00 time=2010.06.18 08:45:12 delta=12
Durante a noite reparei numa coisa muito estranha, a hora de início do bar é reflectida com um erro - o erro foi de mais de um minuto. Agora decidi verificá-lo e criei um indicador de teste
Se adicionar taxas_total à saída, verá que ocorrem erros ao comparar os minutos actuais com os minutos da barra anterior.
Isto é, tempo[taxas_total-2].
Além disso, a saída do delta não é totalmente clara.
https://www.mql5.com/ru/docs/basis/function/events#oncalculate diz:
Os parâmetros abrir[], alto[], baixo[] e fechar[] contêm matrizes com os preços de abertura, máximo, mínimo e fecho do período de tempo actual. Parâmetro tempo[] contém um conjunto de valores de tempo aberto, parâmetro spread[] contém um conjunto com o histórico de spreads (se for especificado um spread para um instrumento comercial). Os parâmetros volume[] e tick_volume[] contêm a história do comércio e do volume do tick, respectivamente.
Durante a noite reparei numa coisa muito estranha, a hora de início do bar é reflectida com um erro - o erro foi de mais de um minuto. Decidi verificá-lo agora e fiz um indicador de teste
Registo2010.06.18 10:42:03 prov_tick (EURUSD,M1) tick #=6 i=50558 c=1.23797 time[i]=2010.06.18 08:41:00 time=2010.06.18 08:42:05 delta=5
2010.06.18 10:40:59 prov_tick (EURUSD,M1) tick #=5 i=50557 c=1.23848 time[i]=2010.06.18 08:40:00 time=2010.06.18 08:41:01 delta=1
2010.06.18 10:40:01 prov_tick (EURUSD,M1) tick #=4 i=50556 c=1.23862 time[i]=2010.06.18 08:39:00 time=2010.06.18 08:40:04 delta=4
2010.06.18 10:39:03 prov_tick (EURUSD,M1) tick #=3 i=50555 c=1.23881 time[i]=2010.06.18 08:38:00 time=2010.06.18 08:39:05 delta=5
2010.06.18 10:38:30 prov_tick (EURUSD,M1) tick #=2 i=50554 c=1.23859 time[i]=2010.06.18 08:37:00 time=2010.06.18 08:38:31 delta=31
2010.06.18 10:38:30 prov_tick (EURUSD,M1) tick #1 i=50553 c=1.23858 time[i]=2010.06.18 08:36:00 time=2010.06.18 08:38:31 delta=31
Os dois primeiros tiquetaques são claros, é um começo indicador. Mas os próximos .... Acontece que existe um novo bar de acordo com o tempo do servidor, enquanto este tick pertence ao antigo bar. À noite, este delta é um pesadelo...
Pergunta aos criadores, é um bug ou foi concebido dessa forma?
Z.I. enquanto escreve isto é o que aparece no diário de bordo
2010.06.18 10:45:09 prov_tick (EURUSD,M1) tick #=9 i=50561 c=1.23787 time[i]=2010.06.18 08:44:00 time=2010.06.18 08:45:12 delta=12
Tente testar como se segue. Sem loop.
Mais adiante sobre o texto.
Tente verificar como se segue. Sem ciclo.
A seguir no texto.
Já está. Obrigado. Fiz uma verificação dentro do laço.
Na altura do novo bar i ainda não mudou. Não económico, os mesmos dados são repetidamente calculados. Embora...
é esta situação https://book.mql4.com/ru/samples/icustom fig.119 excluída na MQL5 se não ? e este modelo de indicador sempre sairá sempre bem próximo ? ou existem algumas armadilhas ?
P.S. obrigado pela ciênciaQuando começo a executar a minha EA, todo o terminal cai no testador, mas se o coloco num gráfico, tudo está bem.
Está provado pela experiência que cerca de 110 parâmetros podem ser digeridos (e há questões). Com 120, o terminal trava se o Expert Advisor for especificado no testador.
Já dei algumas soluções em privado, mas se algo acontecer, podem também perguntar aos criadores. Acho que eles podem ajudar com esta limitação.
Está provado pela experiência que cerca de 110 parâmetros podem ser digeridos (e há questões). A 120 o terminal cai se o Expert Advisor for especificado no testador.
Já dei algumas soluções em privado, mas se alguma coisa, pode perguntar aos programadores. Acho que eles podem ajudar com esta limitação.
agora as citações de fim-de-semana não estão a chegar. executar o guião
Print(TimeCurrent());
resultado
2010.06.20 00:26:06 00 (USDJPY,M1) 2010.06.18 22:35:52
embora o último bar tenha a hora 2010.06.18 23:00:00
parece estranho, muito inconveniente testar a correcção de algumas funções.
Falta o botão "Aplicar" na janela de definições do indicador.
Está provado pela experiência que cerca de 110 parâmetros podem ser digeridos (e há questões). A 120 o terminal cai se o Expert Advisor for especificado no testador.
Já dei algumas soluções em privado, mas se alguma coisa, pode perguntar aos criadores. Acho que eles podem ajudar com esta limitação.
Um máximo de 64 parâmetros pode ser optimizado.