A BTG infelizmente reinventou uma roda quadrada... Certamente a definição do _POINT não é 1. Mas tem solução e é bem simples, use a função NormalizePrice da classe de negociação CSymbolInfo.
...
#include <Trade\SymbolInfo.mqh> CSymbolInfo cSymbol;
...
cSymbol.Name(_Symbol);
cSymbol.Refresh();
´´´
...
requisicao.sl = cSymbol.NormalizePrice(Ask - SL);
requisicao.tp = cSymbol.NormalizePrice(Ask + TK);
A BTG infelizmente reinventou uma roda quadrada... Certamente a definição do _POINT não é 1. Mas tem solução e é bem simples, use a função NormalizePrice da classe de negociação CSymbolInfo.
Grande Rogério, tudo bem?
implementei a tua ideia e agora as ordens estão sendo executadas só porém o TP e o SL estão ficando um pouco imprecisos ou devo ter feito algo errado...
Gain: R$ 13,00
Loss: R$ 54,00
Estou operando com 1 Ctt TP de 50 e SL de 250..
ZeroMemory(requisicao); ZeroMemory(resposta); cSymbol.Name(_Symbol); cSymbol.Refresh(); //--- Cacacterísticas da ordem de Compra requisicao.action = TRADE_ACTION_DEAL; // Executa ordem a mercado requisicao.magic = magic_number; // Nº mágico da ordem requisicao.symbol = _Symbol; // Simbolo do ativo requisicao.volume = num_lots; // Nº de Lotes requisicao.price = NormalizeDouble(tick.ask,_Digits); // Preço para a compra tick.ask original requisicao.sl = cSymbol.NormalizePrice(tick.ask - SL); // Preço Stop Loss requisicao.tp = cSymbol.NormalizePrice(tick.ask + TK); // Alvo de Ganho - Take Profit requisicao.deviation = 0; // Desvio Permitido do preço requisicao.type = ORDER_TYPE_BUY; // Tipo da Ordem requisicao.type_filling = ORDER_FILLING_FOK; // Tipo deo Preenchimento da ordem
Estou fazendo algo errado? O resultado correto seria R$ 10,00 de Gain e R$ 50,00 de Loss...
Não tem nada errado, está acontecendo desvio preço, pois os SL/TP DA POSIÇÃO são gatilhos que disparam uma ordem a mercado.
Obs: FILLING_FOK não é permitido para FUTUROS em outras corretoras.Não tem nada errado, está acontecendo desvio preço, pois os SL/TP DA POSIÇÃO são gatilhos que disparam uma ordem a mercado.
Obs: FILLING_FOK não é permitido para FUTUROS em outras corretoras.hummm entendi então o correto seria ORDER_FILLING_IOC ???
Abraço e obrigado....

- 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
Bom dia Pessoal, tudo bem?
Tenho um EA operando mini índice normalmente na Rico sem problemas mas quando coloco ele para operar na BTG Pactual ele não consegue enviar ordens ele mostra o erro abaixo:
2022.09.30 09:05:55.132 Trades '1672127': failed exchange buy 1 WINV22 at 108210.00 sl: 108207.50 tp: 108210.50 [Invalid stops]
O SL é uma variável do tipo double e input através de parâmetro hoje esta em 250 pontos de Loss.
Minhas ordens estão construídas assim:
Pelo que pude observar ele não esta considerando os 250 pontos apenas 25 só não sei como resolver isso.....
Alguém tem alguma sugestão?
Brigadoooooo !!!!