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

ForexMT4Systems Cycle

forexmt4systems_cycle.mq5

Похожие материалы по тегам

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

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 и перейдите к оплате.

Стоимость полного кода
1 063,50₽ ≈ $13.00