função de cálculo automático de tamanho de lote? - página 4

 

O arquivo de inclusão está na pasta de arquivos correta?

 
Antonsan:

É um bug que só me aconteceu a mim?
Não posso compilar nenhum arquivo com o MetaEditor mq4 se eu colocar uma linha com # include.
Nem fui capaz de compilar arquivos mq4 que tenham uma linha # include no código.
Somente habilita linhas
# Incluir <stderror.mqh>
# Incluir <stdlib.mqh>
# Incluir <WinUser32.mqh>

Além do posto de phillip:

SE acima é o que você tem em código... por favor, considere a leitura cuidadosa dos documentos de linguagem.

SEM espaço em branco entre # e inclua

SEM maiúsculas I... usar minúsculas i

 

No arquivo Analyze Currency, parece que tenho um problema com o método SymbolType().

Eu estou negociando CADJPY, minha moeda de conta() é USD, mas ela sempre retorna SymbolType = 6.

As razões são que MarketInfo("USDJPY", MODE_LOTSIZE) sempre retorna 0.

Eu só posso obter o LOT_SIZE para o gráfico atual. ex. MarketInfo("CADJPY", MODE_LOTSIZE) funciona bem.

Isto é um problema com MetaTrader, como não consigo obter outras propriedades de pares?

 

Que corretor você está usando a Ricotter? Eles oferecem USDJPY para você negociar?

Apenas para confirmar que seu código está implementado corretamente, você deve baixar FXDD e abrir uma conta demo e tentar seu código em CADJPY. Ele deve funcionar se você tiver os arquivos incluídos configurados corretamente.

 
1005phillip:

Que corretor você está usando a Ricotter? Eles oferecem USDJPY para você negociar?

Apenas para confirmar que seu código está implementado corretamente, você deve baixar a FXDD e abrir uma conta demo e tentar seu código no CADJPY. Deve funcionar se você tiver os arquivos incluídos configurados corretamente.

Eu acabei de fazer mais alguns testes. Tirei tudo, e na função de início() apenas adicionei a chamada MarketInfo. No comércio ao vivo, funciona bem, mas quando uso o testador, ele retorna 0 para qualquer coisa que não seja o símbolo em que estou executando o teste.

Vou testá-lo com a FXDD, obrigado.

 
Ricotter:

Eu acabei de fazer mais alguns testes. Tirei tudo, e na função de início() apenas adicionei a chamada MarketInfo. No comércio ao vivo, funciona bem, mas quando uso o testador, ele retorna 0 para qualquer coisa que não seja o símbolo em que estou executando o teste.

Vou testá-lo com a FXDD, obrigado.

A mesma coisa com a FXDD. Se eu tentar chamar MarketInfo("USDJPY", MODE_LOTSIZE) enquanto estiver rodando o testador contra o par CADJPY, ele retorna 0. Eu até baixei o histórico para USDCAD e USDJPY.

 
Ricotter:

A mesma coisa com a FXDD. Se eu tentar chamar MarketInfo("USDJPY", MODE_LOTSIZE) enquanto estiver rodando o testador contra o par CADJPY, ele retorna 0. Eu até baixei o histórico para USDCAD e USDJPY.

MarketInfo() funciona apenas para o símbolo testado no Testador. Veja todas as limitações do Testador aqui -> https://www.mql5.com/en/articles/1512.
 
gordon:
MarketInfo() funciona apenas para o símbolo testado no Testador. Veja todas as limitações do Testador aqui -> https://www.mql5.com/en/articles/1512.

Obrigado!

 

O código fará várias coisas por você, é um símbolo() agnóstico, e calculará os lotes máximos a serem tomados para uma posição com base no patrimônio que você está disposto a arriscar e no preço de perda. Uma vez que você tenha esse valor de loteamento, ele também pode calcular para você o potencial de lucro com base no seu preço de takeprofit.

Ele também calcula os cruzamentos corretamente, que é o que você estava procurando... no entanto, você precisa estar ciente de que não pode fazer um backtest correto nos cruzamentos por causa de uma limitação fundamental do design do backtester do MT4, que impede seu EA de acessar os dados históricos de preços de outros pares de moedas durante o backtest. Na prática, o que isto significa é que todas as avaliações monetárias que vêm da negociação de pares cruzados em um backtest estão fundamentalmente erradas, significando que o lucro/perda das próprias negociações quando convertidas na moeda da conta pelo backtester estão simplesmente erradas.

O código que liguei para calculá-las corretamente, analiticamente, sem atalhos. Mas eles não podem ser usados no backtesting em cruzamentos porque o código tentará calcular corretamente as avaliações do mercado e o backtester o impedirá de fazê-lo e como tal, o código simplesmente retornará alertas de erro (como seria na vida real em testes futuros se o corretor, de alguma forma, quebrasse suas definições de moeda).

 
1005phillip:

O código fará várias coisas por você, é um símbolo() agnóstico, e calculará os lotes máximos a serem tomados para uma posição com base no patrimônio que você está disposto a arriscar e no preço de perda. Uma vez que você tenha esse valor de loteamento, ele também pode calcular para você o potencial de lucro com base no seu preço de takeprofit.

Ele também calcula os cruzamentos corretamente, que é o que você estava procurando... no entanto, você precisa estar ciente de que não pode fazer um backtest correto nos cruzamentos por causa de uma limitação fundamental do design do backtester do MT4, que impede seu EA de acessar os dados históricos de preços de outros pares de moedas durante o backtest. Na prática, o que isto significa é que todas as avaliações monetárias que vêm da negociação de pares cruzados em um backtest estão fundamentalmente erradas, significando que o lucro/perda das próprias negociações quando convertidas na moeda da conta pelo backtester estão simplesmente erradas.

O código que liguei para calculá-las corretamente, analiticamente, sem atalhos. Mas eles não podem ser usados no backtesting em cruzamentos porque o código tentará calcular corretamente as avaliações do mercado e o backtester o impedirá de fazê-lo e como tal, o código simplesmente retornará alertas de erro (como seria na vida real em testes futuros se o corretor, de alguma forma, quebrasse suas definições de moeda).

Esse cara faz isso usando o histórico do arquivo.

https://www.mql5.com/en/articles/1493