For loop 内条着色只要在母条AFL范围内即可

For loop 内条着色只要在母条AFL范围内即可,for-loop,amibroker,For Loop,Amibroker,n=-1; 颜色=IIf(高参考(低,n)),红色,白色; 绘图(关闭,“彩色价格”、颜色、样式栏) 红色箭头指向条是主条,蓝色箭头指向白色条在主条范围内的条内。 所以我试着比较当前条和母条,如果当前条在母条的范围内,则比较前一条,但如果代码条件为真,我试着增加递减n值,但它不起作用,我不知道为什么。为了更清晰,请参考图片 n=-1; 颜色=IIf((高参考值(低,n)),红色和&n=n--,白色); 绘图(关闭,“彩色价格”、颜色、样式栏)我发现写出for循环更容易 function Ins

n=-1;
颜色=IIf(高<参考(高,n)和低>参考(低,n)),红色,白色;
绘图(关闭,“彩色价格”、颜色、样式栏)

红色箭头指向条是主条,蓝色箭头指向白色条在主条范围内的条内。 所以我试着比较当前条和母条,如果当前条在母条的范围内,则比较前一条,但如果代码条件为真,我试着增加递减n值,但它不起作用,我不知道为什么。为了更清晰,请参考图片

n=-1;
颜色=IIf((高<参考值(高,n)&低>参考值(低,n)),红色和&n=n--,白色);

绘图(关闭,“彩色价格”、颜色、样式栏)

我发现写出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();
函数InsideBarColor(){
地方政府;
局部伊辛西德巴;
地方指数;
局部内高;
地方内幕;
地方色彩;
状态=0;
isInsideBar=内部();
priceColor=colorDefault;
对于(索引=1;索引内部高| |低[指数]<内部低){
//价格超出了范围
priceColor[索引]=彩色白色;
状态=0;
}否则{
//价格仍在区间内
priceColor[index]=colorBlue;
}
}否则{
priceColor[index]=priceColor[index-1];
}
}
返回颜色;
}
颜色=内部颜色();