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

fury_flipper_bot_v2.60 @lifeindreamsworld

fury_flipper_bot_v2.60 @lifeindreamsworld.mq5
Вы автор или правообладатель?

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

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

О программе

Это торговый советник для MetaTrader 5, написанный на языке MQL5. Он работает на одном символе текущего графика и использует две скользящие средние (EMA) для определения направления торговли. Направление задаётся пересечением быстрой и медленной EMA на выбранном таймфрейме: при пересечении снизу вверх направление становится покупательским, при пересечении сверху вниз — продающим. Если направление ещё не определено, оно устанавливается по текущему соотношению значений EMA.

Советник открывает позиции в направлении сигнала, увеличивая их количество до заданного максимума, что формирует сетку. Для каждой открытой позиции контролируется прибыль: при достижении заданного порога прибыли позиция закрывается. Также предусмотрен трейлинг-стоп, который активируется при достижении прибылью заданного уровня и подтягивает стоп-лосс с указанным шагом.

Открытие новых позиций ограничено временным интервалом (кулдаун), чтобы избежать слишком частых сделок. Все операции выполняются через торговый класс CTrade с использованием заданного магического номера и комментария к сделкам. Советник не использует внешние библиотеки, кроме стандартной Trade/Trade.mqh.

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

НастройкаОписание
Lots Объём каждой открываемой позиции в лотах. Значение автоматически приводится к допустимому диапазону и шагу объёма для текущего символа.
MaxTrades Максимальное количество одновременно открытых позиций сетки в одном направлении.
TP_Min_USD Нижний порог прибыли в долларах для закрытия позиции. При достижении этого значения позиция закрывается.
TP_Max_USD Верхний порог прибыли в долларах для закрытия позиции. При достижении этого значения позиция закрывается.
Trail_Start_USD Уровень прибыли в долларах, при достижении которого активируется трейлинг-стоп для позиции.
TrailStepPips Шаг трейлинга в пунктах. Определяет, на каком расстоянии от текущей цены будет устанавливаться стоп-лосс при активации трейлинга.
FastEMA Период быстрой экспоненциальной скользящей средней, используемой для определения направления тренда.
SlowEMA Период медленной экспоненциальной скользящей средней, используемой для определения направления тренда.
TrendTF Таймфрейм, на котором рассчитываются скользящие средние для определения направления. Если выбран PERIOD_M1, фактически используется PERIOD_M5.
MagicNumber Уникальный идентификатор (магический номер) для сделок советника. Используется для фильтрации позиций, принадлежащих советнику.
TradeComment Текстовый комментарий, добавляемый к каждой сделке советника.
CooldownSeconds Минимальный интервал в секундах между открытием новых позиций сетки. Если значение больше нуля, новые позиции не открываются чаще, чем раз в указанное число секунд.
Получить полный код

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

#property description ""
#property version   "2.60"
#property strict

#include <Trade/Trade.mqh>
CTrade g_trade;

input double Lots            = 0.02;
input int    MaxTrades       = 10;     // max grid legs
input double TP_Min_USD      = 1.4;    // per-leg take profit
input double TP_Max_USD      = 5.0;
input double Trail_Start_USD = 3.0;
input int    TrailStepPips   = 10;
input int    FastEMA         = 10;
input int    SlowEMA         = 20;
input ENUM_TIMEFRAMES TrendTF = PERIOD_M1;
input long   MagicNumber     = 20260720;
input string TradeComment    = "@LifeInDreamsWorld";
input int    CooldownSeconds = 5;      // grid time step

datetime g_lastGridBeat = 0;
datetime g_lastBar      = 0;
int      g_dir          = 0;
int      g_fastHandle   = INVALID_HANDLE;
int      g_slowHandle   = INVALID_HANDLE;
ENUM_TIMEFRAMES g_emaTF = PERIOD_M5;

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

void OnDeinit(const int reason)
  {
   if(g_fastHandle != INVALID_HANDLE) IndicatorRelease(g_fastHandle);
   if(g_slowHandle != INVALID_HANDLE) IndicatorRelease(g_slowHandle);
  }

bool IsOurs()
  {
   return((long)PositionGetInteger(POSITION_MAGIC) == MagicNumber &&
          PositionGetString(POSITION_SYMBOL) == _Symbol);
  }

int CountOurs()
  {
   int n = 0;
   for(int i = PositionsTotal() - 1; i >= 0; --i)
     {
      ulong ticket = PositionGetTicket(i);
      if(ticket != 0 && PositionSelectByTicket(ticket) && IsOurs())
         ++n;
     }
   return n;
  }

int CountOpposite(const int dir)
  {
   int n = 0;
   for(int i = PositionsTotal() - 1; i >= 0; --i)
     {
      ulong ticket = PositionGetTicket(i);
      if(ticket == 0 || !PositionSelectByTicket(ticket) || !IsOurs())
         continue;
      long type = PositionGetInteger(POSITION_TYPE);
      if(dir > 0 && type == POSITION_TYPE_SELL) ++n;
      if(dir < 0 && type == POSITION_TYPE_BUY) ++n;
     }
   return n;
  }

int GridDirection()
  {
   double fast[], slow[];
   ArraySetAsSeries(fast, true);
   ArraySetAsSeries(slow, true);
   if(CopyBuffer(g_fastHandle, 0, 0, 3, fast) < 3)
      return g_dir;
   if(CopyBuffer(g_slowHandle, 0, 0, 3, slow) < 3)
      return g_dir;

   datetime bar = iTime(_Symbol, g_emaTF, 0);
   if(bar != 0 && bar != g_lastBar)
     {
      g_lastBar = bar;
      if(fast[1] > slow[1] && fast[2] <= slow[2])
         g_dir = 1;
      else if(fast[1] < slow[1] && fast[2] >= slow[2])
         g_dir = -1;
     }
   if(g_dir == 0)
     {
      if(fast[0] > slow[0]) g_dir = 1;
      else if(fast[0]

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

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

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

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

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

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

Стоимость полного кода
451₽ ≈ $5.51