Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Long Short only EA based on CExpert - эксперт для MetaTrader 5

Просмотров:
2536
Рейтинг:
(30)
Опубликован:
2016.03.01 14:38
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Этот советник позволяет выбирать для открытия только длинные/короткие (или и те, и другие) позиции с помощью внесения дополнений в класс CExpert.

Прилагаются два различных файла:

  • LongShortExpertModified.mqh: это расширение добавляет в класс CExpert методы CheckOpen() и CheckReverse(), что позволяет открывать только ордеры определенного вида;
  • LongShortExpertMACD.mq5: этот советник — простая модификация встроенного класса ExpertMACD.mq5, позволяющая открывать только определенный тип ордеров, в соответствии со входными параметрами, и таким образом увеличивающая точность использования эксперта.

LongShortExpertModified

Эти дополнения изменяют дефолтное поведение класса CExpert, и по умолчанию позволяют работать только с определенным типом ордеров, в соответствии со следующим перечислением:

enum ENUM_AVAILABLE_POSITIONS
  {
   LONG_POSITION,
   SHORT_POSITION,
   BOTH_POSITION
  };

Это перечисление будет использоваться как входные параметры для готового советника, чтобы определить, какой тип ордеров ему будет позволено открывать. Оно предназначено только для внутреннего использования и позволяет отсылать только необходимые ордера. Разворотные ордера будут обрабатываться только в случае, если разрешены оба типа — и Sell, и Buy (в списке это будет соответствовать значению BOTH_POSITION).

Чтобы этого добиться, методы CheckOpen() и CheckReverse() переписаны:

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() предназначен для проверки, короткая или длинная позиция открывается (в соответствии со значением m_positions):

bool CLongShortExpertModified :: CheckOpen()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
         return CheckOpenLong();         //проверка только новых длинных позиций
      case SHORT_POSITION:
         return CheckOpenShort();        //проверка только новых коротких позиций
      default:
         return CExpert::CheckOpen();    //поведение по умолчанию
     }
  }

CheckReverse() проверяет противоположную позицию, только если разрешена обработка обоих типов ордеров:

bool CLongShortExpertModified::CheckReverse()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
      case SHORT_POSITION:
         return false;                    // разворот не разрешен
      default:
         return CExpert::CheckReverse(); //поведение по умолчанию
     }
  }

LongShortExpertMACD

Этот класс представляет конкретный пример советника, написанного с использованием ранее описанного класса на основании ExpertMACD EA, по умолчанию включенного в состав платформы.

Прежде всего, должен быть включен конкретный класс эксперта и переданы входные параметры. Внешний советник также связывается с подклассом, взамен дефолтного Cexpert.

#include <Expert\LongShortExpertModified.mqh>
//[...]
input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; //short / long / both positions allowed
//[...]
CLongShortExpertModified ExtExpert;  //отдельно разработанный подкласс CExpert

После инициализации эксперта параметры должны быть установлены в соответствии со входными значениями:

if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(-1);
     }
   
   // Конкретный параметр контролирующий, какие позиции разрешены
   ExtExpert.SetAvailablePositions(Inp_Allowed_Positions);  

Никаких дополнительных изменений не требуется. Следующий рисунок показывает конфигурацию входных параметров для эксперта:

Expert Advisor, генерирующий только короткие/длинные ордера

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/1896

Mercado Aberto Mercado Aberto

Простой индикатор, показывающий время, когда рынок открыт.

TrendSignal Indicator TrendSignal Indicator

Индикатор TrendSignal для MetaTrader 5.

CoensioTrader1V06 CoensioTrader1V06

Мультивалютная торговая система, основанная на полосах Боллинджера и техниках "ловли" тренда.

FxTrend 25EMA FxTrend 25EMA

FxTrend 25EMA основывается на разнице между значениями EMA 25 в два различных момента времени.