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

Generic A-TLP

generic a-tlp v.9.02.mq4
Вы автор или правообладатель?

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

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

О программе

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

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

НастройкаОписание
MagicNumber Магический номер — Идентификатор ордеров, открытых данным советником.
Comm Комментарий — Текстовый комментарий, добавляемый к каждой сделке.
Max_Spread Максимальный спред — Допустимый максимальный спред в пунктах для размещения сделок.
Slipage Слиппейдж — Допустимое проскальзывание цены при исполнении ордера.
Stop_Loss Стоп-лосс — Фиксированный стоп-лосс в пунктах от цены входа.
Take_Profit Тейк-профит — Фиксированный тейк-профит в пунктах от цены входа.
use_dyn_TP Динамический TP — Включает расчёт тейк-профита как процент от ширины канала.
TP_perc Процент TP — Процент ширины канала, используемый для динамического тейк-профита.
min_TP Минимальный TP — Минимальное значение тейк-профита в пунктах при использовании динамического расчёта.
use_BE Безубыток — Включает перемещение стоп-лосса в безубыток при достижении указанного профита.
X Порог безубытка — Количество пунктов движения цены в пользу, при котором активируется перевод в безубыток.
Y Смещение стопа — Смещение стоп-лосса в пунктах от цены входа при переводе в безубыток.
Channel_Period Период канала — Период расчёта скользящей средней и канала волатильности.
Entry_Break Пробой для входа — Количество пунктов, на которое цена должна пробить границу канала для входа в сделку.
Exit_Distance Расстояние выхода — Отступ от границы канала для срабатывания фильтра выхода.
MaxDailyRange Макс. дневной диапазон — Максимальный допустимый дневной диапазон в пунктах для входа в сделку.
Lots Лот — Фиксированный размер торгового лота.
Auto_Risk Авто-риск — Процент от свободного маржи для автоматического расчёта размера лота.
Min_Volatility Мин. волатильность — Минимальная ширина канала в пунктах, необходимая для входа в сделку.
Exit_Profit_Pips Прибыль для выхода 2 — Минимальная прибыль в пунктах для срабатывания фильтра выхода по ценовому движению.
Reverse_Profit Прибыль для разворота — Минимальная прибыль в пунктах для срабатывания фильтра выхода при развороте скользящей средней.
Exit_Minutes Мин. время выхода — Минимальное время нахождения ордера в минутах для срабатывания временного фильтра выхода.
Time_Profit_Pips Прибыль для времени — Минимальная прибыль в пунктах, при которой срабатывает временной фильтр выхода.
Filter_1 Фильтр выхода 1 — Включает или отключает первый фильтр выхода по времени и прибыли.
Filter_2 Фильтр выхода 2 — Включает или отключает второй фильтр выхода по пробою канала.
Filter_3 Фильтр выхода 3 — Включает или отключает третий фильтр выхода по развороту скользящей средней.
Col_info Цвет панели — Цвет информационной панели на графике.
S1 Раздел Дни недели — Заголовок раздела настроек фильтра по дням недели.
monday Понедельник — Разрешает или запрещает торговлю в понедельник.
monday_open Пн открытие — Время начала торговой сессии в понедельник.
monday_pause_start Пн пауза старт — Время начала перерыва в понедельник.
monday_pause_stop Пн пауза стоп — Время окончания перерыва в понедельник.
monday_close Пн закрытие — Время окончания торговой сессии в понедельник.
tuesday Вторник — Разрешает или запрещает торговлю во вторник.
tuesday_open Вт открытие — Время начала торговой сессии во вторник.
tuesday_pause_start Вт пауза старт — Время начала перерыва во вторник.
tuesday_pause_stop Вт пауза стоп — Время окончания перерыва во вторник.
tuesday_close Вт закрытие — Время окончания торговой сессии во вторник.
wednesday Среда — Разрешает или запрещает торговлю в среду.
wednesday_open Ср открытие — Время начала торговой сессии в среду.
wednesday_pause_start Ср пауза старт — Время начала перерыва в среду.
wednesday_pause_stop Ср пауза стоп — Время окончания перерыва в среду.
wednesday_close Ср закрытие — Время окончания торговой сессии в среду.
thursday Четверг — Разрешает или запрещает торговлю в четверг.
thursday_open Чт открытие — Время начала торговой сессии в четверг.
thursday_pause_start Чт пауза старт — Время начала перерыва в четверг.
thursday_pause_stop Чт пауза стоп — Время окончания перерыва в четверг.
thursday_close Чт закрытие — Время окончания торговой сессии в четверг.
friday Пятница — Разрешает или запрещает торговлю в пятницу.
friday_open Пт открытие — Время начала торговой сессии в пятницу.
friday_pause_start Пт пауза старт — Время начала перерыва в пятницу.
friday_pause_stop Пт пауза стоп — Время окончания перерыва в пятницу.
friday_close Пт закрытие — Время окончания торговой сессии в пятницу.
sunday Воскресенье — Разрешает или запрещает торговлю в воскресенье.
sunday_open Вс открытие — Время начала торговой сессии в воскресенье.
sunday_pause_start Вс пауза старт — Время начала перерыва в воскресенье.
sunday_pause_stop Вс пауза стоп — Время окончания перерыва в воскресенье.
sunday_close Вс закрытие — Время окончания торговой сессии в воскресенье.
S2 Раздел Ролловер — Заголовок раздела настроек фильтра ролловера.
use_rollover_filter Фильтр ролловера — Включает закрытие позиций в период ролловера.
rollover_start Время ролловера старт — Время начала периода ролловера.
rollover_end Время ролловера стоп — Время окончания периода ролловера.
Получить полный код

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

#property version   "9.02"
#property strict
#define _TRADE_               1
#define _PAUSE_               2

enum _EventYesNo{
      YES            = 1,           //ДА
      NO             = 2            //НЕТ
      };

enum _EventFilter{
      ON             = 1,
      OFF            = 2
      };

input    int            MagicNumber                = 11052016;
input    string         Comm                       = "Generic A-TLP v9.0";             //Комментарий
input    double         Max_Spread                 = 3;
input    int            Slipage                    = 1;
extern   double         Stop_Loss                  = 38;
extern   double         Take_Profit                = 35;
input    bool           use_dyn_TP                 = false;             //использовать динамический TP
input    int            TP_perc                    = 80;                //%% TP от размера канала
input    int            min_TP                     = 10;
input    bool           use_BE                     = false;             //использовать перевод в безубыток
input    double         X                          = 7;                 //Если текущая цена лучше цены входа на Х пунктов
input    double         Y                          = 1;                 //перемещаем СЛ на Y пунктов в профит
input    int            Channel_Period             = 13;
input    int            Entry_Break                = 1;
input    int            Exit_Distance              = -13;
input    int            MaxDailyRange              = 1000;
input    double         Lots                       = 0.1;
input    double         Auto_Risk                  = 0.0;
input    int            Min_Volatility             = 20;
input    int            Exit_Profit_Pips           = -12;
         int            ma_period                  = 2;
input    int            Reverse_Profit             = 20;
input    int            Exit_Minutes               = 140;
input    int            Time_Profit_Pips           = 0;
input    _EventFilter   Filter_1                   = 1;                 //Фильтр ¹1 (на выход из сделки)
input    _EventFilter   Filter_2                   = 1;                 //Фильтр ¹2 (на выход из сделки)
input    _EventFilter   Filter_3                   = 1;                 //Фильтр ¹3 (на выход из сделки)
input    color          Col_info                   = C'176,162,168';    //Цвет инфо панели

         double         maxlot                     = 0.01;
         double         lotstep                    = 0.01;
         double         old_point                  = 0.0001;
         double         minlot                     = 0.0;
         int            lotsize                    = 0;
         int            stoplevel                  = 0;
         double         lots                       = 0;
         int            count_sell;
         int            count_buy;
         datetime       day_of_trade;
         string         tr_hr                      = "";
         string         tp_info                    = "";
         string         be_info                    = "";
         int            slippage;
         datetime       need_to_verify_market_info;

         string         InpFileName;                                    // Имя файла
         string         fileName                   = "EA_Generic";      // Имя файла
         string         InpDirectoryName           = "LOGS";            // Имя каталога

input    string         S1                         = " DayOfWeek Filter";
input    _EventYesNo    monday                     = 1;                 //торгуем в ПОНЕДЕЛЬНИК?
input    string         monday_open                = "00:00";
input    string         monday_pause_start         = "01:00";
input    string         monday_pause_stop          = "22:00";
input    string         monday_close               = "23:59";

input    _EventYesNo    tuesday                    = 1;                 //торгуем во ВТОРНИК?
input    string         tuesday_open               = "00:00";
input    string         tuesday_pause_start        = "01:00";
input    string         tuesday_pause_stop         = "22:00";
input    string         tuesday_close              = "23:59";

input    _EventYesNo    wednesday                  = 1;                 //торгуем в СРЕДУ?
input    string         wednesday_open             = "00:00";
input    string         wednesday_pause_start      = "01:00";
input    string         wednesday_pause_stop       = "22:00";
input    string         wednesday_close            = "23:59";

input    _EventYesNo    thursday                   = 1;                 //торгуем в ЧЕТВЕРГ?
input    string         thursday_open              = "00:00";
input    string         thursday_pause_start       = "01:00";
input    string         thursday_pause_stop        = "22:00";
input    string         thursday_close             = "23:59";

input    _EventYesNo    friday                     = 1;                 //торгуем в ПЯТНИЦУ?
input    string         friday_open                = "00:00";
input    string         friday_pause_start         = "01:00";
input    string         friday_pause_stop          = "22:00";
input    string         friday_close               = "23:59";

input    _EventYesNo    sunday                     = 2;                 //торгуем в ВОСКРЕСЕНЬЕ?
input    string         sunday_open                = "08:30";
input    string         sunday_pause_start         = "15:30";
input    string         sunday_pause_stop          = "17:55";
input    string         sunday_close               = "21:35";

input    string         S2                         = " Roll Over Filter";
input    _EventYesNo    use_rollover_filter        = 1;                 //закрывать сделки в ролловер
input    string         rollover_start             = "23:55";           //время начала ролловера
input    string         rollover_end               = "00:35";           //время окончания ролловера

         int            flag_trade;
         datetime       time1,
                        time2,
                        time3,
                        time4;

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

void OnDeinit(const int reason)
{
   Comment("");
   fRectLabelDelete(0,"info_panel");
}

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

void OpenTrade(string type){
   double price = 0;
   double range = 0;
   int cmd = -1;
   color col_type = clrNONE;

   if(type == "BUY"){
      cmd = OP_BUY;
      col_type = clrAqua;
      range = (iOpen(NULL,PERIOD_D1,0) - Bid)/old_point;
   }
   if(type == "SELL"){
      cmd = OP_SELL;
      col_type = clrRed;
      range = (Bid - iOpen(NULL,PERIOD_D1,0))/old_point;
   }
   for(int count = 0; count < 5; count++){
      RefreshRates();
      if(type == "BUY") price = Ask;
      if(type == "SELL") price = Bid;
      int ticket = OrderSend(Symbol(), cmd, lots, price, slippage, 0, 0, Comm,
                                       MagicNumber, 0, col_type);   
      Sleep(3000);
      if(ticket > 0){
         if(!OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)){
            string q = __FUNCTION__ + ": не удалось выделить ордер " +
                     IntegerToString(ticket) + "! " + fMyErDesc();
            Print(q);
            fWriteDataToFile(q);
            break;
         }
         else{
            string q = __FUNCTION__ + ": ордер " + type + " открыт по цене " +
                     DoubleToStr(OrderOpenPrice(),Digits) + "; DailyRange = (" +
                     DoubleToStr(range,1) + ") пипс.";
            Print(q);
            fWriteDataToFile(q);
            break;
         }
      } 
      else{
         string q = __FUNCTION__ + ": ордер " + type +
                     " не был открыт!: " + fMyErDesc();
         Print(q);
         fWriteDataToFile(q);
      }
   }   
}

bool fGetRollOver(void){
   if(use_rollover_filter == 2){             //не закрывать сделки в ролловер
      if(StrToTime(rollover_start) > StrToTime(rollover_end)){
         if(TimeCurrent() >= StrToTime(rollover_start) || TimeCurrent() < StrToTime(rollover_end))
            return(true);
      }
      else{
         if(TimeCurrent() >= StrToTime(rollover_start) && TimeCurrent() < StrToTime(rollover_end))
            return(true);
      }
   }
   return(false);
}

string fInfoTradeHours(void){
   switch(DayOfWeek()){
        case 0: {    if(sunday == 2){
                        return( "\n"
                              + "\n    no trade today"
                              + "\n"
                              + "\n");
                     }
                     else{
                        if(sunday_pause_start == "0"){
                           return( "\n  Start Hour (Broker Time) = " + sunday_open
                                 + "\n  End Hour (Broker Time) = " + sunday_close
                

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

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

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

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

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

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

Стоимость полного кода
3 305,70₽ ≈ $40.40