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

fury_flipper_bot_v2.60 @simpleforextools.mq5

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

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

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

О программе

Советник для MetaTrader 5, реализующий сеточную торговую стратегию на основе скользящих средних EMA. В каждом тике советник управляет существующими позициями: закрывает их при достижении уровня прибыли и при необходимости перемещает стоп-лосс для фиксации части прибыли. Направление сетки определяется по пересечению быстрой и медленной EMA на выбранном таймфрейме. Между открытием новых сеточных уровней соблюдается временной охлаждающий интервал, а общее количество одновременных позиций ограничено.

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

НастройкаОписание
Lots Объём — Объём лота для каждой сделки
max grid legs (MaxTrades) Максимум сделок — Максимальное количество сеточных уровней (ног)
per-leg take profit (TP_Min_USD) TP минимум USD — Минимальный уровень прибыли в долларах для закрытия ноги
TP_Max_USD TP максимум USD — Максимальный уровень прибыли в долларах для закрытия ноги
Trail_Start_USD Старт трейла USD — Уровень прибыли, начиная с которого активируется трейлинг-стоп
TrailStepPips Шаг трейла (пипсы) — Расстояние трейлинг-стопа в пипсах
FastEMA Быстрая EMA — Период быстрой скользящей средней
SlowEMA Медленная EMA — Период медленной скользящей средней
TrendTF Таймфрейм тренда — Таймфрейм для анализа направления тренда
MagicNumber Магический номер — Идентификатор позиций советника
TradeComment Комментарий сделки — Текст комментария, добавляемый к каждой сделке
grid time step (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    = "fury flipper v2";
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% кода (символов: 4505)

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

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

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

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

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

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