在 Amibroker 中使用数组方法分配数组的过去值

Assign past values of array using array method in Amibroker

当数组 AA 的当前柱为 true 时,我想为数组 BB 的过去 8 个柱分配 false 值。这是我写的代码;

for( i = 8; i < BarCount; i++) 
{
    if (AA[i] == True)
    {
        BB[i] = False;
        BB[i-1] = False;
        BB[i-2] = False;
        BB[i-3] = False;
        BB[i-4] = False;
        BB[i-5] = False;
        BB[i-6] = False;
        BB[i-7] = False;
        BB[i-8] = False;
    }
}

代码工作正常,但它使用循环方法。循环方法很慢,不适合 Amibroker。如何将这个使用循环的 AFL 代码转换为更快、更优雅的数组方法?

我正在使用 Amibroker v6.3

为什么您认为 for 循环很慢,为什么它不适合 Amibroker? Amibroker 缺乏这种能力并被添加,因此您可以像在代码中那样更好地控制设置数组。据我所知,替代方案要困难得多。那是在我加入 amibroker 之前。但如果你想要看起来不错的东西,试试这个。

BB_Initial = true; // Your initial BB array.
BB = IIF(BarsSince(Ref(AA, 8)) <= 8, false, BB_Initial);

但是把它分解成每个步骤

BB_Initial = true; // Your initial BB array.

BB_Ref = Ref(AA, 8);
BB_BarsSince = BarsSince(BB_Ref);
BB_IIfCondition = BarsSince(BB_BarsSince) <= 8;
BB = IIf(BB_IIfCondition, false, BB_Initial);

那是你的两个数组的五个数组。但我真的无法告诉您 Amibroker 将这种语法处理为您正在做的事情的效率如何。希望能帮助到你。