Ordens trade.buy

andrecastilho  

Pessoal, estou fazendo um pequeno robô, que quando o preço do candle atu é maior que a máxima do cancle anterior, ele emite uma ordem de compra 'trade.buy'

nesta ordem eu configuro o stop loss e take profit, que aparecem no gráfico de teste, só que quando o preço chega no st ou tp, as ordens não são executadas.
alguém pode me ajudar?


segue código:


#include <Trade/Trade.mqh>

CTrade trade;


void OnTick()


  {

  

   double smaArray[], last, stopc, alvoc, ask;

   

   int smaHandle;


MqlRates rates[];

  

   

   

       ArraySetAsSeries(smaArray, true);

       ArraySetAsSeries(rates, true);

      

      // recupera ultimo preço

      last = SymbolInfoDouble(_Symbol,SYMBOL_LAST);

      ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);

      

        

      //  calcula media movel de 20 periodos

      smaHandle = iMA(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);  

      CopyBuffer(smaHandle,0,0,3,smaArray);

      

      // recupera informaçoes dos ultimos 4 candles

      CopyRates(_Symbol,_Period,0,4,rates);

      

     

      

      

      

      if (last > rates[1].high && PositionsTotal()==0)

         {

            stopc = rates[1].low;

            alvoc = (rates[1].high + (rates[1].high - rates[1].low));

            trade.Buy(5,_Symbol,0, stopc, alvoc, "");

         }

         

         

         

     

  }

Arquivos anexados:
mt.png  19 kb