Probema ao tentar fazer saída parcial (RetCode: 10004)

 

Olá Pessoal, sou novo nesta linguagem e estou empatado em um problema que é o seguinte:

EX: Meu Robô ao dar sinal, faz a execução de venda a mercado de 10ctt, eu preciso que ele saia na parcial de 6ctt em 100 pontos e depois 4ctt em 300 pontos. Mas ao chegar nas saídas parciais ele apresenta o seguinte erro:


Detalhe: Nas operações de compra funciona muito bem!!!!!

Pode ser algo tolo, mas já li a documentação e acho que não consegui interpretar. Segue Abaixo o código que estou usando para a venda e o código da saída parcial.

Fico muito agradecido se alguém der uma luz do que possa ser.


=============rotina da venda =========================

         if(trade.Sell(ctt,_Symbol,ultimotick.bid,StopLoss,ultimotick.bid-TP,0))

               {

                  Print("Venda Executada, Resultado RetCode: ",trade.ResultRetcode()," RetCodeDescr: ",trade.ResultRetcodeDescription());

               }

            else

               {

                  Print("Erro na Execução da Venda, Resultado RetCode: ",trade.ResultRetcode()," RetCodeDescr: ",trade.ResultRetcodeDescription());

               }


=============rotina para parcial =======================

void Parcial(double preco)

{
   for(int i = PositionsTotal()-1; i>=0; i--)
      {
         string symbol = PositionGetSymbol(i);
         ulong magico = PositionGetInteger(POSITION_MAGIC);

         if(_Symbol == symbol && magico == magicnumber)
            {
               ulong  positionticket = PositionGetInteger(POSITION_TICKET);
               double precoentrada   = PositionGetDouble(POSITION_PRICE_OPEN);
               int    ordenstot      = PositionGetDouble(POSITION_VOLUME);

               // ======= COMPRA =======
               if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
                  {
                     if(preco >= precoentrada+alvoparcial1 && (ordenstot == ctt))
                        {
                           if (trade.Sell(loteparcial1,_Symbol,preco,0,0,"Venda da 1ª Parcial"))
                              {
                                 Print("1ª Saida Parcial Executada, Resultado RetCode: ",trade.ResultRetcode()," RetCodeDescr: ",trade.ResultRetcodeDescription());
                              }
                           else
                              {
                                 Print("Erro na Execução da 1ª Saida Parcial, Resultado RetCode: ",trade.ResultRetcode()," RetCodeDescr: ",trade.ResultRetcodeDescription());
                              }
                        }
 
Rogelio Nonath:


Bom dia,

tem uma novidade aí, o modo de execução instantânea, mais comum em corretoras FOREX , neste caso você vai ter que definir uma tolerância para desvio de preço. 

No OnInit() use cTrade.SetDeviationInPoints( desvio ) onde desvio é a tolerância em POINTS para o preço.

Qual é a corretora?

 
Rogerio Giannetti Torres:

Bom dia,

tem uma novidade aí, o modo de execução instantânea, mais comum em corretoras FOREX , neste caso você vai ter que definir uma tolerância para desvio de preço. 

No OnInit() use cTrade.SetDeviationInPoints( desvio ) onde desvio é a tolerância em POINTS para o preço.

Qual é a corretora?

Bom dia Rogerio, obrigado pela ajuda, este Expert pretendo utilizar para operar na B3 o mini indice, a corretora que estou utilizando é a Modal.
 
Rogelio Nonath:
Bom dia Rogerio, obrigado pela ajuda, este Expert pretendo utilizar para operar na B3 o mini indice, a corretora que estou utilizando é a Modal.

Olá,

esquece o que disse, agora que você disse a corretora eu percebi que o ativo que está rodando é WIN$N, este ativo é uma série histórica e não é comercializado! Rode com WINM21 que o mini índice em vigor de maior liquidez.

 
Rogerio Giannetti Torres:

Olá,

esquece o que disse, agora que você disse a corretora eu percebi que o ativo que está rodando é WIN$N, este ativo é uma série histórica e não é comercializado! Rode com WINM21 que o mini índice em vigor de maior liquidez.

Rogerio, eu mudei o ativo, testei e agora funcionou, as parciais foram executadas, muito obrigado!!!

Razão: