Estou a escrever um ToR para uma EA MT4 com prioridade no processamento acelerado de dados.
Por favor, informe se a sequência de cálculos ou amostragem (qual é o nome correcto - representativo?) é importante para acelerar o processo.
Estou a anexar duas variantes sob a forma de imagens mostrando diagramas de blocos.
Se puder, por favor escreva como deve ser o código se a execução selectiva dos blocos for - um layout puramente primitivo, e isto dará um aumento significativo de velocidade!
voidOnStart()
{
uchar max=0;
for(int t=0;t<LONG_MAX;t++) {max++;} //так получаем предупреждение expression is always true, цикл работаетfor(int t=0;t<LONG_MAX+1;t++) {max++;} //так предупреждение есть, но цикл не работаетfor(int t=0;t<ULONG_MAX;t++) {max++;} //так нет предупреждения и цикл не пашетPrint("Done!");
}
voidOnStart()
{
uchar max=0;
for(int t=0;t<ULONG_MAX-1 e0;t++) {max++;} //так цикл работает, предупреждения нет так как ULONG_MAX-1e0 имеет тип doublefor(int t=0;t<ULONG_MAX-1;t++) {max++;} //а так нет и предупреждения тоже нетPrint("Done!");
}
for(int t=0;t<ULONG_MAX-1;t++) {max++;} //а так нет и предупреждения тоже нет
Não há aqui nenhum erro, porque ULONG_MAX-1< 0, ou seja, a operação de comparação é convertida em int ou longo - mais precisamente, há uma comparação bitwise
Estou a escrever um ToR para uma EA MT4 com prioridade no processamento acelerado de dados.
Por favor, informe se a sequência de cálculos ou amostragem (qual é o nome correcto - representativo?) é importante para acelerar o processo.
Estou a anexar duas variantes sob a forma de imagens mostrando diagramas de blocos.
Se puder, por favor escreva como deve ser o código se a execução selectiva dos blocos for - um layout puramente primitivo, e isto dará um aumento significativo de velocidade!
Como é explicado este encerramento de uma posição no testador? É devido ao alargamento?
Capturas de ecrã da plataforma de negociação MetaTrader
EURUSD, M20, 2014.04.12
Alfa-Forex, MetaTrader 5, Real
temp_file_screenshot_63279.png
Como é explicado este encerramento de uma posição no testador? É o alargamento da propagação?
[img]https://charts.mql5.com/4/434/eurusd-m20-alfa-foreks-temp-file-screenshot-63279-png.png[/img]
Se o spread alargou (e a julgar pela imagem de ecrã - por 720 pontos! em cinco dígitos), então tudo está correcto.
A posição de venda fechou ao preço Ask. Isto se as paragens estivessem definidas.
A propósito, o seu corretorAlfa-Forexacaba de se espalhar gigantesco no final da semana e no início.
Provavelmente foram registados no histórico de cotações e o testador simulou a sua comercialização.
As paragens para o fim-de-semana são perigosas - de qualquer modo, não pouparão da diferença, e a propagação pode facilmente apanhá-lo.
Nenhum erro aqui porqueLONG_MAX+1< 0
Aqui o aviso é válido (t<LONG_MAX sempre verdadeiro se t int ) loop infinitoNão há erro porque ULONG_MAX-1< 0, porque a operação de comparação é reduzida a int
Então, como explicar isto:
Não há aqui nenhum erro porque ULONG_MAX-1< 0, ou seja, a operação de comparação é fundida para int ou longa
Refere-se à comparação na expressão testada no laço?
Porque não parece ser assim numa simples comparação.
Basta trocá-los :)
O que faz este rearranjo? t foi inferior ao ULONG_MAX-1 e ainda é.