Gradiente linear

 

boa noite pessoal blzz?

meu robo simples que estou fazendo quero q ele abre 5 ordens acima da abertura do mercado,exemplo mercado abriu já coloca as 5 ordens BUYSTOP,estou fazendo assim:


Na conta real ele dá erro:


 rejected buy stop 1 WINQ24 at 126850 sl: 126650 tp: 136850 (Order Type/ Duration Combo inva)


alguem poderia me ajudar??


double abert = iOpen(_Symbol, PERIOD_D1,0);

           

            double open = NormalizePrice(abert+100);

            double sl = NormalizePrice(open - NormalizeSize(iStopLoss, iTargetsMeasure));

            double tp = NormalizePrice(open + NormalizeSize(iTakeProfit, iTargetsMeasure));

            if (!Trade.BuyStop(iLot, open,_Symbol,sl,tp, ORDER_TIME_GTC, 0, iSetupName))

            logger("Falha ao posicionar ordem BuyLimit! code:" + (string)GetLastError(), "error");

            ResetLastError(); // Zeramos os erros na memoria

            

           

            double open1 = NormalizePrice(abert+200);

            double sl1 = NormalizePrice(open1 - NormalizeSize(iStopLoss, iTargetsMeasure));

            double tp1 = NormalizePrice(open1 + NormalizeSize(iTakeProfit, iTargetsMeasure));

            if (!Trade.BuyStop(iLot, open1,_Symbol,sl1,tp1, ORDER_TIME_GTC, 0, iSetupName))

            logger("Falha ao posicionar ordem BuyLimit! code:" + (string)GetLastError(), "error");

            ResetLastError(); // Zeramos os erros na memoria

            

            double open2 = NormalizePrice(abert+300);

            double sl2 = NormalizePrice(open2 - NormalizeSize(iStopLoss, iTargetsMeasure));

            double tp2 = NormalizePrice(open2 + NormalizeSize(iTakeProfit, iTargetsMeasure));

            if (!Trade.BuyStop(iLot, open2,_Symbol,sl2,tp2, ORDER_TIME_GTC, 0, iSetupName))

            logger("Falha ao posicionar ordem BuyLimit! code:" + (string)GetLastError(), "error");

            ResetLastError(); // Zeramos os erros na memoria

            

          

            double open3 = NormalizePrice(abert+400);

            double sl3 = NormalizePrice(open3 - NormalizeSize(iStopLoss, iTargetsMeasure));

            double tp3 = NormalizePrice(open3 + NormalizeSize(iTakeProfit, iTargetsMeasure));

            if (!Trade.BuyStop(iLot, open3,_Symbol,sl3,tp3, ORDER_TIME_GTC, 0, iSetupName))

            logger("Falha ao posicionar ordem BuyLimit! code:" + (string)GetLastError(), "error");

            ResetLastError(); // Zeramos os erros na memoria

            

           

            double open4 = NormalizePrice(abert+500);

            double sl4 = NormalizePrice(open4 - NormalizeSize(iStopLoss, iTargetsMeasure));

            double tp4 = NormalizePrice(open4 + NormalizeSize(iTakeProfit, iTargetsMeasure));

            if (!Trade.BuyStop(iLot, open4,_Symbol,sl4,tp4, ORDER_TIME_GTC, 0, iSetupName))

            logger("Falha ao posicionar ordem BuyLimit! code:" + (string)GetLastError(), "error");

            ResetLastError(); // Zeramos os erros na memoria
 
Douglas Betiol:

boa noite pessoal blzz?

meu robo simples que estou fazendo quero q ele abre 5 ordens acima da abertura do mercado,exemplo mercado abriu já coloca as 5 ordens BUYSTOP,estou fazendo assim:


Na conta real ele dá erro:


 rejected buy stop 1 WINQ24 at 126850 sl: 126650 tp: 136850 (Order Type/ Duration Combo inva)


alguem poderia me ajudar??


Eu começaria revisando o conceito "tunel de negociação" ele determina que se tentar colocar algo 10% acima ou abaixo do preço de ajuste do dia anterior vai ser considerado inválido. Outra pergunta seria como esta o order type filling? A Return é o padrão na B3, mas não é o padrão da CTrade.