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

snake.mq5

Вы автор или правообладатель?

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

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

О программе

Snake — это пользовательский индикатор для платформы MetaTrader 5, отображающий аналитическую линию в окне графика. Индикатор рассчитывает взвешенную цену на основе типичной цены с нестандартным коэффициентом (2*Close + High + Low)/4 и применяет алгоритм скользящего сглаживания с настраиваемым полупериодом.

Индикатор использует один буфер для отрисовки линии красным цветом. При расчёте применяется метод линейно взвешенного скользящего среднего (LWMA) для крайней левой точки, а для остальных баров используется рекуррентная формула с поочерёдным сдвигом суммы и весов.

Индикатор требует минимум 150 баров на графике для корректной работы. Параметр полупериода ограничивается минимальным значением 3 при входе меньше 3. Расчёт начинается справа налево с использованием двух вспомогательных функций для первичного и последующего вычисления значений.

Настройки программы

НастройкаОписание
Snake_HalfCycle Задаёт полупериод индикатора Snake, определяющий глубину сглаживания и количество баров, используемых при расчёте. Допустимые значения — целые числа от 4 и выше; при значении меньше 3 автоматически устанавливается в 3. По умолчанию равно 5.
Получить полный код

Поиск по коду файла

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

extern int Snake_HalfCycle=5; // Snake_HalfCycle = 4...10 or other

double Snake_Buffer[];
double Snake_Sum, Snake_Weight, Snake_Sum_Minus, Snake_Sum_Plus;
int Snake_FullCycle;

int init()
{
      // код доступен только после оплаты
   }

int start()
{
      // код доступен только после оплаты
   }

void Snake(int Pos)
{
int i;
   if(Pos<=Snake_HalfCycle+1) Pos=Snake_HalfCycle+2;
   Snake_Buffer[Pos]=SnakeFirstCalc(Pos);
   Pos--;
   while(Pos>=Snake_HalfCycle)
   {
      Snake_Buffer[Pos]=SnakeNextCalc(Pos);
      Pos--;
   }
   while(Pos>0)
   {
      Snake_Buffer[Pos]=SnakeFirstCalc(Pos);
      Pos--;
   }
   if(Pos==0) 
      Snake_Buffer[0]=iMA(NULL,0,Snake_HalfCycle,0,MODE_LWMA,PRICE_TYPICAL,0);
   return;
}

double SnakePrice(int Shift)
{
   return((2*Close[Shift]+High[Shift]+Low[Shift])/4);
}

double SnakeFirstCa

Показано первые 50% кода (символов: 2277)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
227,70₽ ≈ $2.78