COCO研究院

 找回密碼
 註冊
搜索
查看: 36409|回復: 9

[教學] AmiBroker AFL 自學筆記-1

[複製鏈接]
發表於 15-3-26 21:18 | 顯示全部樓層 |閱讀模式
本帖最後由 futures.maze 於 15-3-26 21:23 編輯

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


1. 函式中文說明
BarIndex( )  returns  Array
取得資料庫內K棒序號
BarCount
取得資料庫內全部K棒,不同週期數量不同
DateTime( )  returns  Array
取得資料庫內K棒的日期時間
FirstVisibleValue( array)  returns  Number
從資料庫陣列,取得可見畫面內第一根K棒的值,O、H、L、C、自訂義陣列AAA[ ]、BBB[ ]或任何  AmiBroker內定陣列
LastVisibleValue( array)  returns  Number
從資料庫陣列,取得可見畫面內最後一根K棒的值,O、H、L、C、自訂義陣列AAA[ ]、BBB[ ]或任何  AmiBroker內定陣列 (此最後一根為畫面可見最後一根 + 1的值)
SelectedValue( array)  returns  Number
取得滑鼠點選的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");
}        

評分

參與人數 5金錢 +8 收起 理由
skyler + 2 好文章,我推薦
沒房子的阿捨 + 1 讓我想起了20年前學的Turbo C......好文章~.
manhavecoco + 1 好文章,我推薦
薛豹 + 2 按一個讚
merickelson + 2 您在教C++ 讚喔

查看全部評分

發表於 15-3-26 23:07 | 顯示全部樓層
感謝
發表於 15-3-27 08:46 | 顯示全部樓層
有點難
發表於 15-3-28 12:49 | 顯示全部樓層
謝謝,目前也在學習中
發表於 15-9-28 11:41 | 顯示全部樓層
一直搞不懂printf會印到那裡去,都找不到,有大大教一下嗎?
我只會用 _TRACE
 樓主| 發表於 15-9-28 13:11 | 顯示全部樓層
lwhuang 發表於 15-9-28 11:41
一直搞不懂printf會印到那裡去,都找不到,有大大教一下嗎?
我只會用 _TRACE ...

左側Interpretation框框內

評分

參與人數 1金錢 +2 收起 理由
lwhuang + 2 感謝分享

查看全部評分

發表於 15-10-7 08:28 | 顯示全部樓層
本帖最後由 lwhuang 於 15-10-7 08:35 編輯
futures.maze 發表於 15-9-28 13:11
左側Interpretation框框內

Interpretation ok 成功了
發表於 16-12-26 15:29 | 顯示全部樓層
新手剛接觸5日
也是不太明白
發表於 17-2-5 20:16 | 顯示全部樓層
3. 複製程式碼後,插入程式碼到副圖

副圖在那裏啊
發表於 20-2-12 23:51 | 顯示全部樓層
太好了謝謝你的分享
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-25 00:13

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |