Библиотека польльских индикаторовзовате. БИБЛИОТЕКА ПОЛЬЗОВАТЕЛЬСКИХ ИНДИКАТОРОВ АЛЬФА-ДИРЕКТ4.0. Инструкция по созданию и импорту пользовательских индикаторов 4 библиотека пользовательских индикаторов 5
Скачать 1.9 Mb.
|
Fractal – Фрактал (экстремум)Фракталы Билла Вильямса (В.Williams) показывают особые точки или локальные экстремумы. «Особые точки» - это экстремальные точки на графике, в которых происходит изменение направления движения цены. Эти точки говорят, что в данный момент времени на данном уровне существенно меняется соотношение спроса и предложения, которое может происходить из-за выхода новой информации или из-за достижения определенных ценовых уровней. Параметр «Period» данного индикатора показывает порядок фрактала, т.е. какое количество точек справа и слева должно быть ниже (выше) экстремума. Пример. Построен индикатор Fractal с параметром Period = 5 на акциях Сбербанка. Автор: Билл Вильямс (Bill Williams) Первоисточник: «Новые измерения в биржевой торговле». Код Альфа-Директ function Initialize() { IndicatorName = "Fractal"; // Задайте название индикатора и сохраните с данным именем AddInput("Input", Inputs.Candle); AddParameter("Period", 5); PriceStudy = true; AddSeries("H", DrawAs.Custom, Color.Coral); AddSeries("L", DrawAs.Custom, Color.LightGreen); } function Evaluate() { // AlfaDirect. 2014. OX // Fractal. Period - число точек справа и слева от экстремума, которые ниже (выше) него if (CurrentIndex > 2 * Period) { var xH = 0; var xL = 0; var HPoint = Input.High[-Period]; var LPoint = Input.Low[-Period]; for (var i = 0; i < Period; i++ ) { if ( HPoint >= Input.High[i+1-Period] && HPoint >= Input.High[-i-1-Period] ) xH = xH + 1; if ( LPoint <= Input.Low[i+1-Period] && LPoint <= Input.Low[-i-1-Period] ) xL = xL + 1; } if ( xH == Period ) { H[Period] = HPoint; } if ( xL == Period ) { L[Period] = LPoint; } H.DrawArrowDown(); L.DrawArrowUp(); } } ZZ (ZigZag) – ЗигзагЗигзаг – показывает локальные экстремумы цены, полученные по high и low, которые формируются при отклонении цены (close) от них на заданную величину, заданную в процентах. Последнее плечо индикатора перестраивается и соединяется с текущим максимальным или минимальным значением цены. Данный индикатор используется для наглядного представления направленного движения цены на истории. Параметр «Delta» индикатора определяет величину движения цены (в процентах) в противоположную сторону для формирования экстремума. Код Альфа-Директ. function Initialize() { IndicatorName = "ZZ"; PriceStudy = true; AddInput("Input", Inputs.Candle); AddSeries("ZZWL", DrawAs.Line, Color.Blue); AddSeries("Marker", DrawAs.Custom, Color.Red); AddParameter("Delta", 0.2); AddGlobalVariable("peakbar", Types.Int, 0); AddGlobalVariable("troughbar", Types.Int, 0); AddGlobalVariable("Direction", Types.Int, 0); AddGlobalVariable("hi", Types.Double, 0); AddGlobalVariable("lo", Types.Double, 0); AddGlobalVariable("hibar", Types.Int, 0); AddGlobalVariable("lobar", Types.Int, 0); } function Evaluate() { // AlfaDirect 2015. OX // ZZ (ZigZag) // Новый минимум, если Close бара вырос от текущего Low на % // Новый максимум, если Close бара снизился от текущего High на % if (CurrentIndex < 2) { lo = Input.Low[0]; //First min candle for Low hi = Input.High[0]; //First max candle for High } else { double delta = 0.01*Delta; //Detected Local max and Local min if(Input.High[0] > hi) { hi = Input.High[0]; hibar = CurrentIndex; } if(Input.Low[0] < lo) { lo = Input.Low[0]; lobar = CurrentIndex; } if(Direction >= 0) { if(Input.Close[0] > (1 + delta)*lo) { Direction = -1; hi = Input.High[0]; hibar = CurrentIndex; troughbar = lobar; ZZWL[lobar-CurrentIndex] = lo; Marker[lobar-CurrentIndex] = lo; } } if(Direction <= 0) { if(Input.Close[0] < (1 - delta)*hi) { Direction = 1; lo = Input.Low[0]; lobar = CurrentIndex; peakbar = hibar; ZZWL[hibar-CurrentIndex] = hi; Marker[hibar-CurrentIndex] = hi; } } Marker.DrawCircle(); // Последнее плечо (не зафиксированно) if (CurrentIndex == MaxIndex) { if (troughbar > peakbar) ZZWL[hibar-CurrentIndex] = hi; if (troughbar < peakbar) ZZWL[lobar-CurrentIndex] = lo; } } } Александр ЭЛДЕР |