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

e-regr

e-regr (2).mq4
Вы автор или правообладатель?

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

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

О программе

e-regr — торговый советник для MetaTrader 4, использующий пользовательский индикатор i-Regr для регрессионного анализа цены. Советник получает шесть значений буферов индикатора (верхние, средние и нижние линии регрессии) и на их основе принимает решения об открытии и закрытии позиций.

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

В советнике реализована функция трейлинг-стопа, позволяющая перемещать стоп-лосс в прибыльном направлении. Также предусмотрены настройки объёма, стоп-лосса, тейк-профита, проскальзывания и цветов отображения ордеров. Торговые операции выполняются через стандартные API MetaTrader 4.

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

НастройкаОписание
_tmp1_ Текстовый разделитель группы параметров торговли
TradeTime Временной интервал для совершения торговых операций в формате от-до
Lots Объём лота для открытия позиции
StopLoss Уровень стоп-лосса в пунктах от цены входа
TakeProfit Уровень тейк-профита в пунктах от цены входа
Slippage Допустимое проскальзывание цены при выполнении ордера
Magic Магический номер для идентификации ордеров советника
_tmp2_ Текстовый разделитель группы параметров индикатора
_tmp3_ Текстовый разделитель группы параметров трейлинга
TrailingOn Включение или выключение функции трейлинг-стопа
TrailingStart Начало срабатывания трейлинг-стопа в пунктах от цены входа
TrailingSize Размер трейлинг-стопа в пунктах
_tmp4_ Текстовый разделитель группы параметров графика
clBuy Цвет отображения ордеров на покупку
clSell Цвет отображения ордеров на продажу
clModify Цвет отображения изменённых ордеров
clClose Цвет отображения закрытых ордеров
Получить полный код

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

#define major   1
#define minor   1

extern string _tmp1_ = " --- Trade params ---";
extern string TradeTime = "3:00-21:20";
extern double Lots = 0.1;
extern int StopLoss = 0;
extern int TakeProfit = 0;
extern int Slippage = 3;
extern int Magic = 20080829;

extern string _tmp2_ = " --- i-Regr ---";
extern int Regr.degree = 3;
extern double Regr.kstd = 1.0;
extern int Regr.bars = 250;
extern int Regr.shift = 0;

extern string _tmp3_ = " --- Trailing ---";
extern bool TrailingOn = false;
extern int TrailingStart = 30;
extern int TrailingSize = 30;

extern string _tmp4_ = " --- Chart ---";
extern color clBuy = DodgerBlue;
extern color clSell = Red;
extern color clModify = Silver;
extern color clClose = Gold;

#include <stdlib.mqh>
#include <stderror.mqh>

int RepeatN = 3;
int BuyCnt, SellCnt;

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

void deinit() 
{
}

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

double If(bool cond, double if_true, double if_false)
{
  if (cond) return (if_true);
  return (if_false);
}

void split(string& arr[], string str, string sym) 
{
  ArrayResize(arr, 0);
  string item;
  int pos, size;

  int len = StringLen(str);
  for (int i=0; i < len;) 
  {
    pos = StringFind(str, sym, i);
    if (pos == -1) pos = len;

    item = StringSubstr(str, i, pos-i);
    item = StringTrimLeft(item);
    item = StringTrimRight(item);

    size = ArraySize(arr);
    ArrayResize(arr, size+1);
    arr[size] = item;

    i = pos+1;
  }
}

double GetLots() 
{
  return (Lots);
}

void RecountOrders()
{
  BuyCnt = 0;
  SellCnt = 0;

  int cnt = OrdersTotal();
  for (int i=0; i < cnt; i++) 
  {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
    if (OrderSymbol() != Symbol()) continue;
    if (OrderMagicNumber() != Magic) continue;

    int type = OrderType();
    if (type == OP_BUY) BuyCnt++;
    if (type == OP_SELL) SellCnt++;
  }
}

bool IsTradeTime()
{
  if (TradeTime == "0:00-24:00") return (true);
  if (TradeTime == "00:00-24:00") return (true);

  datetime tm1, tm2;

  string TI[];
  split(TI, TradeTime, "-");
  if (ArraySize(TI) != 2) return (false);

  datetime tm0 = TimeCurrent();
  tm1 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[0]);
  tm2 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[1]);

  bool isTm = false; 
  if (tm1 <= tm2) 
    isTm = isTm || (tm1 <= tm0 && tm0 < tm2);
  else
    isTm = isTm || (tm1 <= tm0 || tm0 < tm2);

  return (isTm);
}

int OrdersCountBar0(int TF)
{
  int orders = 0;

  int cnt = OrdersTotal();
  for (int i=0; i<cnt; i++) 
  {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
    if (OrderSymbol() != Symbol()) continue;
    if (OrderMagicNumber() != Magic) continue;

    if (Orde

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

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

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

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

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

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

Стоимость полного кода
692,90₽ ≈ $8.47