SL/TP Strategy Tester not executing

To add comments, please log in or register
gustgdp
8
gustgdp  

Hello everyone,

I am cracking my head here. My code simply does not execute the SL or TP orders. They appear on the testing graph, but they are not executed. Can anybody help, please? Thanks.

//IMPORTAÇÃO
#include<Trade\Trade.mqh>

//cria instância chamada "trade"
CTrade trade;

input int lote    =12;
input int StopLoss    =530;
input int StopGain    =180;



void OnTick()
  {
  
  

  
  //EMAS//
      //cria o array das médias
      double EMASlow[], EMAFast[];
      
      //define as propriedades das médias
      int EMAFastDefinition = iMA (_Symbol,_Period,14,0,MODE_EMA,PRICE_CLOSE);
      int EMASlowDefinition = iMA (_Symbol,_Period,35,0,MODE_EMA,PRICE_CLOSE);
      
      //contar regressivamente a partir do último candle
      ArraySetAsSeries(EMAFast,true);
      ArraySetAsSeries(EMASlow,true);
      
      //definição das propriedades, uma linha, candle corrente, 3 candles passados, guardar resultado
      CopyBuffer(EMAFastDefinition,0,0,3,EMAFast);
      CopyBuffer(EMASlowDefinition,0,0,3,EMASlow);
      
   //MACD//
      //cria o array do indicador
      double MACD[];
      
      //defines as propriedades do MACD
      int MACDDefinition = iMACD (_Symbol,_Period,12,35,9,PRICE_CLOSE);
      
      //contar regressivamente a partir do último candle
      ArraySetAsSeries(MACD,true);
      
      //definição das propriedades, uma linha, candle corrente, 3 candles passados, guardar resultado
      CopyBuffer(MACDDefinition,0,0,3,MACD);
      
      //obter valor do MACD para o candle
      float MACDValue = (MACD[0]);
      
   //VALORES DE PREÇO
      //pede o preço corrente
      double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
      double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
      
      //cria array para os preços
      MqlRates PriceInfo[];
      
      //contar regressivamente a partir do último candle
      ArraySetAsSeries(PriceInfo,true);
      
      //copia os valores do mercado para o array
      int PriceData = CopyRates(_Symbol,_Period,0,3,PriceInfo);
      
      
      
      
      
      
   //ORDENS      
      //condição de compra
      if(
      (EMAFast[0]>EMASlow[0])
      && (EMAFast[1]<EMASlow[1])
      && (MACD[0]>0)
      && (PositionsTotal() == 0)
         )
        {
          Comment ("Buy");
          trade.Buy(
                     lote,
                     NULL,
                     Ask,
                     Bid-StopLoss*_Point,
                     Bid+StopGain*_Point,
                     NULL
                     ); // se for usar mais de um advisor no mesmo gráfico
        }


        
      //condição de venda
      if(
      (EMAFast[0]<EMASlow[0])
      && (EMAFast[1]>EMASlow[1])
      && (MACD[0]<0)
         )
        {
          Comment ("Sell");
        }
            
   
  }
WindmillMQL
164
WindmillMQL  

"are not executed" by itself is not very helpful.

Did you get any error messages?

To add comments, please log in or register