futures.maze 發表於 15-3-26 21:18

AmiBroker AFL 自學筆記-1

本帖最後由 futures.maze 於 15-3-26 21:23 編輯

由於沒有程式語言的底子,所以AFL也是從零開始,三月初開始一點一滴到現在總算稍微看得懂這些陌生的英文與邏輯,懂交易不懂程式、懂程式不懂交易、不懂交易也不懂程式、懂交易也懂程式這真是辛苦又漫長的一段路,每個領域都是專業!
希望透過分享能幫到跟我一樣想了解卻又不知如何下手的新手一點幫助,如果我的解釋與使用方式有任何錯誤的地方,請coco的老手高手不吝指出,感謝!


1. 函式中文說明
BarIndex( )returnsArray
取得資料庫內K棒序號
BarCount
取得資料庫內全部K棒數量,不同週期數量不同
DateTime( )returnsArray
取得資料庫內K棒的日期時間
FirstVisibleValue( array)returnsNumber
從資料庫陣列,取得可見畫面內第一根K棒的值,O、H、L、C、自訂義陣列AAA[ ]、BBB[ ]或任何AmiBroker內定陣列
LastVisibleValue( array)returnsNumber
從資料庫陣列,取得可見畫面內最後一根K棒的值,O、H、L、C、自訂義陣列AAA[ ]、BBB[ ]或任何AmiBroker內定陣列 (此最後一根為畫面可見最後一根 + 1的值)
SelectedValue( array)returnsNumber
取得滑鼠點選的K棒值,若滑鼠未點選,則顯示可見畫面內最後一根K棒的值
BeginValue( array)returns Number
取得資料庫內第一根K棒的值
EndValue( array) returns Number
取得資料庫內最後一根K棒的值,即使K棒超出可見畫面
NumToStr( number or array, format = 1.3)returns String
將數字資料轉換為字串資料,format = 1.3指的是 整數1位數 & 小數3位數


2. 選擇一個標的(symbols),資料量不需太多約500~600根K棒即可
3. 複製程式碼後,插入程式碼到副圖
4. 將AmiBroker左邊Interpretation視窗範圍向右拉寬
5. 移動K棒或滑鼠便可看到Interpretation內的變化


以下是自學整理的程式碼,可幫助了解函式的運作及透過函式能得到的東西


printf( "以下有用到的BarIndex( )、DateTime( )、C or Close、這些陣列,\n都可以用O or Open、H or High、L or Low 或者自己定義的陣列 abc[ ] xxx[ ]等置換\n\n");


printf( "NumToStr( C, 3.0 ):" + NumToStr( C, 3.0 )); printf( " <== 顯示的收盤價為最後一根或者滑鼠點選的那一根\n");
printf( "NumToStr( LastVisibleValue(C), 4.1 ):" + NumToStr( LastVisibleValue(C), 4.1 )); printf( " <== LastVisibleValue(C)則是顯示最後一根 + 1根的收盤價,畫面看不到\n");
printf( "NumToStr( LastVisibleValue(Close), 5.2 ):顯示整數 5位數,小數 2位數 " + NumToStr( LastVisibleValue(Close), 5.2 )); printf( " <== 最後一根 + 1\n");
printf( "NumToStr( Close, 6.3 ):顯示整數 6位數,小數 3位數 " +NumToStr( Close, 6.3 )); printf( " <== 顯示的收盤價最後一根\n");
printf( "NumToStr( LastVisibleValue(C), 7.0 ):顯示整數 7位數,小數 0位數 " +NumToStr( LastVisibleValue(C), 7.0 )); printf( " <== 最後一根 + 1\n");
printf( "NumToStr( LastVisibleValue(C), 8.4 ):顯示整數 8位數,小數 4位數 " +NumToStr( LastVisibleValue(C), 8.4)); printf( " <== 最後一根 + 1\n");
printf( "NumToStr( DateTime( ), formatDateTime):顯示的結果" + NumToStr( DateTime(), formatdatetime));


printf( "\n\n");


selectbi =SelectedValue( BarIndex( ));
printf( "SelectedValue( BarIndex( )):點選的K棒BarIndex()=%g", selectbi); printf( "\n備註\n");
printf( "若未點選,則顯示的是畫面最右邊最新的一根K棒序號。\n");
printf( "此處當最右邊的K棒不是資料庫內最後一根K棒時,就是後面還有沒看到的K棒時\nLastVisibleValue( BarIndex( ))的值會比SelectedValue( BarIndex( ))值多 1\n");
printf( "應是LastVisibleValue( )定義的差異,使用迴圈應注意此處\n");printf( "\n");


firstbi = FirstVisibleValue( BarIndex());
lastbi = LastVisibleValue( BarIndex());
printf( "FirstVisibleValue( Barindex( )):畫面左邊第一根K棒BarIndex=%g", firstbi); printf( "\n");
printf( "LastVisibleValue( Barindex( )):畫面右邊第一根K棒BarIndex=%g", lastbi); printf( "\n");


beginbi = BeginValue( BarIndex());
endbi = EndValue( BarIndex());
totalbar = BarCount;


printf( "BeginValue( Barindex( )):資料庫第一根K棒BarIndex=%g", beginbi); printf( "\n");
printf( "EndValue( Barindex( )):資料庫最後一根K棒BarIndex=%g", endbi); printf( "\n");
printf( "BarCount:資料庫所有K棒數量=%g", totalbar); printf( "\n");


mydt = DateTime();


printf( "\n");
printf( "用FirstVisibleValue()與LastVisibleValue()依序顯示K棒的DateTime()\n");
for( i = FirstVisibleValue( BarIndex()); i <= LastVisibleValue( BarIndex()); i++)
{
      
      printf( " 序號 %g K棒的DateTime = " + NumToStr( mydt, formatDateTime), i);
      printf( "\n");
}      


printf( "\n");
printf( "用BeginValue()與EndValue()依序顯示K棒的DateTime()\n");
for( i = BeginValue( BarIndex()); i <= EndValue( BarIndex()); i++)
{
      
      printf( " 序號 %g 的DateTime = " + NumToStr( mydt, formatDateTime), i);
      printf( "\n");
}      

manhavecoco 發表於 15-3-26 23:07

{:5_647:}{:5_647:}感謝

聯發哥 發表於 15-3-27 08:46

有點難{:4_144:}{:4_186:}

winT 發表於 15-3-28 12:49

謝謝,目前也在學習中{:4_82:}

lwhuang 發表於 15-9-28 11:41

一直搞不懂printf會印到那裡去,都找不到,有大大教一下嗎?
我只會用 _TRACE

futures.maze 發表於 15-9-28 13:11

lwhuang 發表於 15-9-28 11:41 static/image/common/back.gif
一直搞不懂printf會印到那裡去,都找不到,有大大教一下嗎?
我只會用 _TRACE ...

左側Interpretation框框內

lwhuang 發表於 15-10-7 08:28

本帖最後由 lwhuang 於 15-10-7 08:35 編輯

futures.maze 發表於 15-9-28 13:11 static/image/common/back.gif
左側Interpretation框框內
Interpretation ok 成功了

scottvision 發表於 16-12-26 15:29

新手剛接觸5日
也是不太明白

chunwaihome 發表於 17-2-5 20:16

3. 複製程式碼後,插入程式碼到副圖

副圖在那裏啊

jooooooo 發表於 20-2-12 23:51

太好了謝謝你的分享
頁: [1]
查看完整版本: AmiBroker AFL 自學筆記-1