flow v1.6.6.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «flow v1.6.6.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, использующий полосы Боллинджера и стохастик для формирования торговых сигналов. Открывает позиции на покупку и продажу при определённых условиях, поддерживает режим множественных ордеров с наращиванием лота. Работает с контролем рисков через стоп-лосс, тейк-профит и аварийное отключение при снижении капитала.
Включает настраиваемые фильтры по времени и дням недели, позволяющие ограничивать торговлю конкретными часами и сессиями. Фильтры применяются отдельно для длинных и коротких позиций. Доступна настройка старшего таймфрейма для дополнительной фильтрации сигналов.
Реализована функция динамического изменения размера лота в зависимости от текущего уровня капитала. При достижении заданного количества активных позиций предусмотрено закрытие всех ордеров по сигналу ретрейсмента. Торговля может быть полностью отключена при падении средств ниже заданного порога.
Настройки программы
| Настройка | Описание |
|---|---|
| MagicNumber | Магический номер — Уникальный идентификатор ордеров, открываемых советником. |
| Lot | Лот — Начальный размер лота для каждой сделки. |
| StopLoss | Стоп-лосс — Расстояние стоп-лосса в пунктах от цены входа. |
| TPRetracement | ТП ретрейсмента — Параметр для расчёта уровня фиксации прибыли при закрытии по ретрейсменту. |
| TakeProfit | Тейк-профит — Расстояние тейк-профита в пунктах от цены входа. |
| BandPeriod | Период полос — Период расчёта полос Боллинджера. |
| BandShift | Сдвиг полос — Горизонтальный сдвиг полос Боллинджера. |
| BandDeviation | Отклонение полос — Множитель отклонения полос Боллинджера от средней линии. |
| BandTriggerBuffer | Буфер триггера полос — Дополнительный буфер в пунктах для срабатывания сигнала при пробое полосы. |
| MultipleOrders | Множественные ордера — Включает режим открытия нескольких ордеров одновременно. |
| MagicNumber2 | Магический номер 2 — Второй магический номер для дополнительных ордеров в режиме наращивания. |
| RetracementActivate | Активация ретрейсмента — Минимальное количество активных ордеров для включения механизма закрытия по ретрейсменту. |
| MaximumOrders | Максимум ордеров — Максимально допустимое количество активных ордеров в режиме множественных позиций. |
| OrderInterval | Интервал ордеров — Шаг в пунктах между уровнями для открытия последующих ордеров. |
| OrderMultiplier | Множитель ордеров — Множитель увеличения размера лота при каждом следующем ордере. |
| OrderIncrementMin | Минимальный прирост лота — Минимальное увеличение лота между последовательными ордерами. |
| LotMultiplier | Множитель лота — Включает автоматическое изменение размера лота в зависимости от текущего капитала. |
| LotMultiplierPercent | Процент множителя лота — Процентное изменение лота при росте или падении капитала относительно начального значения. |
| InitialEquity | Начальный капитал — Базовое значение капитала, используемое для расчёта динамического размера лота. |
| EquityKillSwitch | Аварийное отключение по капиталу — Включает блокировку торговли при падении капитала ниже заданного порога. |
| EquityCutoff | Порог капитала — Значение капитала, при достижении которого советник прекращает открытие новых позиций. |
| SameSL | Общий стоп-лосс — Фиксирует стоп-лосс новых ордеров на уровне стоп-лосса предыдущей позиции. |
| HigherBandFilter | Фильтр старших полос — Включает дополнительную фильтрацию сигналов по полосам Боллинджера на старшем таймфрейме. |
| HighTimeframe | Старший таймфрейм — Таймфрейм для расчёта полос Боллинджера фильтра. Варианты: M1, M5, M15, M30, H1, H4, D1, W1. |
| HighBandPeriod | Период полос фильтра — Период расчёта полос Боллинджера для фильтра на старшем таймфрейме. |
| HighBandShift | Сдвиг полос фильтра — Горизонтальный сдвиг полос Боллинджера фильтра. |
| HighBandDeviation | Отклонение полос фильтра — Множитель отклонения полос Боллинджера фильтра от средней линии. |
| Hourly filter (TimeFilter) | Почасовой фильтр — Включает фильтрацию торговли по часам суток. |
| t00to01 | 00:00–01:00 — Настройка разрешения торговли для часа с 00:00 до 01:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t01to02 | 01:00–02:00 — Настройка разрешения торговли для часа с 01:00 до 02:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t02to03 | 02:00–03:00 — Настройка разрешения торговли для часа с 02:00 до 03:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t03to04 | 03:00–04:00 — Настройка разрешения торговли для часа с 03:00 до 04:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t04to05 | 04:00–05:00 — Настройка разрешения торговли для часа с 04:00 до 05:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t05to06 | 05:00–06:00 — Настройка разрешения торговли для часа с 05:00 до 06:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t06to07 | 06:00–07:00 — Настройка разрешения торговли для часа с 06:00 до 07:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t07to08 | 07:00–08:00 — Настройка разрешения торговли для часа с 07:00 до 08:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t08to09 | 08:00–09:00 — Настройка разрешения торговли для часа с 08:00 до 09:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t09to10 | 09:00–10:00 — Настройка разрешения торговли для часа с 09:00 до 10:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t10to11 | 10:00–11:00 — Настройка разрешения торговли для часа с 10:00 до 11:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t11to12 | 11:00–12:00 — Настройка разрешения торговли для часа с 11:00 до 12:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t12to13 | 12:00–13:00 — Настройка разрешения торговли для часа с 12:00 до 13:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t13to14 | 13:00–14:00 — Настройка разрешения торговли для часа с 13:00 до 14:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t14to15 | 14:00–15:00 — Настройка разрешения торговли для часа с 14:00 до 15:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t15to16 | 15:00–16:00 — Настройка разрешения торговли для часа с 15:00 до 16:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t16to17 | 16:00–17:00 — Настройка разрешения торговли для часа с 16:00 до 17:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t17to18 | 17:00–18:00 — Настройка разрешения торговли для часа с 17:00 до 18:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t18to19 | 18:00–19:00 — Настройка разрешения торговли для часа с 18:00 до 19:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t19to20 | 19:00–20:00 — Настройка разрешения торговли для часа с 19:00 до 20:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t20to21 | 20:00–21:00 — Настройка разрешения торговли для часа с 20:00 до 21:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t21to22 | 21:00–22:00 — Настройка разрешения торговли для часа с 21:00 до 22:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t22to23 | 22:00–23:00 — Настройка разрешения торговли для часа с 22:00 до 23:00. Варианты: Long & Short, Long Only, Short Only, None. |
| t23to00 | 23:00–00:00 — Настройка разрешения торговли для часа с 23:00 до 00:00. Варианты: Long & Short, Long Only, Short Only, None. |
| DayFilter | Дневной фильтр — Включает фильтрацию торговли по дням недели. |
| Monday | Понедельник — Разрешение торговли в понедельник. Варианты: Long & Short, Long Only, Short Only, None. |
| Tuesday | Вторник — Разрешение торговли во вторник. Варианты: Long & Short, Long Only, Short Only, None. |
| Wednesday | Среда — Разрешение торговли в среду. Варианты: Long & Short, Long Only, Short Only, None. |
| Thursday | Четверг — Разрешение торговли в четверг. Варианты: Long & Short, Long Only, Short Only, None. |
| Friday | Пятница — Разрешение торговли в пятницу. Варианты: Long & Short, Long Only, Short Only, None. |
Поиск по коду файла
#property version "1.00"
#property strict
input int MagicNumber = 9321;
input double Lot = 0.1;
input double StopLoss = 1000;
input double TPRetracement = 0.5;
input double TakeProfit = 100;
input int BandPeriod = 10;
input int BandShift = 0;
input double BandDeviation = 2.5;
input double BandTriggerBuffer = 50;
input bool MultipleOrders = true;
input int MagicNumber2 = 9322;
input int RetracementActivate = 0;
input int MaximumOrders = 5;
input double OrderInterval = 500;
input double OrderMultiplier = 3;
input double OrderIncrementMin = 0.01;
input bool LotMultiplier = false;
input double LotMultiplierPercent = 1;
input double InitialEquity = 10000;
input bool EquityKillSwitch = false;
input double EquityCutoff = 1700;
/*input*/ bool StochasticFilter = false;
/*input*/ int StoK = 50;
/*input*/ int StoD = 20;
/*input*/ int StoSlow = 20;
input bool SameSL = false;
enum inputOptionsB{
C1 = PERIOD_M1, //1 Minute
C2 = PERIOD_M5, //5 Minute
C3 = PERIOD_M15, //15 Minute
C4 = PERIOD_M30, //30 Minute
C5 = PERIOD_H1, //1 Hour
C6 = PERIOD_H4, //4 Hours
C7 = PERIOD_D1, //1 Day
C8 = PERIOD_W1, //1 Week
};
input bool HigherBandFilter = false;
input inputOptionsB HighTimeframe = C5;
input int HighBandPeriod = 10;
input int HighBandShift = 0;
input double HighBandDeviation = 0.1;
input bool TimeFilter = true;//Hourly filter
enum inputOptionsA{
B1 = 2, //Long & Short
B2 = 1, //Long Only
B3 = 3, //Short Only
B4 = 0, //None
};
input inputOptionsA t00to01 = B1;
input inputOptionsA t01to02 = B1;
input inputOptionsA t02to03 = B1;
input inputOptionsA t03to04 = B1;
input inputOptionsA t04to05 = B1;
input inputOptionsA t05to06 = B1;
input inputOptionsA t06to07 = B1;
input inputOptionsA t07to08 = B1;
input inputOptionsA t08to09 = B1;
input inputOptionsA t09to10 = B1;
input inputOptionsA t10to11 = B1;
input inputOptionsA t11to12 = B1;
input inputOptionsA t12to13 = B1;
input inputOptionsA t13to14 = B1;
input inputOptionsA t14to15 = B1;
input inputOptionsA t15to16 = B1;
input inputOptionsA t16to17 = B1;
input inputOptionsA t17to18 = B1;
input inputOptionsA t18to19 = B1;
input inputOptionsA t19to20 = B1;
input inputOptionsA t20to21 = B1;
input inputOptionsA t21to22 = B1;
input inputOptionsA t22to23 = B1;
input inputOptionsA t23to00 = B1;
input bool DayFilter = true;
input inputOptionsA Monday = B1;
input inputOptionsA Tuesday = B1;
input inputOptionsA Wednesday = B1;
input inputOptionsA Thursday = B1;
input inputOptionsA Friday = B1;
bool StoInd;
double StoSignal, StoMain;
double Lot1, SL, TP, SubLot1, SubSL, SubTP;
double BandUpper, BandMain, BandLower;
double counter, counterFinal,counter1, counterFinal1;
bool OkaySign, OkaySignBuy, OkaySignSell,NewBar;
static int BARS;
int MN;
double InitPrice, LastPrice, LotHolder, HighBandUpper, HighBandLower;
bool CloseBool;
int OrderHolder;
double SLHolder;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
// код доступен только после оплаты
}
if(IsNewBar())
{
NewBar = true;
BandMain = iBands(Symbol(),0,BandPeriod,BandDeviation,BandShift,PRICE_CLOSE,0,1);
BandUpper = iBands(Symbol(),0,BandPeriod,BandDeviation,BandShift,PRICE_CLOSE,1,1);
BandLower = iBands(Symbol(),0,BandPeriod,BandDeviation,BandShift,PRICE_CLOSE,2,1);
StoCheckLong(); BandCheckLong();
StoCheckShort(); BandCheckShort();
for(int a=0; a<=OrdersTotal(); a++)
{
if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol()&& (OrderMagicNumber()== MagicNumber || OrderMagicNumber() == MagicNumber2))
{
counter = counter +1;
}
if(a+1 == OrdersTotal())
{
counterFinal = counter;
counter = 0;
}
}
}
if(counterFinal == 0)
{
if(iClose(Symbol(),0,1) > BandUpper + BandTriggerBuffer*SymbolInfoDouble(Symbol(),SYMBOL_POINT) && StoCheckShort())
{
if(LotMultiplier == true)
{Lot1 = NormalizeDouble(Lot * (1 + LotMultiplierPercent*(AccountEquity()/InitialEquity-1)),2); }
else {Lot1 = Lot;}
MN = MagicNumber; SL = StopLoss; TP = TakeProfit;
makeOrder(OP_SELL); InitPrice = SymbolInfoDouble(Symbol(),SYMBOL_BID); LastPrice = 0; LotHolder = Lot1;
}
if(iClose(Symbol(),0,1) < BandLower - BandTriggerBuffer*SymbolInfoDouble(Symbol(),SYMBOL_POINT) && StoCheckLong())
{
if(LotMultiplier == true) {Lot1 = NormalizeDouble(Lot * (1 + LotMultiplierPercent*(AccountEquity()/InitialEquity-1)),2); }
else {Lot1 = Lot;}
MN = MagicNumber; SL = StopLoss; TP = TakeProfit;
makeOrder(OP_BUY); InitPrice = SymbolInfoDouble(Symbol(),SYMBOL_ASK); LastPrice = 0; LotHolder = Lot1;
}
}
SymbolInfoDouble("EURUSD",SYMBOL_BID);
}
for(int c=0; c<=OrdersTotal(); c++)
{
if(OrderSelect(c,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol()&& (OrderMagicNumber()== MagicNumber || OrderMagicNumber() == MagicNumber2))
{
counter1 = counter1 +1;
}
if(c+1 == OrdersTotal())
{
counterFinal1 = counter1;
counter1 = 0;
}
}
}
if(MultipleOrders == true)
{
for(int b=0; b<=OrdersTotal(); b++)
{
if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol()&&OrderMagicNumber()== MagicNumber)
{
if(OrderLots() == LotHolder)
{
if(OrderProfit() < (-1)*OrderLots()*OrderInterval*counterFinal1 && counterFinal1>0)
{
if(OrderType() == OP_BUY)
{OkaySignBuy = true;}
if(OrderType() == OP_SELL)
{OkaySignSell = true;}
OkaySign = true;
SLHolder = OrderStopLoss();
}
}
SubLot1 = OrderLots();
SubTP = OrderTakeProfit();
SubSL = OrderStopLoss();
}
if(b+1 == OrdersTotal())
{
if(counterFinal1 < MaximumOrders && OkaySign == true)
{
if(OkaySignBuy == true)
{if(LotMultiplier == true){Lot1 = NormalizeDouble(MathMax(SubLot1 + OrderIncrementMin,Lot*MathPow(OrderMultiplier,counterFinal1)* (1 + LotMultiplierPercent*(AccountEquity()/InitialEquity-1))),2);}
else {Lot1 = NormalizeDouble(MathMax(SubLot1 + OrderIncrementMin,Lot*MathPow(OrderMultiplier,counterFinal1)),2);}
MN = MagicNumber2; TP = NormalizeDouble((SubTP-SymbolInfoDouble(Symbol(),SYMBOL_ASK))*(1/SymbolInfoDouble(Symbol(),SYMBOL_POINT)),0);
if(SameSL == true)
{SL = NormalizeDouble((SymbolInfoDouble(Symbol(),SYMBOL_ASK)-SLHolder)*(1/SymbolInfoDouble(Symbol(),SYMBOL_POINT)),0);}
else {SL = StopLoss;}
makeOrder(OP_BUY);}
if(OkaySignSell == true)
{if(LotMultiplier == true)
{Lot1 = NormalizeDouble(MathMax(SubLot1 + OrderIncrementMin,Lot*MathPow(OrderMultiplier,counterFinal1)* (1 + LotMultiplierPercent*(AccountEquity()/InitialEquity-1))),2);}
else {Lot1 = NormalizeDouble(MathMax(SubLot1 + OrderIncrementMin,Lot*MathPow(OrderMultiplier,counterFinal1)),2);}
MN = MagicNumber2; TP = NormalizeDouble((SymbolInfoDouble(Symbol(),SYMBOL_BID)-SubTP)*(1/SymbolInfoDouble(Symbol(),SYMBOL_POINT)),0);
if(SameSL == true)
{SL = NormalizeDouble((SLHolder-SymbolInfoDouble(Symbol(),SYMBOL_BID))*(1/SymbolInfoDouble(Symbol(),SYMBOL_POINT)),0);}
else {SL = StopLoss;}
makeOrder(OP_SELL);}
OkaySign = false;
OkaySignBuy = false;
OkaySignSell = false;
}
}
if(OrderSymbol() == Symbol()&&OrderMagicNumber()== MagicNumber2)
{
if(counterFinal1 > 1)
{
if(OrderType() == OP_BUY)
{LastPrice = OrderOpenPrice();}
if(OrderType() == OP_SELL)
{LastPrice = OrderOpenPrice();}
}
}
}
}
if(counterFinal1 >= RetracementActivate)
{
for(int c=0; c<=OrdersTotal(); c++)
{
if(OrderSelect(c,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol()&&(OrderMagicNumber()== MagicNumber || OrderMagicNumber() == MagicNumber2))
{
Показано первые 50% кода (символов: 12406)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.