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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.