Erros, bugs, perguntas - página 2750

 
fxsaber:

Lamento, mas não o formulo bem.

Fiquei mais confuso com a sua ênfase inicial nas cordas, apesar de se tratar da função.

Se o teste tivesse sido feito com a cache de funções, teria sido muito mais claro

 
Sergey Dzyublik:

Como solução possível para o problema, os criadores sugerem a introdução de uma variável pré-definida:

E porque é que duas chamadas consecutivas num intervalo devem dar o mesmo resultado?

void f()
{
   MqlTick tick1, tick2; 
   SymbolInfoTick(Symbol(),tick1); //1
   /*вычисления*/
   SymbolInfoTick(Symbol(),tick2); //2
}
const MqlTick _Tick;
void f()
{
   MqlTick tick1, tick2; 
   tick1 = _Tick; //1
   /*вычисления*/
   tick2 = _Tick; //2
}
 
A100:

E porque é que duas chamadas consecutivas num intervalo devem dar o mesmo resultado?

Não deveriam. Mas para um teste a um personagem nativo, tudo bem.
 
A100:

E porque é que duas chamadas consecutivas num intervalo devem dar o mesmo resultado?

Porque estamos apenas a falar do Testador sem usar o Sono- 99% dos EAs.

Não sei de atrasos arbitrários do Testador, pois nunca vi este modo ser útil.

 
fxsaber:

Não posso dizer nada sobre os atrasos arbitrários do testador, pois nunca vi este modo ser útil.

Utilizei-o apenas para depurar as funções de trabalhar com encomendas

É bastante útil ver o quanto o gráfico do testador irá mudar a sua inclinação, ou seja, quanto a lógica de negociação de trabalhar com ordens de mercado "desfasamentos".

 
Sergey Dzyublik:

Um defeito no depurador ME(build 2370) - após ser accionado umponto de interrupção em vez de continuar a execução do código pressionando (F5), o mesmoponto de interrupçãoé efectivamente accionado novamentesem executar qualquer código.

Passos de repetição:
1) Definir manualmente
o ponto de quebra para ambas as linhas " arr.Add()";
2) Iniciar a depuração (F5);
3) Utilizar PCM para abrir o ficheiro <Generic\ArrayList.mqh> aninhado num novo separador.
4) Encontrar a linha "if(m_size==ArraySize(m_items))" na função "bool CArrayList::Add(T item)" e definiro ponto de quebra manualmente.
5) Enquanto estiver no separador "
ArrayList.mqh", continuar a executar o código (F5).

Isto
desencadeará o mesmoponto de quebra que antes, sem qualquer execução de código real.

Obrigado pela mensagem.

Corrigido por

 
fxsaber:

Porque estamos apenas a falar do Testador sem utilizar o Sono- 99% dos EAs.

Não posso dizer nada sobre atrasos arbitrários do Testador, pois nunca vi este modo ser útil.

Sem alterar nada fundamentalmente, é mais fácil fazer (o que, de facto, é o caso) essa gravação:

SymbolInfoTick( NULL, tick ); //1

significaria

SymbolInfoTick( Symbol(), tick ); //2

pelo menos não há dúvidas sobre a cópia de cordas

 
A100:

Sem alterar fundamentalmente nada, é mais fácil de fazer (o que de facto é) que a entrada

significaria

pelo menos a questão da cópia de linhas desaparece

não é o que ele pede. Ele precisa do acesso mais rápido à estrutura MqlTick em cada tic.

é uma espécie de paradoxo que haja acesso a _Symbol .... mas não tem acesso a

const MqlTick _Tick; // Текущий _Symbol-тик.

embora a linguagem MQL esteja posicionada como a linguagem para o desenvolvimento de estratégias comerciais.... Não sei que tipo de TS existe se não souber os preços actuais no tick actual

 
Igor Makanu:

pede algo mais no final, precisa do acesso mais rápido possível à estrutura do MqlTick em cada tick

E o que há de errado com

SymbolInfoTick( NULL, tick ); //1

não é suficientemente bom? Mostrar-me onde está o engarrafamento? Se também for lento, então os Desenvolvedores têm uma forma de inline/optimizar tal chamada - sem quaisquer mudanças fundamentais

 
A100:

O que é que não deve gostar

não é suficientemente bom? Se também for lento, então os Desenvolvedores têm uma forma de inline/optimizar tal chamada

sim é lento, pelo menos no testador, eu escrevo assim no testadorhttps://www.mql5.com/ru/forum/1111/page2749#comment_16487642

com um grande número de passagens de optimizador há um ganho


Não sei como explicar, não sei como explicar coisas elementares...

como é que se escreve EAs? - Compila uma biblioteca em estilo processual ou OOP, cada função é totalmente transferível para outro projecto, e para assegurar isto escreve Bid, Ask everywhere - o meu exemplo. Em seguida, monta-se uma estratégia comercial a partir dos espaços em branco. O que os criadores oferecem agora - escreva SymbolInfoDouble() em todo o lado