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

h1.mq4

Похожие материалы по тегам

! macd+.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!macd_adx.mq4MQL4 / MetaTrader 4 · 1 общих теговxauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 1 общих теговtm sniper pro.pineTradingView · 1 общих теговsource code of grid with 100 pips stop loss.mq4MQL4 / MetaTrader 4 · 1 общих теговsniper pro.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Торговый советник для платформы MetaTrader 4, работающий на основе анализа индикатора MACD на нескольких таймфреймах. Советник обрабатывает рыночные события в OnTick, открывает позиции в соответствии с заданными правилами и модифицирует открытые ордера, переводя стоп-лосс в безубыток и двигая его по тренду. Поддерживается как рыночное исполнение, так и работа с отложенными ордерами.

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

НастройкаОписание
EA Название советника — Текстовый идентификатор или заголовок группы общих настроек советника.
Lot Объём сделки — Задаёт объём торговой позиции в лотах для открытия новых ордеров.
One_order_per_direction Одна позиция на направление — При включении позволяет держать только одну открытую позицию в каждом направлении.
Max_orders_per_direction Максимум позиций на направление — Ограничивает количество одновременно открытых позиций в одном направлении, когда разрешено несколько ордеров.
New_order_after_profit_buy Новый ордер при прибыли покупки — Разрешает открытие новой покупки, если текущая покупочная позиция уже в прибыли.
New_order_after_profit_sell Новый ордер при прибыли продажи — Разрешает открытие новой продажи, если текущая продажная позиция уже в прибыли.
TP Тейк-профит — Уровень фиксации прибыли в пунктах для новых ордеров.
SL Стоп-лосс — Уровень ограничения убытков в пунктах для новых ордеров.
Breakeven Безубыток (в пунктах) — Расстояние в пунктах от цены открытия, при достижении которого стоп-лосс переводится в безубыток.
Breakeven_distance Отступ безубытка — Дополнительное расстояние в пунктах от цены открытия для установки стоп-лосса при активации безубытка.
TS Трейлинг-стоп (в пунктах) — Расстояние в пунктах от текущей цены, при достижении которого активируется модификация стоп-лосса в сторону трейлинга.
TS_step Шаг трейлинг-стопа — Шаг сдвига стоп-лосса при активации трейлинг-стопа в пунктах.
ID Идентификатор ордеров — Числовой идентификатор, присваиваемый всем ордерам советника для их последующей фильтрации и управления.
MACD Настройки MACD — Заголовок группы параметров базового MACD, используемого для генерации сигналов.
MACD_fast_ema_period Период быстрой EMA MACD — Период быстрой экспоненциальной скользящей средней для расчёта MACD.
MACD_slow_ema_period Период медленной EMA MACD — Период медленной экспоненциальной скользящей средней для расчёта MACD.
MACD_signal_period Период сигнальной линии MACD — Период сигнальной линии MACD.
MACD_applied_price Применяемая цена MACD — Тип цены или данных, используемых для расчёта MACD на основном таймфрейме.
MACD_UP Настройки MACD старшего таймфрейма — Заголовок группы параметров MACD для анализа на более высоком таймфрейме.
Use_MACD_on_upper_tf Использовать MACD старшего таймфрейма — Включает или отключает дополнительную фильтрацию сигналов по MACD на выбранном старшем таймфрейме.
MACD_upper_tf Таймфрейм MACD старшего уровня — Таймфрейм, на котором рассчитывается MACD для дополнительной фильтрации сигналов.
MACD_fast_ema_period (MACD_fast_ema_period_2) Период быстрой EMA MACD старшего TF — Период быстрой EMA для MACD на старшем таймфрейме.
MACD_slow_ema_period (MACD_slow_ema_period_2) Период медленной EMA MACD старшего TF — Период медленной EMA для MACD на старшем таймфрейме.
MACD_signal_period (MACD_signal_period_2) Период сигнальной линии MACD старшего TF — Период сигнальной линии MACD на старшем таймфрейме.
MACD_applied_price (MACD_applied_price_2) Применяемая цена MACD старшего TF — Тип цены или данных, используемых для расчёта MACD на старшем таймфрейме.
MACD_TREND Настройки MACD тренда — Заголовок группы параметров MACD, используемого для определения направления тренда.
Use_MACD_for_trend Использовать MACD для определения тренда — Включает или отключает фильтрацию сигналов по направлению тренда на основе MACD.
MACD_trend_tf Таймфрейм MACD тренда — Таймфрейм, на котором определяется текущее направление тренда с помощью MACD.
MACD_fast_ema_period (MACD_fast_ema_period_3) Период быстрой EMA MACD тренда — Период быстрой EMA для MACD, используемого при определении тренда.
MACD_slow_ema_period (MACD_slow_ema_period_3) Период медленной EMA MACD тренда — Период медленной EMA для MACD, используемого при определении тренда.
MACD_signal_period (MACD_signal_period_3) Период сигнальной линии MACD тренда — Период сигнальной линии MACD, используемого при определении тренда.
MACD_applied_price (MACD_applied_price_3) Применяемая цена MACD тренда — Тип цены или данных, используемых для расчёта MACD при определении тренда.
ORD Настройки открытия ордеров — Заголовок группы параметров, связанных с порядком и условиями открытия ордеров.
requote Количество повторных попыток при реквоте — Максимальное количество повторных попыток отправки ордера при возникновении реквота.
number_try Максимум попыток открытия/модификации — Общее максимальное количество попыток для выполнения операций открытия или модификации ордеров.
time_period_try Пауза между попытками (секунды) — Время ожидания в секундах между повторными попытками выполнения торговых операций.
Получить полный код

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

input string EA = "Общие настройки советника";
input double Lot = 0.2;
input bool One_order_per_direction = true;
input int Max_orders_per_direction = 50;
input bool New_order_after_profit_buy = false;
input bool New_order_after_profit_sell = false;
input double TP = 600;
input double SL = 250;
input int Breakeven = 0;
input int Breakeven_distance = 0;
input int TS = 0;
input int TS_step = 0;
input int ID = 6060;

input string MACD = "Настройки MACD";
input int MACD_fast_ema_period = 5;
input int MACD_slow_ema_period = 10;
input int MACD_signal_period = 3;
input ENUM_APPLIED_PRICE MACD_applied_price = PRICE_CLOSE;

input string MACD_UP = "Настройки MACD на старшем таймфрейме";
input bool Use_MACD_on_upper_tf = false;
input ENUM_TIMEFRAMES MACD_upper_tf = PERIOD_M30;
input int MACD_fast_ema_period_2 = 34; //MACD_fast_ema_period
input int MACD_slow_ema_period_2 = 35; //MACD_slow_ema_period
input int MACD_signal_period_2 = 5; //MACD_signal_period
input ENUM_APPLIED_PRICE MACD_applied_price_2 = PRICE_CLOSE; //MACD_applied_price

input string MACD_TREND = "Настройки MACD для определения тренда";
input bool Use_MACD_for_trend = true;
input ENUM_TIMEFRAMES MACD_trend_tf = PERIOD_H4;
input int MACD_fast_ema_period_3 = 5; //MACD_fast_ema_period
input int MACD_slow_ema_period_3 = 10; //MACD_slow_ema_period
input int MACD_signal_period_3 = 3; //MACD_signal_period
input ENUM_APPLIED_PRICE MACD_applied_price_3 = PRICE_CLOSE; //MACD_applied_price

input string ORD = "Настройки открытия ордеров";
bool MarketExecution = true;
input int requote = 50;
input int number_try = 20;
input int time_period_try = 1;

string main_id;

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

void OnDeinit(const int reason)
  {

   if(UninitializeReason() == REASON_CHARTCLOSE || UninitializeReason() == REASON_REMOVE)
      GlobalVariablesDeleteAll(main_id);
  }

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

bool filter_by_trend(int type, string command)
  {
   bool res = false;
   if(!Use_MACD_for_trend)
      return(true);
   string now_direction = "";

   double macd_main_1 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_3,MACD_slow_ema_period_3,MACD_signal_period_3,MACD_applied_price_3,MODE_MAIN,1);
   double macd_main_2 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_3,MACD_slow_ema_period_3,MACD_signal_period_3,MACD_applied_price_3,MODE_MAIN,2);

   double macd_signal_1 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_3,MACD_slow_ema_period_3,MACD_signal_period_3,MACD_applied_price_3,MODE_SIGNAL,1);
   double macd_signal_2 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_3,MACD_slow_ema_period_3,MACD_signal_period_3,MACD_applied_price_3,MODE_SIGNAL,2);

   if(macd_signal_1 > 0 && macd_main_1 > macd_signal_1)
      now_direction = "trend";
   if(macd_signal_1 < 0 && macd_main_1 < macd_signal_1)
      now_direction = "trend";

   if(macd_signal_1 > 0 && macd_main_1 > 0 && macd_main_1 < macd_signal_1)
      now_direction = "correction";
   if(macd_signal_1 < 0 && macd_main_1 < 0 && macd_main_1 > macd_signal_1)
      now_direction = "correction";

   if(now_direction == command)
      res = true;

   return(res);
  }

bool signal_by_upper_tf(int type)
  {
   bool res = false;
   if(!Use_MACD_on_upper_tf)
      return(true);

   double macd_main_1 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_2,MACD_slow_ema_period_2,MACD_signal_period_2,MACD_applied_price_2,MODE_MAIN,1);
   double macd_main_2 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_2,MACD_slow_ema_period_2,MACD_signal_period_2,MACD_applied_price_2,MODE_MAIN,2);

   double macd_signal_1 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_2,MACD_slow_ema_period_2,MACD_signal_period_2,MACD_applied_price_2,MODE_SIGNAL,1);
   double macd_signal_2 = iMACD(NULL,MACD_upper_tf,MACD_fast_ema_period_2,MACD_slow_ema_period_2,MACD_signal_period_2,MACD_applied_price_2,MODE_SIGNAL,2);

   if(type == OP_BUY)
     {
      if(macd_signal_1 > 0 && macd_main_1 < macd_signal_1)
         res = true;
     }

   if(type == OP_SELL)
     {
      if(macd_signal_1 < 0 && macd_main_1 > macd_signal_1)
         res = true;
     }

   return(res);
  }

bool rules_by_open(int type)
  {
   bool res = false;

   if(One_order_per_direction)
      res = order_total(type) == 0?true:false;
   else
     {
      if(order_total(type) < Max_orders_per_direction)
         res = true;
      if(type == OP_BUY && New_order_after_profit_buy && order_profit(type) >= 0)
         res = true;
      if(type == OP_SELL && New_order_after_profit_sell && order_profit(type) >= 0)
         res = true;
     }

   return (res);
  }

double order_profit(int type_1 = -1, int type_2 = -1)
  {
   int i;
   double kol = 0;
   for(i = OrdersTotal() - 1; i >= 0; i --)
     {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderMagicNumber() == ID && (OrderType() == type_1 || OrderType() == type_2))
         kol+= OrderProfit() + OrderSwap() + OrderCommission();
      if(OrderMagicNumber() == ID && type_1 == -1 && type_2 == -1)
         kol+= OrderProfit() + OrderSwap() + OrderCommission();
     }
   return(kol);
  }

int order_total(int type_1 = -1, int type_2 = -1)
  {
   int i;
   int kol = 0;
   for(i = OrdersTotal() - 1; i >= 0; i --)
     {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderMagicNumber() == ID && (OrderType() == type_1 || OrderType() == type_2))
         kol++;
      if(OrderMagicNumber() == ID && type_1 == -1 && type_2 == -1)
         kol++;
     }
   return(kol);
  }

bool isNewBar()
  {
   static datetime BarTime;
   bool res = false;

   if(BarTime != Time[0])
     {
      BarTime = Time[0];
      res = true;
     }
   return(res);
  }

double check_lot(double &lo)
  {
   double l = MarketInfo(Symbol(),MODE_LOTSTEP);
   int ok = 0;
   while(l < 1)
     {
      l*=10;
      ok++;
     }
   if(lo < MarketInfo(Symbol(),MODE_MINLOT))
      lo = MarketInfo(Symbol(),MODE_MINLOT);
   if(lo > MarketInfo(Symbol(),MODE_MAXLOT))
      lo = MarketInfo(Symbol(),MODE_MAXLOT);
   return(NormalizeDo

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

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

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

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

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

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

Стоимость полного кода
1 059,40₽ ≈ $12.95