Características da linguagem mql4, sutilezas e técnicas - página 18

 
Dmitry Rannev:

O problema foi descrito acima pela fxsaber. Estamos tentando encontrar a causa.

É assim que vai funcionar corretamente

NormalizeDouble(Price1 - Price2, _Digits) != 0.0;
 
Alexey Viktorov:

É assim que vai funcionar corretamente

Isto não é tentar resolver o problema de comparar as duplas. A tarefa é diferente.

 
Dmitry Rannev:

O problema foi descrito acima pela fxsaber. Estamos tentando encontrar a causa.

Bem, então o fxsaber respondeu corretamente - eu acrescentaria não usar Printf, usar printf e especificar a precisão desejada da saída de números { printf("Open: %.6f, Close: %.6f", OrderOpenPrice(), OrderClosePrice()); }

 
Ilya Malev:

Bem, então fxsaber respondeu corretamente - eu acrescentaria não usar printf, usar printf e especificar a precisão desejada da saída de números { printf("Open: %.6f, Close: %.6f", OrderOpenPrice(), OrderClosePrice()); }

Se você quiser entender exatamente qual é o problema, pergunte ao fxsaber o que o impede de escrever EAs normalmente. Estamos tentando, do lado do desenvolvedor do software do corretor, diminuir o problema. Não estamos procurando um problema com a escrita de EAs, estamos procurando um problema com o armazenamento de dados no histórico do servidor que impeça o fxsaber de escrever EAs.

 
Não ouvi dizer que o fxsaber foi impedido de escrever EAs corretamente, mas não importa, não importa :) Se meu comentário foi fora de tópico, perdão.
 
Dmitry Rannev:

...mas ao salvar dados no registro do servidor do comerciante, o que impede o fxsaber de escrever EAs.

Ah, é isso... E não conseguimos descobrir o que o está impedindo.
 
Alexey Navoykov:
Ah, aí está... E não conseguimos descobrir o que o está impedindo.

Foi que começou. E evoluiu para isto

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Preços não normalizados em MT4

fxsaber, 2019.02.20 23:03

Mas a situação é muito pior e, ao mesmo tempo, no MQ-Demo
// 15326434
// wmefo5sa
// MetaQuotes-Demo
void OnStart()
{
  const double Price1 = HistoryOrderSelect(356138100) ? HistoryOrderGetDouble(HistoryOrderGetTicket(0), ORDER_PRICE_CURRENT) : 0;
  const double Price2 = PositionSelectByTicket(356138100) ? PositionGetDouble(POSITION_PRICE_OPEN) : 0;  
  
  Print(Price1 - Price2); // -2.220446049250313e-16
}


O preço de abertura da posição atual não é igual ao preço de seu pedido/comércio.

 
fxsaber:
Características do ArrayResize para arrays multidimensionais

porque com o ArrayRange() você precisa obter o número de elementos na dimensão necessária, e você pode redimensionar apenas a 1ª dimensão de qualquer forma, por isso é mais lógico usar mql5

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Bichos, insetos, perguntas

Andrey Khatimlianskii, 2019.03.12 22:57

Será que o TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) (botão AutoTrade) afeta os EAs testados (MT4)?

Em 1170 ela afeta, diretamente com o botão que você pode controlar a negociação no testador. Estou chocado.

Fórum sobre Comércio, Sistemas Automatizados de Comércio e Testes de Estratégia

Bichos, insetos, perguntas

Vladimir Pastushak, 2019.03.13 19:12

Se seu código contém algo como

if(!TerminalInfoInteger (TERMINAL_TRADE_ALLOWED))
return;

O botão funciona.

Se não houver tal comando, então o botão não funciona.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Bichos, insetos, perguntas

Vladislav Andruschenko, 2019.03.13 19:14


Eu escrevi sobre isso há cerca de dois anos.


É exatamente o que é. É por isso que desabilitei as verificações de botão no testador de estratégia.





 

Acontece que é possível obter valores tampão de indicadores rodando em um gráfico (uso único do WinAPI).

Se sem DLL - quase em modo automático.