|
本帖最後由 futures.maze 於 15-3-28 21:33 編輯
研究了很久,總算知道導致 LastVisibleValue()出現差一根K棒值的原因
- // 2015/03/28 AmiBroker AFL 自學筆記 by futures.maze
- // Syntax FirstVisibleValue( array)
- // Returns Number
- // 取得可見畫面內左邊第一根K棒值
- // Syntax LastVisibleValue( array)
- // Returns Number
- // 取得可見畫面範圍內右邊第一根K棒值
- // 注意:此處取得的K棒資料雖然數據無誤,但是BarCount取得的K棒數量值最多只有畫面範圍內K棒數量+30
- // 同時BarIndex()取得的值,若K棒資料多過畫面可顯示範圍,則最多從左側畫面外30根K棒開始編列序號
- // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..... 100 (總共有100根K棒)
- // 若畫面只顯示最後面20根K棒,即 81 82 83 ... 100,這個時候BarIndex()取得的數據會變成
- // 0 1 2 ..... 30 31 32 ... 49 (原本101根K棒會剩下50根K棒)
- // ^^^^^^^^^^^^^^^^ (畫面顯示出來的20根K棒的序號)
- // 51 52 53 ..... 81 82 83 ... 100 (原本K棒資料庫應是這樣的序號數據,51以前還有0 ~50但是實際上51 ~ 100被0 ~ 49取代而前面的不見了)
- // 這個時候BarCount跑出來的數據也是50,而不是實際有100根K棒的資料庫
- firstbi = FirstVisibleValue( BarIndex());
- first_high = FirstVisibleValue( High);
- lastbi = LastVisibleValue( BarIndex());
- last_high = LastVisibleValue( High);
- // 以下很重要 以下很重要 以下很重要
- // beginbi = BeginValue( BarIndex());
- // endbi = EndValue( BarIndex());
- // ******註******
- // 當程式碼內有呼叫到BeginValue()或EndValue()任一個時,
- // FirstVisibleValue( BarIndex())取得的BarIndex將會是完整K棒資料庫內真實的BarIndex
- // LastVisibleValue( BarIndex())取得的BarIndex將會是完整k棒資料庫內真實的BarIndex,但卻是畫面最右邊K棒"+1根"的值
- // 同時此時若有使用BarCount,得到的K棒數量也是完整K棒資料庫的K棒數量。 ^^^^^^^^^^^^^^^^^^^^^^^
- printf( "FirstVisibleValue()作用\n可見畫面範圍內最左邊第一根K棒序號為 %g,最高價為 %g", firstbi, first_high); printf( "\n\n");
- printf( "LastVisibleValue()作用\n可見畫面範圍內最右邊第一根K棒序號為 %g,最高價為 %g", lastbi, last_high); printf( "\n\n");
複製代碼
排版怪怪的,貼到AFL Formula Editor敘述看起來就不會那麼吃力
|
評分
-
查看全部評分
|