ERRO 4756 INVALID LOSS

 

Galera, encontrei vários posts falando deste erro, mas mesmo assim não consegui corrigir, alguém consegue me ajudar?


LOG:

2019.07.29 08:59:05.540 2019.07.01 12:15:00   failed exchange buy 100.00 WIN$D at 101395 sl: 101345 tp: 101495 [Invalid stops]

2019.07.29 08:59:05.540 2019.07.01 12:15:00   Erro = 4756



Code:

input int num_lots                 = 100;           // Número de Lotes
input double TK                            = 100;            // Take Profit
input double SL                            = 50;            // Stop Loss
input string hora_limite_fecha_op  = "17:40";       // Horário limite para fechar posição 

int magic_number = 123456;   // Nº mágico do robô



void CompraAMercado() // bser na documentação ordem das variaveis!!!
  {
   MqlTradeRequest   requisicao;    // requisição
   MqlTradeResult    resposta;      // resposta
   
   ZeroMemory(requisicao);
   ZeroMemory(resposta);
   
   //--- 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
   requisicao.sl           = NormalizeDouble(requisicao.price - SL*_Point,_Digits);// Preço Stop Loss
   requisicao.tp           = NormalizeDouble(requisicao.price + TK*_Point,_Digits);// 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
   requisicao.type_time = ORDER_TIME_DAY;
   
   //---
   OrderSend(requisicao,resposta);
   //---
   if(resposta.retcode == 10008 || resposta.retcode == 10009)
     {
      purchased = true;
      Print("Ordem de Compra executada com sucesso!");
     }
   else
     {
       Print("Erro ao enviar Ordem Compra. Erro = ", GetLastError());
       ResetLastError();
     }
  }




 

Amigo, tenta alterar o type_filling de FOK para RETURN.

Dê um retorno ai se conseguir.

 

        Oi, como vai?


        Nesses casos é sempre bom fazer uma saída para saber se os valores que estão sendo enviados para a requisição correspondem aos valores efetivamente 

desejados.

        Faça um Print, um Alert ou um Comment com as variáveis   requisicao.sl,  requisicao.tp, recomendo também normaliza-las antes do envio.

     

        Atenciosamente,

        Nelson Ferreira

 
rodrigorizando:

Galera, encontrei vários posts falando deste erro, mas mesmo assim não consegui corrigir, alguém consegue me ajudar?


LOG:

2019.07.29 08:59:05.540 2019.07.01 12:15:00   failed exchange buy 100.00 WIN$D at 101395 sl: 101345 tp: 101495 [Invalid stops]

2019.07.29 08:59:05.540 2019.07.01 12:15:00   Erro = 4756



Code:




Até onde eu sei, não se consegue operar séries históricas...