Окраска внутреннего бара до тех пор, пока он находится внутри диапазона материнского бара Amibroker AFL

n= -1; Color = IIf((High < Ref(High,n) & Low > Ref(Low,n)), colorRed , colorWhite); Plot( Close, "Colored Price", Color, styleBar );

введите здесь описание изображения

Полоса, указывающая красной стрелкой, является материнской полосой, а синяя стрелка, указывающая, что белая полоса находится внутри полосы в пределах диапазона материнской полосы. поэтому я пытаюсь сравнить текущий бар с материнским баром, если текущий бар находится внутри диапазона материнского бара, он сравнивает непосредственно предыдущий бар, но я пытался добавить уменьшение значения n, если условие кода истинно, но оно не работает, не знаю почему. Пожалуйста, обратитесь к изображению для большей ясности

n= -1; Color = IIf((High < Ref(High,n) & Low > Ref(Low,n)), colorRed && n= n--, colorWhite); Plot( Close, "Colored Price", Color, styleBar );


person user13010320    schedule 14.03.2020    source источник


Ответы (1)


Мне было проще написать циклы for

function InsideBarColor() {

    local state;
    local isInsideBar;
    local index;
    
    local insideHigh;
    local insideLow;
    local priceColor;
    
    state = 0;
    isInsideBar = Inside();
    priceColor = colorDefault;
    
    for(index = 1; index < BarCount; index += 1) {
    
        if (state == 0 && isInsideBar[index] == True) {
        
            // Record the High/Low of the first inside bar.
            insideHigh = High[index-1];
            insideLow = Low[index-1];
            state = 1;
            priceColor[index] = colorRed;
        
        } else if(state == 1) {
        
            if (High[index] > insideHigh || Low[index] < insideLow) {
                // Price broke out of range
                priceColor[index] = colorWhite;
                state = 0;
            } else {
                // Price still inside range
                priceColor[index] = colorBlue;
            }
        
        } else {
            priceColor[index] = priceColor[index -1]; 
        }
    
    }
    
    return priceColor;

}

colors = InsideBarColor();
person Ceres    schedule 10.09.2020