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
Пример:
Исходный текст:
Код: Выделить всё
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
}
 Изображения (1057)
 Изображения (1057) Архивы (82)
 Архивы (82) Текстовые файлы (9)
 Текстовые файлы (9) Документы (7)
 Документы (7) Скрипты Альфа-Директ 4 (30)
 Скрипты Альфа-Директ 4 (30)