Была мысль отображения индикатора RSI с 2 часовым таймфреймом на 1 часовом графике инструмента (т.е. вышестоящий таймфрейм на нижестоящем).
Поддержка сколько смогла помогла.
Спасибо и на этом, но есть существенный недостаток - прорисовывается индикатор только в начале первого часа 2-х часового таймфрейма...
Естественно, сам перепробовал многое, может быть и нет решения, а может и КПД не хватает.
Заранее спасибо!!!
Код: Выделить всё
function Initialize()
{
// Область определения параметров индикатора
// Обязательные параметры:
    IndicatorName = "RSI_12"; // Создаем индикатор с именем Power
    PriceStudy = false;   // Рисовать в отдельном окне (ниже графика цены)
    AddInput("Input", Inputs.Price);   // Input - входной ряд цена закрытия бара
    AddParameter("Period", 14, 2); 
    AddSeries("RSI2", DrawAs.Line, Color.Red);    
    AddGlobalVariable("oldPos", Types.Double, 0.0);
    AddGlobalVariable("oldNeg", Types.Double, 0.0);
    AddGlobalVariable("oldPrice", Types.Double, 0.0);
    AddLevel(30, Color.Gray, "RSI2");
    AddLevel(70, Color.Gray, "RSI2");
}
function Evaluate()
{
// AlfaDirect. 2014.
// RSI (Relative Strength Index) - индекс относительной силы 
// Автор - Уэллс Уайлдер (Welles Wilder).
if (CurrentIndex < 1)
{
        RSI2 = 0.0;
        oldPos = 0.0;
        oldNeg = 0.0;
        oldPrice = Input[0];
}
else 
{
var t = BarTime(); 
// Для Акций – начало бара 11 конец в 12 – начало бара 13 конец в 14
if (t == AsTime(11,0,0) || t == AsTime(13,0,0) || t == AsTime(15,0,0) || t == AsTime(17,0,0)  
|| t == AsTime(18,0,0))
{
    var rel = Input[0] - oldPrice;
    oldPrice = Input[0];  
    var sump = 0.0; 
    var sumn = 0.0;
    if (rel > 0)
        sump = rel;
    else
        sumn =-rel;
    var positive = (oldPos*(Period - 1.0) + sump)/Period;
    var negative = (oldNeg*(Period - 1.0) + sumn)/Period;
    oldPos = positive;
    oldNeg = negative;
 
    if (negative == 0.0)
        RSI2 = 0.0;
    else
        RSI2 = 100.0 - 100.0 / (1.0 + positive/negative);
}
}
}