← К каталогу
Исходный код · ID 3712

Average

average_5363996961055735987.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Average — торговый советник для платформы MetaTrader 4, обрабатывающий рыночные и торговые события. Он анализирует открытые ордера по текущему торговому инструменту, группируя их по направлению и магическому номеру, и на основе собранных данных рассчитывает усреднённый уровень цены.
Советник поддерживает три режима работы: обработка всех ордеров одновременно, только покупок или только продаж. Дополнительный параметр позволяет задать смещение расчётного уровня в пунктах. С помощью магического номера можно фильтровать ордера, которыми советник управляет.
Эксперт пересчитывает усреднённый уровень и корректирует уровни take profit и stop loss открытых позиций при каждом тике. Текущее расчётное значение отображается в комментарии на графике.

Настройки программы

НастройкаОписание
iTypeAverage Тип усреднения — Определяет режим обработки ордеров: All — все ордера, OnlyBuy — только покупка, OnlySell — только продажа.
iProfiPlus Смещение в пунктах — Задаёт смещение расчётного уровня в пунктах от средневзвешенного значения открытых ордеров.
iMagicNumber Магический номер — Фильтр для выбора ордеров, которыми управляет советник. Если значение равно -1, советник обрабатывает все ордера на символе.
Получить полный код

Поиск по коду файла

#property version   "1.00"
#property strict
enum ENUM_AVERAGE_TYPE
  {
   All      = 0,
   OnlyBuy  = 1,
   OnlySell = 2
  };

input ENUM_AVERAGE_TYPE iTypeAverage = All;
input int               iProfiPlus   = 600;
input int               iMagicNumber = -1;

int OnInit()
  {
      // код доступен только после оплаты
   }

void OnTick()
  {
      // код доступен только после оплаты
   }

   int total = OrdersTotal();

   double BuySummPrice = 0, BuySummLots = 0;
   double SelSummPrice = 0, SelSummLots = 0;
   double Average = 0;

   for(int i = 0; i < total; i++)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderSymbol() == _Symbol)
            if(OrderMagicNumber() == iMagicNumber || iMagicNumber == -1)
              {
               if(OrderType() == OP_BUY)
                 {
                  BuySummPrice += OrderOpenPrice() * OrderLots();
                  BuySummLots  += OrderLots();
                 }
               if(OrderType() == OP_SELL)
                 {
                  SelSummPrice += OrderOpenPrice() * OrderLots();
                  SelSummLots  += OrderLots();
                 }
              }

   if((BuySummLots - SelSummLots) != 0)
     {
      if(iTypeAverage == All)
        {
         if(BuySummLots > SelSummLots)
            Average = (BuySummPrice - SelSummPrice) / (BuySummLots - SelSummLots) + iProfiPlus * _Point;

         if(BuySummLots < SelSummLots)
            Average = (BuySummPrice - SelSummPrice) / (BuySummLots - SelSummLots) - iProfiPlus * _Point;
        }

      if(iTypeAverage == OnlyBuy)
         Average = BuySummPrice / BuySummLots + iProfiPlus * _Point;

      if(iTypeAverage == OnlySell)
         Average =  SelSummPrice / SelSummLots - iProfiPlus * _Point;
     }

   for(int i = 0; i < total; i++)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderSymbol() == _Symbol)
            if(OrderMagicNumber() == iMagicNumber || iMagicNumber == -1)
              {
               if(OrderType() == OP_BUY)
                 {
                  if(iTypeAverage == OnlyBuy)
                     if(Bid < Average)
                        if(OrderTakeProfit() != Average)
              

Показано первые 50% кода (символов: 2392)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

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

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
239,20₽ ≈ $2.92