1

我有以下函数 count_event 的代码来计算与过去发生的事件相关的某个条件的次数。

这段代码的问题是它手动获取有关每个事件的信息。它手动获取过去由 numBars 定义的 3 个事件,这是过去用于计算事件的柱数。过去发生的事件完全有可能远不止 3 件。由于 Amibroker 处理数组的方式,我不知道如何解决这个问题。

//get number of bars that have passed since nth occurrence when array was true
function bars_since_n(array, nth_occurence)
{
    bi = BarIndex();
    bars_since_nth = bi - ValueWhen(  array, bi, nth_occurence );

    return bars_since_nth;
}

//Count number of times a certain condition related an event happened in the past defined by numBars
function count_event(numBars)
{
    event_high = get_event();

    bars_since_high_1 = bars_since_n(event_high, 1);
    bars_since_high_2 = bars_since_n(event_high, 2);
    bars_since_high_3 = bars_since_n(event_high, 3);

    event_high_1 = ValueWhen(event_high, High, 1);
    event_high_2 = ValueWhen(event_high, High, 2);
    event_high_3 = ValueWhen(event_high, High, 3);

    count_1 = iif((event_high_1 >= 0.99*Close AND bars_since_high_1 <= numBars), 1, 0 );
    count_2 = iif((event_high_2 >= 0.99*Close AND bars_since_high_2 <= numBars), 1, 0 );
    count_3 = iif((event_high_3 >= 0.99*Close AND bars_since_high_3 <= numBars), 1, 0 );

    count = count_1 + count_2 + count_3;

    return count;
}
4

1 回答 1

0

正如乔纳斯在他们的评论中所说,这个问题已经在这里得到了回答。

如果您需要比提供的线程中给出的更多解释,我将非常乐意解释。

于 2020-02-21T18:39:33.747 回答