ForexMT4Systems Cycle
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «forexmt4systems_cycle.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
ForexMT4Systems Cycle — это пользовательский индикатор для платформы MetaTrader 4, предназначенный для анализа ценовых циклов на основе скользящей средней типа SMMA и дополнительных фильтров. Индикатор выделяет два уровня циклов — основной и младший — и отображает сигналы покупок и продаж каждого уровня в виде гистограмм в отдельном окне графика.
Для фильтрации сигналов индикатор предлагает нуль-задерживающий фильтр, который можно настроить на основе простой скользящей средней или индекса относительной силы. Включение фильтра цикла позволяет дополнительно уточнять отображаемые сигналы в зависимости от направления изменения фильтрового значения.
Визуализация включает настраиваемые стрелки для обоих уровней циклов с возможностью выбора цвета, размера и типа маркера. Также предусмотрены уведомления различных типов — всплывающие сообщения, звуковые сигналы, push-уведомления и email-оповещения — с возможностью привязки к конкретным циклам и условиям появления сигналов.
Настройки программы
| Настройка | Описание |
|---|---|
| PriceActionFilter | Фильтр ценового действия — Период скользящей средней SMMA, используемой для расчёта основного ценового цикла. |
| Length | Длина — Множитель, используемый при расчёте длины ценового диапазона для определения цикловых уровней. |
| MajorCycleStrength | Сила основного цикла — Задаёт силу (множитель) основного цикла, влияющую на порог срабатывания сигналов основного уровня. |
| UseCycleFilter | Использовать фильтр цикла — Включает или отключает дополнительный циклический фильтр для уточнения сигналов младшего цикла. |
| UseFilterSMAorRSI | Тип фильтра SMA/RSI — Выбирает тип базового фильтра: 1 — простая скользящая средняя, 2 — индекс относительной силы. |
| FilterStrengthSMA | Сила фильтра SMA — Задаёт силу (период) фильтра нуль-задерживающей скользящей средней при использовании простой скользящей средней в качестве базового фильтра. |
| FilterStrengthRSI | Сила фильтра RSI — Задаёт силу (период) фильтра нуль-задерживающей скользящей средней при использовании индекса относительной силы в качестве базового фильтра. |
| alertsOn | Включить уведомления — Включает или отключает все типы уведомлений для индикатора. |
| alertsOnMajorCycle | Уведомления основного цикла — Включает уведомления для сигналов основного цикла. |
| alertsOnMinorCycle | Уведомления младшего цикла — Включает уведомления для сигналов младшего цикла. |
| alertsOnCurrent | Уведомления для текущего бара — Определяет, будут ли уведомления отправляться по текущему (незавершённому) бару или по предыдущему. |
| alertsMessage | Всплывающие сообщения — Включает отображение всплывающих сообщений в терминале при появлении сигналов. |
| alertsSound | Звуковые уведомления — Включает воспроизведение звукового сигнала при появлении сигналов. |
| alertsNotify | Push-уведомления — Включает отправку push-уведомлений на мобильное устройство при появлении сигналов. |
| alertsEmail | Email-уведомления — Включает отправку email-уведомлений при появлении сигналов основного или младшего цикла. |
| arrowsVisible | Видимость стрелок — Включает или отключает отображение всех стрелок на графике. |
| arrowsOnMajorCycle | Стрелки основного цикла — Включает или отключает отображение стрелок основного цикла. |
| arrowsMajorUpCycleColor | Цвет стрелки восходящего основного цикла — Цвет стрелки восходящего основного цикла. |
| arrowsMajorDnCycleColor | Цвет стрелки нисходящего основного цикла — Цвет стрелки нисходящего основного цикла. |
| arrowsMajorUpCycleCode | Код стрелки восходящего основного цикла — Код маркера стрелки восходящего основного цикла. |
| arrowsMajorDnCycleCode | Код стрелки нисходящего основного цикла — Код маркера стрелки нисходящего основного цикла. |
| arrowsMajorCycleSize | Размер стрелок основного цикла — Задаёт толщину линии стрелок основного цикла. |
| arrowsOnMinorCycle | Стрелки младшего цикла — Включает или отключает отображение стрелок младшего цикла. |
| arrowsMinorUpCycleColor | Цвет стрелки восходящего младшего цикла — Цвет стрелки восходящего младшего цикла. |
| arrowsMinorDnCycleColor | Цвет стрелки нисходящего младшего цикла — Цвет стрелки нисходящего младшего цикла. |
| arrowsMinorUpCycleCode | Код стрелки восходящего младшего цикла — Код маркера стрелки восходящего младшего цикла. |
| arrowsMinorDnCycleCode | Код стрелки нисходящего младшего цикла — Код маркера стрелки нисходящего младшего цикла. |
| arrowsMinorCycleSize | Размер стрелок младшего цикла — Задаёт толщину линии стрелок младшего цикла. |
| arrowsIdentifier | Идентификатор стрелок — Строковый идентификатор, используемый для именования графических объектов стрелок на графике. |
| arrowsUpperGap | Верхний зазор стрелок — Множитель верхнего зазора для размещения стрелок выше цены (в единицах ATR). |
| arrowsLowerGap | Нижний зазор стрелок — Множитель нижнего зазора для размещения стрелок ниже цены (в единицах ATR). |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 DarkSlateGray
#property indicator_color2 Blue //major bottom
#property indicator_color3 Red //major top
#property indicator_color4 LimeGreen //minor bottom
#property indicator_color5 PaleVioletRed //minor top
#property indicator_width1 4
#property indicator_width2 4
#property indicator_width3 4
#property indicator_width4 1
#property indicator_width5 1
#property indicator_minimum -1.2
#property indicator_maximum 1.2
extern int PriceActionFilter = 1;
extern int Length = 3;
extern int MajorCycleStrength = 4;
extern bool UseCycleFilter = false;
extern int UseFilterSMAorRSI = 1;
extern int FilterStrengthSMA = 12;
extern int FilterStrengthRSI = 21;
extern bool alertsOn = true;
extern bool alertsOnMajorCycle = true;
extern bool alertsOnMinorCycle = false;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsNotify = false;
extern bool alertsEmail = false;
extern bool arrowsVisible = true;
extern bool arrowsOnMajorCycle = true;
extern color arrowsMajorUpCycleColor = LimeGreen;
extern color arrowsMajorDnCycleColor = Red;
extern int arrowsMajorUpCycleCode = 241;
extern int arrowsMajorDnCycleCode = 242;
extern int arrowsMajorCycleSize = 2;
extern bool arrowsOnMinorCycle = true;
extern color arrowsMinorUpCycleColor = DeepSkyBlue;
extern color arrowsMinorDnCycleColor = PaleVioletRed;
extern int arrowsMinorUpCycleCode = 159;
extern int arrowsMinorDnCycleCode = 159;
extern int arrowsMinorCycleSize = 5;
extern string arrowsIdentifier = "ci arrows1";
extern double arrowsUpperGap = 1.0;
extern double arrowsLowerGap = 1.0;
double LineBuffer[];
double MajorCycleBuy[];
double MajorCycleSell[];
double MinorCycleBuy[];
double MinorCycleSell[];
double ZL1[];
double CyclePrice = 0.0, Strength =0.0, SweepA = 0.0, SweepB = 0.0;
int Switch = 0, Switch2 = 0, SwitchA = 0, SwitchB = 0, SwitchC = 0, SwitchD = 0, SwitchE = 0, SwitchAA = 0, SwitchBB = 0;
double Price1BuyA = 0.0, Price2BuyA = 0.0;
int Price1BuyB = 1.0, Price2BuyB = 1.0;
double Price1SellA = 0.0, Price2SellA = 0.0;
int Price1SellB = 0.0, Price2SellB = 0.0;
bool ActiveSwitch = True, BuySwitchA = FALSE, BuySwitchB = FALSE, SellSwitchA = FALSE, SellSwitchB = FALSE;
int BuySellFac = 01;
bool Condition1, Condition2, Condition3, Condition6;
int SignalIndex = 0;
int init() {
// код доступен только после оплаты
}
int deinit()
{
deleteArrows();
return(0);
}
int start() {
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
int position=Bars-counted_bars;
if (position<0) position=0;
int rnglength = 250;
double range = 0.0, srange = 0.0;
for (int pos = position; pos >=0; pos--)
{
srange = 0.0;
int j = 0;
for (int i=0;i<rnglength;i++)
{
j++;
int posr = pos + i;
if (posr >= Bars)
break;
srange = srange + (High[posr] - Low[posr]);
}
range = srange / j * Length;
int BarNumber = Bars-pos; //??????????
if (BarNumber < 0)
BarNumber = 0;
CyclePrice = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos);
if (UseFilterSMAorRSI == 1)
ZL1[pos] = ZeroLag(CyclePrice,FilterStrengthSMA, pos);
if (UseFilterSMAorRSI == 2)
ZL1[pos] = ZeroLag( iRSI(NULL, 0, 14, CyclePrice, FilterStrengthRSI ), FilterStrengthRSI, pos);
if (ZL1[pos] > ZL1[pos+1])
SwitchC = 1;
if (ZL1[pos] < ZL1[pos+1])
SwitchC = 2;
if (BarNumber <= 1)
{
if (Strength == 0)
SweepA = range;
else
SweepA = Strength;
Price1BuyA = CyclePrice;
Price1SellA = CyclePrice;
}
/* ***************************************************************** */
if (BarNumber > 1)
{
if (Switch > -1)
{
if (CyclePrice < Price1BuyA)
{
if (UseCycleFilter && (SwitchC == 2) && BuySwitchA )
{
MinorCycleBuy[pos + BarNumber - Price1BuyB] = 0; //MinorBuySell
LineBuffer[pos + BarNumber - Price1BuyB ] = 0; //line
}
if (!UseCycleFilter && BuySwitchA)
{
MinorCycleBuy[pos +BarNumber - Price1BuyB] = 0;
LineBuffer[pos +BarNumber - Price1BuyB] = 0;
}
Price1BuyA = CyclePrice;
Price1BuyB = BarNumber;
BuySwitchA = TRUE;
}
else if (CyclePrice > Price1BuyA)
{
SwitchA = BarNumber - Price1BuyB;
if (!UseCycleFilter)
{
MinorCycleBuy[pos +SwitchA] = -1;//MinorBuySell - DarkGreen
LineBuffer[pos +SwitchA] = -1;//line
}
if (UseCycleFilter && SwitchC == 1)
{
MinorCycleBuy[pos +SwitchA] = -1; //MinorBuySell
LineBuffer[pos +SwitchA] = -1; //line
SwitchD = 1;
}
else
{
SwitchD = 0;
}
BuySwitchA = TRUE;
double cyclePrice1 = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchA);
if (ActiveSwitch)
{
Condition1 = CyclePrice - cyclePrice1 >= SweepA;
}
else
{
Condition1 = CyclePrice >= cyclePrice1 * (1 + SweepA / 1000);
}
if (Condition1 && SwitchA >= BuySellFac)
{
Switch = - 1;
Price1SellA = CyclePrice;
Price1SellB = BarNumber;
SellSwitchA = FALSE;
BuySwitchA = FALSE;
}
}
}
if(Switch < 1)
{
if (CyclePrice > Price1SellA)
{
if (UseCycleFilter && SwitchC == 1 && SellSwitchA )
{
MinorCycleSell[pos +BarNumber - Price1SellB] = 0; //MinorBuySell
LineBuffer[pos +BarNumber - Price1SellB ] = 0; //line
}
if (!UseCycleFilter && SellSwitchA )
{
MinorCycleSell[pos +BarNumber - Price1SellB] = 0;//MinorBuySell
LineBuffer[pos +BarNumber - Price1SellB] = 0;//line
}
Price1SellA = CyclePrice;
Price1SellB = BarNumber;
SellSwitchA = TRUE;
}
else if (CyclePrice < Price1SellA)
{
SwitchA = BarNumber - Price1SellB;
if (!UseCycleFilter)
{
MinorCycleSell[pos +SwitchA] = 1; // MinorBuySell darkRed
LineBuffer[pos +SwitchA] = 1; //"CycleLine"
}
if (UseCycleFilter && (SwitchC == 2))
{
MinorCycleSell[pos +SwitchA] = 1;//MinorBuySell darkRed
LineBuffer[pos +SwitchA] = 1;//CycleLine
SwitchD = 2;
}
else
SwitchD = 0;
SellSwitchA = TRUE;
double cyclePrice2 = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSПоказано первые 50% кода (символов: 10635)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.