EA: Stops para o Mini indice DÓLAR

 

Estou enfrentando problemas para setar STOPs (Loss / Take Profit) quando estou operando com Mini indice DÓLAR.

Já pesquisei aqui no fórum e em outros lugares, inclusive tentei todas as formas de enviar a ORDEM.

Alguém tem alguma dica / solução / luz?

Já mudei o TYPE  / ACTION / Valores e etc do MqlTradeRequest, em outros ativos, funciona, porém como o mini-dólar é um contrato futuro, não consegui automatizar o envio da ordem com STOPs.

 

Obrigado.

 

Bom dia Raphael,

você poderia postar a porção de código que está enfrentando o problema e se possível qual o retorno quando você faz o envio da ordem?

Sem essas informações fica difícil alguém tentar te ajudar.

Um abraço,

Romeu.

 
Raphael Martins:

Estou enfrentando problemas para setar STOPs (Loss / Take Profit) quando estou operando com Mini indice DÓLAR.

Já pesquisei aqui no fórum e em outros lugares, inclusive tentei todas as formas de enviar a ORDEM.

Alguém tem alguma dica / solução / luz?

Já mudei o TYPE  / ACTION / Valores e etc do MqlTradeRequest, em outros ativos, funciona, porém como o mini-dólar é um contrato futuro, não consegui automatizar o envio da ordem com STOPs.

Olá Raphael Martins,

Qual problema exatamente você está enfrentando?

Por favor descreva um pouco melhor o problema para que possamos tentar ajudá-lo.

Abraços,
Malacarne 

 
// status de preços
valAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
valBid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
valPoint = SymbolInfoDouble(_Symbol, SYMBOL_POINT);

// ordem de compra
ZeroMemory(trReq);
ZeroMemory(trRez);
ZeroMemory(trChk);

trReq.volume = trade_volume;
trReq.symbol = _Symbol;
trReq.type == ORDER_TYPE_BUY;
trReq.price = NormalizeDouble(valAsk, valDigits);
if (stoploss)
  trReq.sl = NormalizeDouble(trReq.price - (stoploss*valPoint), valDigits);
else
  trReq.sl = 0;
if (takeprofit)
  trReq.tp = NormalizeDouble(trReq.price + (takeprofit*valPoint), valDigits);
else
  trReq.tp = 0;

trReq.type_filling = ORDER_FILLING_FOK;
trReq.type_time = ORDER_TIME_DAY;
trReq.action = TRADE_ACTION_PENDING;
ERROR 10016: Invalid Stops
Já mudeis as ACTIONS, TYPE_TIME, enfim... já tentei de todas as maneiras enviando uma ordem pendente ou não, com buy stop limit, sem buy stop limit, mudando o type filling... lendo outro post ai, vi que existe alguma coisa relacionada com o volume, que tem que ser múltiplo de 5? procede? se for isso, eu tenho que 'ajustar' o volume? Só acontece com mini-contratos Dólar, o mini-indice e/ou ativo normal funciona (com as devidas alterações nos parâmetros).
 
Raphael Martins:

Olá Raphael Martins,

Experimente substituir

valPoint = SymbolInfoDouble(_Symbol, SYMBOL_POINT);

por

valPoint = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

Nos diga se funcionou.

Abraços,
Malacarne

 
Rodrigo Malacarne:

Olá Raphael Martins,

Experimente substituir

por

Nos diga se funcionou.

Abraços,
Malacarne

Tive que mudar o ACTION da Requisição, mas parece que funcionou sim... :D, só irei dá uma revisada no código, pelo menos o erro sumiu e entrou a ordem com os STOPS (não os que informei no setup, mas isso é o de menos).

 

Muito obrigado.

trReq.action = TRADE_ACTION_DEAL;
Razão: