ВРОДЕ НЕ ГЛЮЧЕННЫЙ СОВЕТНИК.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ВРОДЕ НЕ ГЛЮЧЕННЫЙ СОВЕТНИК.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для MetaTrader 4, предназначенный для работы с пользовательскими индикаторами. Он считывает буферы до пяти указанных индикаторов и определяет сигналы на открытие и закрытие позиций, а также позволяет управлять позициями вручную через кнопки на графике.
Советник поддерживает фильтрацию по времени торговли, доливку позиций за счёт свободной маржи, а также набор средств управления рисками: безубыток, трейлинг-стоп, фиксация прибыли и ограничение убытков. Доступны уведомления-алерты при появлении торговых сигналов.
Торговые операции выполняются через стандартные средства MetaTrader 4. Работа советника зависит от корректности настройки индикаторов и параметров торговли, автор не гарантирует прибыльность.
Настройки программы
| Настройка | Описание |
|---|---|
| INDICATOR1 | Имя пользовательского индикатора, буферы которого используются для определения торговых сигналов (первый индикатор). |
| Buffer_1_BUY1 | Номер буфера индикатора INDICATOR1, который используется для определения сигнала на покупку. |
| Buffer_1_SELL1 | Номер буфера индикатора INDICATOR1, который используется для определения сигнала на продажу. |
| SignalBar_11 | Номер бара, на котором ожидается сигнал от индикатора INDICATOR1 (0 — текущий бар, 1 — предыдущий). |
| ____1 | Разделитель (пустой параметр) между группами настроек индикаторов. |
| INDICATOR2 | Имя пользовательского индикатора, буферы которого используются для определения торговых сигналов (второй индикатор). |
| Buffer_1_BUY2 | Номер буфера индикатора INDICATOR2, который используется для определения сигнала на покупку. |
| Buffer_1_SELL2 | Номер буфера индикатора INDICATOR2, который используется для определения сигнала на продажу. |
| SignalBar_12 | Номер бара, на котором ожидается сигнал от индикатора INDICATOR2 (0 — текущий бар, 1 — предыдущий). |
| ____2 | Разделитель (пустой параметр) между группами настроек индикаторов. |
| INDICATOR3 | Имя пользовательского индикатора, буферы которого используются для определения торговых сигналов (третий индикатор). |
| Buffer_1_BUY3 | Номер буфера индикатора INDICATOR3, который используется для определения сигнала на покупку. |
| Buffer_1_SELL3 | Номер буфера индикатора INDICATOR3, который используется для определения сигнала на продажу. |
| SignalBar_13 | Номер бара, на котором ожидается сигнал от индикатора INDICATOR3 (0 — текущий бар, 1 — предыдущий). |
| ____3 | Разделитель (пустой параметр) между группами настроек индикаторов. |
| INDICATOR4 | Имя пользовательского индикатора, буферы которого используются для определения торговых сигналов (четвёртый индикатор). |
| Buffer_1_BUY4 | Номер буфера индикатора INDICATOR4, который используется для определения сигнала на покупку. |
| Buffer_1_SELL4 | Номер буфера индикатора INDICATOR4, который используется для определения сигнала на продажу. |
| SignalBar_14 | Номер бара, на котором ожидается сигнал от индикатора INDICATOR4 (0 — текущий бар, 1 — предыдущий). |
| ____4 | Разделитель (пустой параметр) между группами настроек индикаторов. |
| INDICATOR5 | Имя пользовательского индикатора, буферы которого используются для определения торговых сигналов (пятый индикатор). |
| Buffer_1_BUY5 | Номер буфера индикатора INDICATOR5, который используется для определения сигнала на покупку. |
| Buffer_1_SELL5 | Номер буфера индикатора INDICATOR5, который используется для определения сигнала на продажу. |
| SignalBar_15 | Номер бара, на котором ожидается сигнал от индикатора INDICATOR5 (0 — текущий бар, 1 — предыдущий). |
| ____5 | Разделитель (пустой параметр) между группами настроек индикаторов. |
| txt_3 | Текстовый заголовок для раздела настроек фильтров времени. |
| time_type | Режим работы фильтра времени: разрешить торговлю только в указанные периоды или запретить торговлю в указанные периоды. |
| hour_filtr | Периоды суток для фильтрации торговли в формате ЧЧ:ММ-ЧЧ:ММ через запятую. Если пусто, фильтр времени отключён. |
| ____6 | Разделитель (пустой параметр) между группами настроек. |
| Adding | Включает или отключает режим доливки позиций при наличии свободной маржи и положительного результата по текущей стороне. |
| Step | Шаг доливки позиции в процентах от баланса, используемый при расчёте размера следующей доливки. |
| d_type | Тип прогрессии при расчёте шага доливки: геометрическая или арифметическая. |
| _____ | Разделитель (пустой параметр) между группами настроек. |
| lot_type | Основа для расчёта размера лота: от баланса или от профита. |
| Lot | Размер лота в процентах от баланса или профита в зависимости от настройки расчёта лота. |
| lot_doliv | Метод расчёта лота доливки: умножение на коэффициент или использование фиксированного значения. |
| koef_lot | Коэффициент или фиксированное значение, используемое при расчёте лота доливки в зависимости от выбранного типа. |
| ______ | Разделитель (пустой параметр) между группами настроек. |
| CloseRevers | При включении советник автоматически закрывает позиции противоположного направления при получении встречного сигнала от индикатора. |
| NoLossStart | Процент прибыли от баланса, при достижении которого включается режим безубытка. Если равно нулю, функция отключена. |
| MinProfitNoLoss | Минимальная прибыль в валюте депозита, при достижении которой активируется режим безубытка после достижения заданного процента прибыли. |
| ProfitTral | Процент прибыли от баланса, при достижении которого запускается трейлинг-стоп. Если равно нулю, функция отключена. |
| TralStop | Откат прибыли в процентах от максимальной, при котором трейлинг-стоп закрывает позицию. |
| _______ | Разделитель (пустой параметр) между группами настроек. |
| ProfClose | Процент прибыли от баланса, при достижении которого все открытые позиции закрываются. Если равно нулю, функция отключена. |
| LossClose | Процент убытка от баланса, при достижении которого все открытые позиции закрываются. Если равно нулю, функция отключена. |
| LossLastP | Процент убытка от последнего зафиксированного профита, при достижении которого позиции закрываются. Если равно нулю, функция отключена. |
| LossCurrP | Процент убытка от текущего профита, при достижении которого позиции закрываются. Если равно нулю, функция отключена. |
| MinCurrP | Минимальный процент текущего профита, необходимый для расчёта убытка по позиции. Если равно нулю, функция отключена. |
| ________ | Разделитель (пустой параметр) между группами настроек. |
| slippage | Допустимое проскальзывание цены при открытии и закрытии ордеров. |
| Magic | Магический номер ордеров, используемый для идентификации позиций, открытых данным советником. |
| AlertON | Включает или отключает всплывающие уведомления при появлении торговых сигналов и важных событий. |
Поиск по коду файла
#property version "9.00"
#property strict
#property description "Советник для любого индикатора"
#property description "Советник работает бесплатно в тестере, на всех демо счетах и на реальных счетах с депозитом до 100 usd. На более крупные депозиты можно купить советник без ограничений."
/*1) при определенном % прибыли что бы он выставлял без убыток и тралил в % по нарастающему %?.
True/false
2) Доливал позицию на свободную освободившеюся маржу
True /false
3)Открывал по сигналу сделку и закрывал по сигналу сделку
True /false
.4)Фиксация прибыли в % ограничение потерь в %*/
enum TYPE_D
{
MULT, // геометрическая прогрессия
SUMM // арифмитическая прогрессия
};
enum type_time
{
en_time, // разрешить торговлю
dis_time // запретить торговлю
};
enum type_lot
{
balance, // баланса
profit // профита
};
enum doliv_lot
{
koef, // умножать на коэффициент
fix // фиксированный лот
};
extern string INDICATOR1 = "FOREX FVG Indicator"; //индикатор буферов #1
extern int Buffer_1_BUY1 = 0; //номер буфера на покупку
extern int Buffer_1_SELL1 = 3; //номер буфера на продажу
extern int SignalBar_11 = 0; //бар на котором ждем сигнал (0- текущий 1 - прошлый)
extern string ____1 = "";//___
extern string INDICATOR2 = ""; //индикатор буферов #2
extern int Buffer_1_BUY2 = 0; //номер буфера на покупку
extern int Buffer_1_SELL2 = 1; //номер буфера на продажу
extern int SignalBar_12 = 1; //бар на котором ждем сигнал (0- текущий 1 - прошлый)
extern string ____2 = "";//___
extern string INDICATOR3 = ""; //индикатор буферов #3
extern int Buffer_1_BUY3 = 0; //номер буфера на покупку
extern int Buffer_1_SELL3 = 1; //номер буфера на продажу
extern int SignalBar_13 = 1; //бар на котором ждем сигнал (0- текущий 1 - прошлый)
extern string ____3 = "";//___
extern string INDICATOR4 = ""; //индикатор буферов #4
extern int Buffer_1_BUY4 = 0; //номер буфера на покупку
extern int Buffer_1_SELL4 = 1; //номер буфера на продажу
extern int SignalBar_14 = 1; //бар на котором ждем сигнал (0- текущий 1 - прошлый)
extern string ____4 = "";//___
extern string INDICATOR5 = ""; //индикатор буферов #5
extern int Buffer_1_BUY5 = 0; //номер буфера на покупку
extern int Buffer_1_SELL5 = 1; //номер буфера на продажу
extern int SignalBar_15 = 1; //бар на котором ждем сигнал (0- текущий 1 - прошлый)
extern string ____5 = "";//___
extern string txt_3 = "______ФИЛЬТРЫ ВРЕМЕНИ_______";//.
extern type_time time_type = en_time; // В указаные ниже периоды...
extern string hour_filtr = "04:00-08:00,08:30-09:15,15:00-15:45,17:15-18:00"; // Периоды суток формата ЧЧ:ММ-ЧЧ:ММ (если пусто, то фильтр откл.)
extern string ____6 = "";//___
extern bool Adding = false; //Доливал позицию на свободную освободившеюся маржу
extern int Step = 2; //шаг доливки (% от баланса)
extern TYPE_D d_type = SUMM; //тип шага доливки
extern string _____ = "";
extern type_lot lot_type = balance; //Расчет лота от ...
extern double Lot = 7.0; //лот в %
extern doliv_lot lot_doliv = koef; //Расчет лота доливки
extern double koef_lot = 1.0; //Значение для расчета лота доливки (коэфф. или фикс.)
extern string ______ = "";
extern bool CloseRevers = false ; //закрывать ордера при встречном сигнале
extern double NoLossStart = 0; //безубыток в % от Баланса (0- откл)
extern double MinProfitNoLoss = 0; //минимальная прибыль безубытка в валюте депозита
extern double ProfitTral = 100; //прибыль в % от Баланса при котором стартует трал (0- откл)
extern double TralStop = 50; //откат прибыли в % от максимальной
extern string _______ = "";
extern double ProfClose = 700; //прибыль в % от Баланса при которой закрываем все сделки (0- откл)
extern double LossClose = 0; //убыток в % от Баланса при котором закрываем все сделки (0- откл)
extern double LossLastP = 70; //убыток в % от последнего зафикс. профита (0- откл)
extern double LossCurrP = 0; //убыток в % от текущего профита (0- откл)
extern double MinCurrP = 0; //% миним. текущего профита для расчета убытка
extern string ________ = "";
extern int slippage = 20; // проскальзывание
extern int Magic = 10;
int Orders = 100000000; //максимальное кол-во открытых позиций
extern bool AlertON = true; //алерт при появлении сигнала на открытие позиции
datetime TimeBar;
double lastP = 0;
double max_perc = 0;
double STOPLEVEL;
string val;
double ProfitTrallStart=0;
bool Trall=false;
bool NoLoss=false;
int step_dolivka = 0;
ushort u_sep; // код символа разделителя
string result[];
int k;
double _lot;
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
Comment(txt,"\nProfit = ",DoubleToString(Profit,2)," (",DoubleToString(perc_profit,1),"%)",
"\nBalance = ",DoubleToString(AB,2),
"\nEquity = ",DoubleToString(AccountEquity(),2),
"\nFreeMargin = ",DoubleToString(AccountFreeMargin(),2),
"\n",IntegerToString(b)," buy ",IntegerToString(s)," sell",
"\n",DoubleToStr(lot_buy,2)," lots buy",
"\n",DoubleToStr(lot_sell,2)," lots sell");
if(!IsNewOrderAllowed()) return;
if(S1!=0 && !timetrade()) {S1 = 0; TimeBar=Time[0];}
if (S1>0 || (Adding && ProfitB>0 && b>0))
{
if (CloseRevers && s>0)
{
if (AlertON) Alert("Закрытие SELL на обратном сигнале ");
CLOSEORDER(OP_SELL);
_lot = LOT();
step_dolivka = 0;
}
if (b<Orders && (ProfitB+AB)>=calc_step(step_dolivka))
{
if (AlertON) Alert(Symbol()," Сигнал на доливку BUY");
if (lot_doliv==koef) _lot*=koef_lot;
else _lot=koef_lot;
_lot = CheckVolumeValue(_lot);
if(SendOrder(OP_BUY, _lot, NormalizeDouble(Ask,Digits))) {step_dolivka++; return;}
}
if (b<Orders && S1>0 && TimeBar!=Time[0])
{
if (AlertON) Alert(Symbol()," Сигнал от индикатора на открытие BUY");
_lot = LOT();
TimeBar=Time[0];
if(SendOrder(OP_BUY, _lot, NormalizeDouble(Ask,Digits))) return;
}
}
if (S1<0 || (Adding && ProfitS>0 && s>0))
{
if (CloseRevers && b>0)
{
if (AlertON) Alert("Закрытие BUY на обратном сигнале ");
CLOSEORDER(OP_BUY);
_lot = LOT();
step_dolivka = 0;
}
if (s<Orders && (ProfitS+AB)>=calc_step(step_dolivka))
{
if (AlertON) Alert(Symbol()," Сигнал на доливку SELL");
if (lot_doliv==koef) _lot*=koef_lot;
else _lot=koef_lot;
_lot = CheckVolumeValue(_lot);
if(SendOrder(OP_SELL, _lot, NormalizeDouble(Bid,Digits))) {step_dolivka++; return;}
}
if (s<Orders && S1<0 && TimeBar!=Time[0])
{
if (AlertON) Alert(Symbol()," Сигнал от индикатора на открытие SELL");
_lot = LOT();
TimeBar=Time[0];
if(SendOrder(OP_SELL, _lot, NormalizeDouble(Bid,Digits))) return;
}
}
}
bool timetrade()
{
if(k<1) return(true);
int index_hour;
datetime start_time, end_time;
for(index_hour=0; index_hour<k; index_hour++)
{
start_time = StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+StringSubstr(result[index_hour],0,5));
end_time = StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+StringSubstr(result[index_hour],6,5));
iПоказано первые 50% кода (символов: 24368)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.