Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Experts

EA Long Short only baseado na CExpert - expert para MetaTrader 5

Visualizações:
4242
Avaliação:
(30)
Publicado:
2016.12.27 09:11
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

O Expert Advisor atual permite escolher abrir apenas long/short (ou ambas) posições com base em uma extensão da classe CExpert.

Dois arquivos diferentes são fornecidos:

  • LongShortExpertModified.mqh: Esta classe estende a classe padrão CExpert modificando os métodos CheckOpen() e CheckReverse(), a fim de permitir que apenas as ordens desejadas possam ser abertas;
  • LongShortExpertMACD.mq5: Este EA é uma modificação simples através da classe incorporada ExpertMACD.mq5, incluindo o EA modificado, desenvolvido para permitir somente o tipo de ordem desejada de acordo com um parâmetro de entrada, sendo fornecido para clarificar a utilização do EA.

LongShortExpertModified

Esta classe modifica o comportamento da classe padrão CExpert permitindo apenas um certo tipo de ordem de acordo com a seguinte enumeração:

enum ENUM_AVAILABLE_POSITIONS
  {
   LONG_POSITION,
   SHORT_POSITION,
   BOTH_POSITION
  };

Esta enumeração será utilizada como um parâmetro de entrada para o EA final exigido para determinar qual tipo de ordem será permitido, e ele é usado internamente para abrir apenas as ordens desejadas e para processar a inversão da ordem somente se ambos os tipos de posições são permitidos (valor do enum BOTH_POSITION ).

Para fazer isso, CheckOpen() e CheckReverse() foram reescritos:

class CLongShortExpertModified : public CExpert
  {
protected:
   ENUM_AVAILABLE_POSITIONS m_positions;
public:
                     CLongShortExpertModified(void);
                    ~CLongShortExpertModified(void);
   virtual bool      CheckOpen(void);
   virtual bool      CheckReverse(void);
   void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;};
  };

CheckOpen() é modificado para verificar apenas as posições compradas ou vendidas de acordo com o valor de m_positions:

bool CLongShortExpertModified :: CheckOpen()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
         return CheckOpenLong();         //verifica apenas novas posições compradas
      case SHORT_POSITION:
         return CheckOpenShort();        //verifica apenas novas posições vendidas
      default:
         return CExpert::CheckOpen();    //comportamento padrão
     }
  }

CheckReverse() é modificado para verificar somente a inversão das posições se ambos os tipos de posições são permitidos:

bool CLongShortExpertModified::CheckReverse()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
      case SHORT_POSITION:
         return false;                    // a reversão não é permitida
      default:
         return CExpert::CheckReverse(); //comportamento padrão
     }
  }

LongShortExpertMACD

Esta classe oferece um exemplo específico da utilização da classe anterior do EA, com base no EA padrão ExpertMACD incluído na distribuição do MQL5.

Em primeiro lugar, a classe concreta de EAs deve ser incluída, e o parâmetro de entrada correspondente adicionado. Além disso, o EA externo está associado com a subclasse, em vez do CExpert padrão:

#include <Expert\LongShortExpertModified.mqh>
//[...]
input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; //short / long / ambas as posições permitidas
//[...]
CLongShortExpertModified ExtExpert;  //subclasse especifica da CExpert

Após a inicialização do EA, o parâmetro deve ser definido de acordo com o valor de entrada:

if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(-1);
     }
   
   // Controlador do parâmetro específico que as posições são permitidas
   ExtExpert.SetAvailablePositions(Inp_Allowed_Positions);  

Não é necessário alterações adicionais. A figura a seguir mostra os parâmetros de configuração para o expert:

Parâmetros de entrada do Expert Advisor Long/Short only

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/1896

Mercado Aberto Mercado Aberto

Indicador simples que mostra quando o mercado está aberto.

Mutex - WinAPI Mutex - WinAPI

Sincroniza processos ОС/EA/MT etc. Não são mais necessários DLLs agora.

CoensioTrader1V06 CoensioTrader1V06

Um sistema de negociação multi-moeda, com base nas bandas de Bollinger e com uma técnica seguidora de tendência. Capaz de negociar até 6 pares de moedas simultaneamente. O sistema tem embutido uma partilha dos parâmetros de otimização.

FxTrend 25EMA FxTrend 25EMA

FxTrend 25EMA é baseado na diferença do valor de EMA de 25 durante dois momentos diferentes.