3

当当前数组条为 时,我想为过去 8 条数组BB分配值。这是我写的代码;falseAAtrue

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

4

1 回答 1

2

为什么你认为 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 处理这种语法的效率如何。希望能帮助到你。

于 2020-03-04T01:17:14.253 回答