|
本帖最後由 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");
}
|
評分
-
查看全部評分
|