Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1233

Добавлено: evge » 07 фев 2016, 14:41

Тема: Ichimoku - Ишимоку

Текст сообщения:

Индикатор представляет собой систему, состоящую из линий: TenkanSen, KijunSen, SenkouSpanA, SenkouSpanB, Chikou.

TenkanSen — короткая линия тренда, значения которой равны половине суммы самой высокой и низкой цены за короткий промежуток времени (Ts).

Линия TenkanSen трактуется как направление движения тренда. Причём, считается, что чем выше крутизна этой линии тем ярче выражен тренд.

KijunSen — среднее между максимум и минимум за средний промежуток времени (Tm).

KijunSen используется в качестве показателя движения рынка. Если цены выше неё, они, вероятнее будут продолжать расти и наоборот.

SenkouSpanA — среднее между Tenkan и Kijun, сдвинутое вперёд на средний временной промежуток (Tm).

SenkouSpanB — среднее между максимумом и минимум за длинный промежуток времени (Tl), сдвинутое вперёд на средний промежуток времени (Tm).

Chikou — сдвинутое назад на средний промежуток времени (Tm) значение цены:

Облако — промежуток между Senkou A и Senkou B, показывающий волатильность рынка. Считается, что если цена находится в облаке, преобладает боковой тренд.

Типовые параметры

Ts = 9, Tm = 26, Tl = 52.

Автор: Санджин Ишимоку
Первоисточник: Wikipedia

Пример:

Ichimoku-00.png
Ichimoku-00.png (29.28 КБ) 42576 просмотров


Исходный текст:

Код: Выделить всё

function Initialize()
{
IndicatorName = "Ichimoku";   
PriceStudy = true;                      
AddInput("Input", Inputs.Candle);        
AddSeries("TenkanSen", DrawAs.Line, Color.Red);   
AddSeries("KijunSen", DrawAs.Line, Color.Cyan);   
AddSeries("SenkouSpanA", DrawAs.Custom, Color.Gray);   
AddSeries("SenkouSpanB", DrawAs.Line, Color.Black);   
// Должно соблюдаться: Ts = 9  <<   Tm = 26   << Tl = 52;
AddParameter("Tl", 52, 2);   
AddParameter("Tm", 26);   
AddParameter("Ts", 9);   
}

function Evaluate()
{
// AlfaDirect. 2014. OX.
// ICHIMOKU. Описание по wikipedia.
var Max = 0.0;
var Min = 1000000000000.0;
var T = 0.0;
var K = 0.0;
var i = 0;

if (CurrentIndex < Tm+Tl)
{
    TenkanSen = Input.Close[0];
    KijunSen = Input.Close[0];
    SenkouSpanA = Input.Close[0];
    SenkouSpanB = Input.Close[0];
}
else
{
  for (i = 0; i <= Tm+Tl; i++)
  {
     if (Input.High[-i] > Max)
            Max = Input.High[-i];
     if (Input.Low[-i] < Min)
            Min = Input.Low[-i];
 
     if (i == Ts)
            TenkanSen = (Max + Min) / 2.0;
     if (i == Tm)
     {
            KijunSen = (Max + Min) / 2.0;
            Max = 0.0;
            Min = 1000000000000.0;
     }
     if (i == Tm + Ts)
            T = (Max + Min)/2;
     if (i == Tm + Tm)
            K = (Max + Min)/2;
    }   // end for
    SenkouSpanA = (T + K) / 2.0;
    SenkouSpanB = (Max + Min) / 2.0;
    SenkouSpanA.DrawChannel( SenkouSpanB );

}   // end if

}