chhung3 發表於 16-5-12 11:29

Trend analysis in Amibroker

想用top-down algorithm做trend definition, 但amibroker好像不能做recursion, 請問有哪位知道應如何解決嗎(不想用sliding window algorithm)﹖

謝謝

lwhuang 發表於 16-5-13 07:51

什麼叫top-down?
recursion可以用 for 做

chhung3 發表於 16-5-16 15:24

lwhuang 發表於 16-5-13 07:51
什麼叫top-down?
recursion可以用 for 做
Top down 的意思是給定一個最高standard error 門檻數值。然後在數列中,每次找一個新折點,令加入折點後數列的standard error總和為最小。然後看折好後的數列,如果數列的standard error仍高於門檻的話,用同樣方法處理, 直至每個數列的standard error都少於門檻數值。

因為不知道最終要折多少次,所以iteration approach不能用。

參考pseudo code:
Algorithm Seg_TS = Top_Down(T , max_error)
best_so_far = inf;
for i = 2 to length(T) - 2 // Find best place to split the time series.
    improvement_in_approximation = improvement_splitting_here(T,i);
    if improvement_in_approximation < best_so_far
      breakpoint = i;
      best_so_far = improvement_in_approximation;
    end;
end;
// Recursively split the left segment if necessary.
if calculate_error(T) > max_error
    Seg_TS = Top_Down(T);
end;
// Recursively split the right segment if necessary.
if calculate_error( T ) > max_error
    Seg_TS = Top_Down(T);
end;

以上參考文章為"An Online Algorithm for Segmenting Time Series" from Department of Information and Computer Science, University of California

現在在看Ramer–Douglas–Peucker algorithm會不會比較好, 這個能用iteration解決。

magier 發表於 16-5-18 19:38

AFL不支援 recursive 但是 jscript 可以

你可以用內嵌的方式實做......


// test for jscript recursive

EnableScript("jscript");

<%
function Callme( ins )
{
if(ins < 10)
Callme( ins+1 );


var myMsgBox=new ActiveXObject("wscript.shell");
myMsgBox.Popup (ins);
return;
}

Callme(0);

%>

chhung3 發表於 16-5-19 13:13

magier 發表於 16-5-18 19:38
AFL不支援 recursive 但是 jscript 可以

你可以用內嵌的方式實做......

請問內嵌的CODE要加到哪裏﹖又如何才可以RUN﹖

magier 發表於 16-5-20 19:17

可以參考官方網頁說明

www. amibroker.com/guide/a_script.html
頁: [1]
查看完整版本: Trend analysis in Amibroker