erro 4756 - página 2

 
angevoyageur:
Qual função, classes/método você está usando para enviar/modificar seus pedidos?
OrderSend() após a criação doMqlTradeRequest
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
RaptorUK:
OrderSend() após a configuração doMqlTradeRequest

Você já viu isto (da OrderSend doc) ?

Deve-se observar que a conclusão bem sucedida da operação do método OrderSend() nem sempre significa uma conclusão bem sucedida do negócio ao colocar uma ordem de mercado. Verifique o valor docódigo retcode contendo o código de retorno do servidor de negociação , e os valores do campo de negociação ou ordem, dependendo do tipo de operação noresultado retornado .


Seria mais fácil ajudar a ver o código.

 
angevoyageur:

Você já viu isto (da OrderSend doc) ?


Seria mais fácil ajudar a ver o código.

Eu verifico o resultado retornado e só tento colocar o SL & TP se ele retornar TRADE_RETCODE_PLACED ou TRADE_RETCODE_DONE

         if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
            {
            SetTPandSL = false;
            Print("Return code # ", result.retcode, " Bid ", result.bid, " Ask ", result.ask, " Deal price ", result.price);
            }
         else SetTPandSL = true;

         if(SetTPandSL && ECN)
            {
            // now modify Position to add SL & TP
            ZeroMemory(request);
            ZeroMemory(result);
            request.action = TRADE_ACTION_SLTP;                   // setting the TP & SL
            request.symbol = _Symbol;                             // symbol
            request.sl = lastTick.ask - SL_Size * _Point;        // Stop Loss
            request.tp = lastTick.ask + TP_Size * _Point;        // Take Profit  
            
            //--- send a trade request
            OrderSend(request,result);
            
            //--- write the server reply to log  
            Print(__FUNCTION__,": Placeing SL & TP ",result.comment, " Return code # ", result.retcode);  
            if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
               Print("Return code # ", result.retcode, " Bid ", lastTick.bid, " Ask ", lastTick.ask, " Deal price ", 
                  result.price, " SL: ", request.sl, " TP: ", request.tp, " Freeze: ", Freeze, " Stoplevel: ", Stop );
            }
 
RaptorUK:

Eu verifico o resultado retornado e só tento colocar o SL & TP se ele retornar TRADE_RETCODE_PLACED ou TRADE_RETCODE_DONE


Deve-se observar que a conclusão bem sucedida da operação do método OrderSend() nem sempre significa uma conclusão bem sucedida do negócio ao colocar uma ordem de mercado. Verifique o valor docódigo retcode contendo o código de retorno do servidor de negociação, e os valores do campo de negociação ou ordem, dependendo do tipo de operação noresultado retornado .

Você tem que verificar o número do bilhete de acordo :

  if( (result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE) || result.deal == 0) 

Esta não é a última palavra, se seu bilhete de negócio for 0, sua modificação do SL/TP não será executada de qualquer forma. Ainda procurando...


 
angevoyageur:

Você tem que verificar o número do bilhete de acordo :

Esta não é a última palavra, se seu bilhete de negócio for 0, sua modificação do SL/TP não será executada de qualquer forma. Ainda procurando...

Eu posso fazer isso, mas a questão é que a negociação foi bem sucedida e a posição foi aberta ... ainda quando eu tentei adicionar o SL & TP falhou com Paradas Inválidas mesmo não sendo inválidas. Parece que eu tenho que esperar que algo aconteça antes de poder enviar o pedido para definir o TP & SL ... mas eu realmente não sei qual é a coisa oficial e documentada que eu deveria estar esperando.

Obrigado pela resposta :-)

 
RaptorUK:

Posso fazer isso, mas a questão é que o comércio foi bem sucedido e a posição foi aberta . . ainda assim, quando tentei adicionar o SL & TP falhou com o Invalid Stops mesmo não sendo inválido. Parece que tenho que esperar que algo aconteça antes de poder enviar o pedido para definir o TP & SL . . mas não sei realmente qual é a coisa oficial, documentada, pela qual deveria estar esperando.

Obrigado pela resposta :-)

Eu sei. Estou verificando todo o site do mql5 para encontrar uma resposta :-D

Editar:

Não absolutamente nada neste site mostrando como colocar um sl / tp com um tipo demercado de execução comercial.

Na verdade, tenho o mesmo problema, mas usando o PositionOpen no lugar do OrderSend, também posso fazê-lo manualmente.

 
angevoyageur:

Eu sei. Estou verificando todo o site do mql5 para encontrar uma resposta :-D

Editar:

Não absolutamente nada neste site mostrando como colocar um sl / tp com um tipo demercado de execução comercial.

Na verdade, tenho o mesmo problema, mas usando o PositionOpen no lugar do OrderSend, também posso fazê-lo manualmente.

Eu encontrei. É um problema de sincronização entre seu EA e seu servidor comercial. Você tem que usar o gerenciador de eventos OnTradeTransaction().

O resultado da execução da solicitação de negociação em um servidor enviado pela função OrderSend() pode ser rastreado pelo manipulador da OnTradeTransaction. Deve-se observar que o manipulador da OnTradeTransaction será chamado várias vezes ao executar uma solicitação de operação.

Por exemplo, ao enviar uma ordem de compra de mercado, ela é tratada, uma ordem de compra apropriada é criada para a conta, a ordem é então executada e removida da lista de ordens abertas, então ela é adicionada ao histórico de ordens, uma transação apropriada é adicionada ao histórico e uma nova posição é criada. A função OnTradeTransaction será chamada para cada um desses eventos.

RTFM ;-) Experimente... amanhã para mim.
 
angevoyageur:

Eu encontrei. É um problema de sincronização entre seu EA e seu servidor comercial. Você tem que usar o gerenciador de eventos OnTradeTransaction().

RTFM ;-) Experimente...amanhã para mim.
Ahhhh, obrigado, darei uma olhada. :-)
 
RaptorUK:
Ahhhh, obrigado, darei uma olhada :-)
Foi este o fio que você encontrou?https://www.mql5.com/en/forum/10850 relata o mesmo problema que eu estou tendo
 

Minha EA está trazendo erros estranhos com o build 778. O volume de 0,1 está normalizado e claramente não é inválido.

2013.03.12 07:29:57 pivots (SILVER,M5) SILVER falhou ORDER_TYPE_SELL_STOP com volume 0.10; err# 4756 código de verificação: 10014 comentários: Volume inválido

2013.03.12 07:20:00 pivots (SILVER,M5) SILVER falhou ORDER_TYPE_SELL_STOP com volume 0.10; err# 4756 código devolvido: 10014, comentários do corretor: Volume inválido

Aqui está o código que o traz à tona

      ResetLastError();
      if(OrderCheck(_request,_check)){
         if(!OrderSend(_request,_result)){
            Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);
            return(false);}
         else{
            if(_result.retcode!=(0||TRADE_RETCODE_PLACED||TRADE_RETCODE_DONE)){
               Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);}}}
      else{
         Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," check code: ",_check.retcode," comments: ",_check.comment);
         return(false); }


Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
Razão: