Erro ao abrir posição de compra ou venda

 

Boa tarde.

Estou tentando abrir uma posição de compra/venda através do EA e recebo o seguinte erro:

Error opening BUY position by INDM18 : '(null)'

Alguém poderia me ajudar.

Grato

 
spadua:

Boa tarde.

Estou tentando abrir uma posição de compra/venda através do EA e recebo o seguinte erro:

Error opening BUY position by INDM18 : '(null)'

Alguém poderia me ajudar.

Grato

spadua, você está utilizando a classe CTrade, ou as estruturas MqlTradeRequest e MqlTradeResult para enviar essa ordem? Provavelmente, vc não está utilizando o '_Symbol' no lugar requisitado!

Att.,

rafael

 
rafaelfvcs:

spadua, você está utilizando a classe CTrade, ou as estruturas MqlTradeRequest e MqlTradeResult para enviar essa ordem? Provavelmente, vc não está utilizando o '_Symbol' no lugar requisitado!

Att.,

rafael

Oi Rafaelvcs, na verdade estou aprendendo a liguagem e tenho algumas dificuldades. Estou usando o comando abaixo:

if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_SELL,InpLots,price,tp,sl))


obrigado pela ajuda

 
spadua:

Boa tarde.

Se você exibir a descrição do erro fica mais fácil.

        ResetLastError();
	m_trade.PositionOpen(Symbol(),ORDER_TYPE_SELL,InpLots,price,tp,sl)
        if(_LastError!=0 || (m_trade.ResultRetcode()!=10009 && m_trade.ResultRetcode()!=10008))
        {
         Alert(__FUNCTION__+": Erro ao emitir PositionOpen(SELL) ",_LastError," Result: ",m_trade.ResultRetcodeDescription());
         return;       
	}


 
Rogerio Giannetti Torres:

Oi Rogerio obrigado ai pela ajuda. Está dando erro na compilação na linha Alert(__FUNCTION__+": Erro ao emitir PositionOpen(SELL) ",_LastError," Result: ",cTrade.ResultRetcodeDescription());

'ctrade' - undeclared identifier

 
spadua:

Oi Rogerio obrigado ai pela ajuda. Está dando erro na compilação na linha Alert(__FUNCTION__+": Erro ao emitir PositionOpen(SELL) ",_LastError," Result: ",cTrade.ResultRetcodeDescription());

'ctrade' - undeclared identifier

Altere para o nome da classe que você instanciou. (m_trade ?)

 
Rogerio Giannetti Torres:

Altere para o nome da classe que você instanciou. (m_trade ?)

Caraca Rogerio como é duro ser novato. Agora deu erro no Return após o Alert.

'return' - function must return a value

 
spadua:

Caraca Rogerio como é duro ser novato. Agora deu erro no Return após o Alert.

'return' - function must return a value

È assim mesmo,  tem que estudar mais.  

 
spadua:

Caraca Rogerio como é duro ser novato. Agora deu erro no Return após o Alert.

'return' - function must return a value

Quando retorna esse erro é pq o seu metodo não requer um return que nem no exemplo do Rogerio, o return é obrigatório quando vc tem um método void por exemplo que seja usado para copiar os valores de uma barra. Pelo que deu para entender essa sua validação esta no meio do código e com isso não é necessário o return. Abaixo a documentação do operador RETURN.


https://www.mql5.com/pt/docs/basis/operators/return

Documentação sobre MQL5: Elementos Básicos da Linguagem / Operadores / Operador return
Documentação sobre MQL5: Elementos Básicos da Linguagem / Operadores / Operador return
  • www.mql5.com
Elementos Básicos da Linguagem / Operadores / Operador return - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
Rogerio Giannetti Torres:

È assim mesmo,  tem que estudar mais.  

É verdade! Consegui compilar sem erro.

A msg que recebo é essa:

2018.06.13 18:23:31.481 2018.05.04 14:15:00   Alert: CSampleExpert::ShortOpened: Erro ao emitir PositionOpen(SELL) 4756 Result: invalid stops


Para qualquer valor de stop loss que eu coloco recebo o mesmo erro.


 

spadua:


Para qualquer valor de stop loss que eu coloco recebo o mesmo erro.


Tem regras né.  O valor de SL e TP tem que atender  ao  Tick Size do instrumento, atender ao nível de stops e a regra de valores, para o caso SELL:     SL  > PRICE > TP