Написать советника на MT4 или МТ5

 
Здравствуйте, помогите написать советника по торговле внутреннего бара, за основу используя стратегию DIBS,подробнее что требуется от советника могу расписать...
 

Если кто-то поможет вам в этой теме, то хорошо.
Если нет, то вам, возможно, придется рассмотреть возможность использования услуг фрилансера, например.

----------------

Кодеры (любые кодеры) кодируют бесплатно -

  • если это интересно им лично, или
  • если это интересно многим участникам этого форума.

И Фриланс используется в большинстве случаев.


Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • 2024.08.14
  • www.mql5.com
Самый большой фриланс c разработчиками программ на MQL5
 
Alexandr Rubinshteyn:
Здравствуйте, помогите написать советника по торговле внутреннего бара, за основу используя стратегию DIBS,подробнее что требуется от советника могу расписать...

Для создания советника по стратегии DIBS на основе внутреннего бара в MetaTrader 4 на языке MQL4, можно следовать следующему плану:

Стратегия DIBS

DIBS (Daily Inside Bar Setup) предполагает вход в сделку на основе паттерна внутреннего бара (Inside Bar) и пробоя его границ. Вкратце, стратегия заключается в следующем:

  1. Идентифицируем внутренний бар, когда максимальная цена (High) и минимальная цена (Low) находятся внутри предыдущего бара.
  2. Выставляем отложенные ордера на пробой максимума и минимума внутреннего бара.
  3. Устанавливаем стоп-лосс за границами предыдущего бара (родительского бара).
  4. Возможно, устанавливаем тейк-профит на определённом уровне или закрываем сделки вручную.

Основные этапы создания советника:

  1. Инициализация и проверка условий:

    • Проверка наличия внутреннего бара.
    • Установка отложенных ордеров (Buy Stop и Sell Stop) при пробое.
  2. Обработка ордеров и управление рисками:

    • Установка уровней стоп-лосса и тейк-профита.
    • Управление открытыми позициями, проверка исполнения ордеров.

Пример кода для советника:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("DIBS Expert started.");
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Print("DIBS Expert stopped.");
  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   // Время текущего бара
   datetime currentBarTime = iTime(Symbol(), 0, 0);

   // Проверка нового бара
   static datetime lastBarTime = 0;
   if(currentBarTime != lastBarTime)
     {
      lastBarTime = currentBarTime;

      // Проверка наличия внутреннего бара на предыдущем баре (i = 1)
      if(IsInsideBar(1))
        {
         // Уровни для отложенных ордеров
         double highInsideBar = iHigh(Symbol(), 0, 1);
         double lowInsideBar = iLow(Symbol(), 0, 1);

         // Уровни StopLoss
         double stopLossBuy = lowInsideBar;
         double stopLossSell = highInsideBar;

         // Удаление старых ордеров, если нужно
         DeletePendingOrders();

         // Установка отложенных ордеров на пробой
         PlacePendingOrders(highInsideBar, lowInsideBar, stopLossBuy, stopLossSell);
        }
     }
  }

//+------------------------------------------------------------------+
//| Функция проверки на внутренний бар                               |
//+------------------------------------------------------------------+
bool IsInsideBar(int index)
  {
   double currentHigh = iHigh(Symbol(), 0, index);
   double currentLow = iLow(Symbol(), 0, index);

   double previousHigh = iHigh(Symbol(), 0, index + 1);
   double previousLow = iLow(Symbol(), 0, index + 1);

   // Проверка условий внутреннего бара
   if(currentHigh < previousHigh && currentLow > previousLow)
     {
      return true;
     }
   return false;
  }

//+------------------------------------------------------------------+
//| Функция установки отложенных ордеров                             |
//+------------------------------------------------------------------+
void PlacePendingOrders(double highInsideBar, double lowInsideBar, double stopLossBuy, double stopLossSell)
  {
   int magicNumber = 12345; // Уникальный идентификатор ордеров

   // Buy Stop
   double buyPrice = highInsideBar + Point; // На 1 пункт выше максимума
   OrderSend(Symbol(), OP_BUYSTOP, 0.1, buyPrice, 3, stopLossBuy, 0, "DIBS Buy", magicNumber, 0, clrBlue);

   // Sell Stop
   double sellPrice = lowInsideBar - Point; // На 1 пункт ниже минимума
   OrderSend(Symbol(), OP_SELLSTOP, 0.1, sellPrice, 3, stopLossSell, 0, "DIBS Sell", magicNumber, 0, clrRed);
  }

//+------------------------------------------------------------------+
//| Функция удаления старых отложенных ордеров                       |
//+------------------------------------------------------------------+
void DeletePendingOrders()
  {
   for(int i = OrdersTotal() - 1; i >= 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP))
        {
         OrderDelete(OrderTicket());
        }
     }
  }

Объяснение кода:

  1. OnTick() — основная функция, которая проверяет условия появления нового бара и запускает логику установки ордеров.
  2. IsInsideBar() — функция для проверки наличия внутреннего бара.
  3. PlacePendingOrders() — функция для установки отложенных ордеров на пробой границ внутреннего бара.
  4. DeletePendingOrders() — функция для удаления старых отложенных ордеров перед установкой новых.

Что ещё можно добавить:

  • Управление рисками, например, процент риска от депозита.
  • Логика трейлинг-стопа.
  • Модуль для управления активными ордерами, закрытие по трейлинг-стопу или другим правилам.

Дополнительные ссылки по MQL4:

Если нужно добавить дополнительные условия или уточнить логику, пишите, и я помогу настроить код под ваши требования!

MQL4 Reference
MQL4 Reference
  • docs.mql4.com
MQL4 Reference
 

Можно и без написания. Накидал за пару минут по аналогии с этим:


 
Ivan Titov #:

Можно и без написания. Накидал за пару минут по аналогии с этим:


Хм. Прикольно!!!

 
Ivan Titov #:

Можно и без написания. Накидал за пару минут по аналогии с этим:


есть конструктор в общем доступе?

 
Mickey Moose #:

есть конструктор в общем доступе?

Посмотрите здесь.

С уважением, Владимир.

 
MrBrooklin #:

Посмотрите здесь.

С уважением, Владимир.

благодарю. посмотрю что с этим можно сделать

 
Mickey Moose #:

есть конструктор в общем доступе?

Такой - вряд ли.