Como identificar um encerramento de operação por STOP LOSS e tomar descisões com base nisso?

luizgubarichello  

Olá,


Possuo uma estratégia que, quando encerra a posição em uma operação por STOP LOSS, só pode entrar em novas operações quando o preço toca em um ponto específico (no meu caso, uma média móvel exponencial). 

Entretanto, não consigo achar como fazer um expert advisor que leva isso em consideração.

Agraço muito quem puder me ajudar.


Grato!

Rogerio Giannetti Torres  
luizgubarichello:


Contrate um programador para fazer isso é baratinho https://www.mql5.com/pt/job

Aplicativos de negociação para o MetaTrader 5 por encomenda
Aplicativos de negociação para o MetaTrader 5 por encomenda
  • www.mql5.com
preciso criar um robo, para mini indice e mini dolar (com a mesma estrategia), estrategia abaixo. estrategia de entradas em um padrão simples de candle na media com opção virada de mão se houver sinal contrário. que tenha opção de beakeven e stop móvel. tenho um vídeo explicativo da estrategia para facilitar a criação ps1* .: é preciso que...
MrClock  
luizgubarichello:

Olá,


Possuo uma estratégia que, quando encerra a posição em uma operação por STOP LOSS, só pode entrar em novas operações quando o preço toca em um ponto específico (no meu caso, uma média móvel exponencial). 

Entretanto, não consigo achar como fazer um expert advisor que leva isso em consideração.

Agraço muito quem puder me ajudar.


Grato!

Você está com dificuldade de como identificar que uma posição fechou no loss?  Ou todo o restante?

luizgubarichello  
MrClock:

Você está com dificuldade de como identificar que uma posição fechou no loss?  Ou todo o restante?

Identificar e impedir de entrar em operações futuras até q a condição seja atendida.
Kl_ Urt  
luizgubarichello:
Identificar e impedir de entrar em operações futuras até q a condição seja atendida.

Um exemplo através do OnTradeTrasaction de como retornar o motivo da transação:

void OnTradeTransaction(const MqlTradeTransaction & trans,
                        const MqlTradeRequest & request,
                        const MqlTradeResult & result)
   {
      if (HistoryDealSelect(trans.deal))
      {
         ENUM_DEAL_ENTRY deal_entry = (ENUM_DEAL_ENTRY) HistoryDealGetInteger(trans.deal, DEAL_ENTRY);
         ENUM_DEAL_REASON deal_reason = (ENUM_DEAL_REASON) HistoryDealGetInteger(trans.deal, DEAL_REASON);
         if(EnumToString(deal_entry) == "DEAL_ENTRY_IN")
            {
               if(EnumToString(deal_reason) == "DEAL_REASON_EXPERT" && EnumToString(trans.deal_type) == "DEAL_TYPE_BUY")
                  {
                     Alert("Buy");
                  }
               else if(EnumToString(deal_reason) == "DEAL_REASON_EXPERT" && EnumToString(trans.deal_type) == "DEAL_TYPE_SELL")
                  {
                     Alert("Sell");
                  }
            }
         else if(EnumToString(deal_entry) == "DEAL_ENTRY_OUT")
            {
               if(EnumToString(deal_reason) == "DEAL_REASON_SL" && EnumToString(trans.deal_type) == "DEAL_TYPE_BUY")
                  {
                     Alert("Sell SL");
                  }
               else if(EnumToString(deal_reason) == "DEAL_REASON_SL" && EnumToString(trans.deal_type) == "DEAL_TYPE_SELL")
                  {
                     Alert("Buy SL");
                  }
               else if(EnumToString(deal_reason) == "DEAL_REASON_TP" && EnumToString(trans.deal_type) == "DEAL_TYPE_BUY")
                  {
                     Alert("Sell TP");
                  }
               else if(EnumToString(deal_reason) == "DEAL_REASON_TP" && EnumToString(trans.deal_type) == "DEAL_TYPE_SELL")
                  {
                     Alert("Buy TP");
                  }               
          } 
      }      
}