Erros, bugs, perguntas - página 1400

 

Após actualizar para a nova construção(1178), ao carregar a EA no gráfico, recebo o seguinte erro no registo com a descarga do programa a partir do gráfico:

2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        00: 0x00000000028E1F21
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F37 C6467000          mov        byte [rsi+0x70], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F30 C686AD02000000    mov        byte [rsi+0x2ad], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F2E 7 CA0              jl         0x28e1ed0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F2C 39 C3              cmp        ebx, eax
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F26 8 B868B000000      mov        eax, [rsi+0x8b]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F24 FFC3              inc        ebx
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)           crash -->  00000000028 E1F21 FF5728            call       qword near [rdi+0x28]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        Access violation at 0x00000000028E1F21 read to 0x0000000D5D01E928 in 'D:\#MetaTrader\MetaTrader 5 Test\MQL5\Experts\#TestLibrary\Article02\TestLibrary.ex5'

//---

Tanto quanto percebi, esta situação ocorre quando se tenta esconder objectos gráficos usando o métodoCChartObject::Timeframes(OBJ_NO_PERIODS).

P.S. Embora não, o problema deve-se muito provavelmente a alguma outra razão. A tentar localizar, continuará em servicedesk, abriu uma aplicação.

 
transcendreamer:
o autor já está consciente disto e está a pensar muito sobre como poderia ter acontecido

o autor pensou bem e fixou este ponto, ele aparecerá na próxima actualização

a falha foi uma característica não gravada do corretor

 
construir 1178. Erro de compilação:'B' - desajuste do modelo
class A { template<typename T> A( T ) {} };
class B;
class B {};
Tudo estava bem antes
 
A100:
construir 1178. Erro de compilação:'B' - Desadequação de modelos
mas estava bem antes
Obrigado, vamos verificar isso.
 
Porque é que o evento OnTimer não é desencadeado nos indicadores chamados através do iCustom?
 
Ilya Malev:
Porque é que o evento OnTimer não é desencadeado em indicadores, chamados através do iCustom?
Arquitecturalmente, o evento do temporizador é um evento gráfico, portanto, neste caso, os indicadores não podem recebê-lo.
 
Anton:
Arquitecturalmente, o evento do temporizador é um evento gráfico, portanto, neste caso, os indicadores não podem recebê-lo.
Como posso programar o indicador, chamado via iCustom, desenhar (ou seja, provocar uma chamada OnCalculate), em caso de ausência de carraças (por exemplo, ao fim-de-semana)?
 
Se este indicador por sua vez chamar outros indicadores, então na primeira chamada automática da OnCalculate logo após deixar OnInit os dados destes indicadores não serão calculados, e além disso, o indicador não pode "esperar" pelo seu cálculo sem sair da OnCalculate. E não haverá próxima chamada da OnCalculate até ao fim do fim-de-semana, quando começam os primeiros carrapatos. Neste caso, nem o OnTimer, nem o OnChartEvent trabalham neste indicador para chamar a repintura quando os dados são recebidos. No final, a única forma que consigo ver - através de DLL para chamar "Refresh" no gráfico a partir do menu de contexto da janela - penso que os programadores não planearam este método para o trabalho normal de indicadores em MT5. Caso contrário, o utilizador terá de carregar neste botão até que o indicador seja apresentado, o que dificilmente o fará feliz.
 
Ilya Malev:
Se este indicador por sua vez chamar outros indicadores, então na primeira chamada automática do OnCalculate logo após sair do OnInit, os dados destes indicadores não serão calculados, e além disso, o indicador não poderá "esperar" pelo seu cálculo sem sair do OnCalculate. E não haverá próxima chamada da OnCalculate até ao fim do fim-de-semana, quando começam os primeiros carrapatos. Neste caso, nem o OnTimer, nem o OnChartEvent trabalham neste indicador para chamar a repintura quando os dados são recebidos. No final, a única forma que consigo ver - através de DLL para chamar "Refresh" no gráfico a partir do menu de contexto da janela - penso que os programadores não planearam este método para o trabalho normal de indicadores em MT5. Caso contrário, o utilizador terá de esperar em frente do gráfico premindo este botão até que o indicador seja apresentado, o que dificilmente o fará feliz.

Se para MT4:

isto não vai funcionar? https://www.mql5.com/ru/code/11678

ChartRefresh
ChartRefresh
  • votos: 11
  • 2014.08.13
  • Alexandr Bryzgalov
  • www.mql5.com
Скрипт для принудительно обновления текущего графика.
 
Alexandr Bryzgalov:
não funciona assim? https://www.mql5.com/ru/code/11678

Este guião é para MetaTrader 4 :)

No MT4 apenas todos os dados são calculados pelo terminal antes de serem recebidos em programas mql4