Olá!
Por favor, poderia me dar um exemplo de uma função para calcular o resultado de uma operação usando MQL4?
Exemplo de uma Ordem de Compra no XAU/USD:
Preço de Abertura da Ordem: 2018.54
Preço de Fechamento da Ordem: 2021.06
Lote: 0.01
O Log do EA (Diario) do MT4 no Testador de Estratégia me mostrou o seguinte:
HORÁRIO MENSAGEM
2024.05.09 04:37:04.414 2024.01.27 00:30:00 HFP XAUUSD,M15: open #1 buy 0.01 XAUUSD at 2018.54 sl: 2014.43 tp: 2021.06 ok
Spread: 37 (Certo?)
O resultado apresentado pelo MT4 foi de 2.10 na Coluna Lucro. Mas não consigo chegar neste valor com os calculos que estou fazendo no meu EA.
Log do MT4 nos testes:
# | Horário | Tipo | Ordem | Tamanho | Preço | S / L | T / P | Lucro | Saldo |
1 2024.01.27 00:30 buy 1 0.01 2018.53 2014.57 2020.96 0.00 200.00
Poderiam por gentileza passar um exemplo de código para fazer isso?
Muito obrigado.
Olá!! Testei a função abaixo com algumas operações do meu histórico e parece funcionar bem (mas requer mais testes):
double OrderCalcProfit_MQL4(ENUM_ORDER_TYPE action, string symbol, double volume, double price_open, double price_close) { double tick_value, tick_size, profit; if(!SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE, tick_value) || !SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE, tick_size)) { Print(__FUNCTION__, " - Failed to execute SymbolInfoDouble(), error: ", GetLastError()); return(WRONG_VALUE); } profit = tick_value * volume * (MathAbs(price_open - price_close) / tick_size); return(NormalizeDouble((action == OP_BUY && price_close < price_open) || (action == OP_SELL && price_close > price_open) ? -profit : profit, 2)); }
No seu exemplo, o resultado foi o seguinte:
Print("Resultado: ", OrderCalcProfit_MQL4(OP_BUY, "XAUUSD", 0.01, 2018.54, 2021.06));
Acredito que essa diferença de 0,51 seja referente a swap (a posição ficou aberta alguns dias), comissão, ...
A matemática do mercado: lucro, prejuízo e custos
Evgeniy Ilin, 2022.11.24 08:59
Neste artigo, eu mostrarei como calcular o lucro ou prejuízo total de qualquer negociação, incluindo comissão e swap. Eu fornecerei o modelo matemático mais preciso e o usarei para escrever o código e compará-lo com o padrão. Além disso, eu também tentarei entrar na função principal da MQL5 para calcular o lucro e chegar ao fundo de todos os valores necessários da especificação.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá!
Por favor, poderia me dar um exemplo de uma função para calcular o resultado de uma operação usando MQL4?
Exemplo de uma Ordem de Compra no XAU/USD:
Preço de Abertura da Ordem: 2018.54
Preço de Fechamento da Ordem: 2021.06
Lote: 0.01
O Log do EA (Diario) do MT4 no Testador de Estratégia me mostrou o seguinte:
HORÁRIO MENSAGEM
2024.05.09 04:37:04.414 2024.01.27 00:30:00 HFP XAUUSD,M15: open #1 buy 0.01 XAUUSD at 2018.54 sl: 2014.43 tp: 2021.06 ok
Spread: 37 (Certo?)
O resultado apresentado pelo MT4 foi de 2.10 na Coluna Lucro. Mas não consigo chegar neste valor com os calculos que estou fazendo no meu EA.
Log do MT4 nos testes:
1 2024.01.27 00:30 buy 1 0.01 2018.53 2014.57 2020.96 0.00 200.00
Poderiam por gentileza passar um exemplo de código para fazer isso?
Muito obrigado.