請問 AmiBroker 如何取得昨天高點所在棒形序號
這幾天 AB 的客服系統忽然掛了..因此發表這個問題..求助於 coco-in 的高手..預設條件如下 (或基本想法):
1. 時間週期 = 1分盤
2. 可能用到函數 HHV, DateNum,.....
棒形序號是什麼? Sirius 發表於 13-9-28 19:51 static/image/common/back.gif
棒形序號是什麼?
假設,現在有 10 根 k 棒,每根 k 棒,按照由左而右的次序給予編號:
因此,第1根 k 棒的棒形序號 = 1;第2根 k 棒的棒形序號 = 2;
剩下的部份以此原理類推..希望這樣說明您可以了解
keymaker 發表於 13-9-28 20:50 static/image/common/back.gif
假設,現在有 10 根 k 棒,每根 k 棒,按照由左而右的次序給予編號:
因此,第1根 k 棒的棒形序號 = 1; ...
Hi,
寫條件去判斷
用這行去算當根第幾根K
Bars = 1 + BarsSince( Day()!= Ref(Day(), -1));
Count = valuewhen(當日最高, Bars);
就可以知道最高K是第幾根K了
而當日最高的判斷
小弟隨手寫一下 (相信有更簡單的方式去判斷,不過我呆 XD)
範例
DH = TimeFrameGetPrice("H", inDaily);
Bars = 1 + BarsSince( Day()!= Ref(Day(), -1));
Counts = ValueWhen( H == DH, bars);
LastDayHighOfBars = Ref(Counts, -1);
應該是無誤啦 XD 參考看看了
本帖最後由 keymaker 於 13-9-29 11:42 編輯
Bars = 1 + BarsSince( Day()!= Ref(Day(), -1)); //算出換日後的棒形序號
//但是呢..沒有算出..全域性的棒形序號...
//所謂..全域性的棒形序號..例如..有10000根 k 棒..那您得到的 Bars 都是 1
//再者..Day() 算出來的部份在1分盤沒辦法用...
//無論如何..非常感謝您發揮助人之心...告訴大家您的智慧與解答........
keymaker 發表於 13-9-29 11:04
Bars = 1 + BarsSince( Day()!= Ref(Day(), -1)); //算出換日後的棒形序號
//但是呢..沒有算出..全域性的棒 ...
LastDayHighOfBars 這個值是當日第幾跟k
再參考看看吧 kilroy 發表於 13-9-29 12:10 static/image/common/back.gif
LastDayHighOfBars 這個值是當日第幾跟k
再參考看看吧
Counts = ValueWhen( H == DH, bars); 可以比對今日 k 而找到 DH 最後位於今日第幾根 k 確實沒錯..
只是..若要宣告一個變數記錄(在 1 分盤)此 Counts 發生於昨日的最後值..不知有何想法(語法)..
keymaker 發表於 13-9-29 16:24 static/image/common/back.gif
Counts = ValueWhen( H == DH, bars); 可以比對今日 k 而找到 DH 最後位於今日第幾根 k 確實沒錯..
只是. ...
Hi,
小弟簡單說一下
DH = TimeFrameGetPrice("H", inDaily); //取日線高點 (日線高點會是所有分線中的高點)
Bars = 1 + BarsSince( Day()!= Ref(Day(), -1)); //以日為基礎,每日重新計算K線數(序號?)
Counts = ValueWhen( H == DH, bars); //當某根分線K高點等於日線高點時,取當根K之K棒數(序號?)
LastDayHighOfBars = Ref(Counts, -1); //取昨日高點發生時,該K線的棒數(序號?)
所以LastDayHighOfBars 就是樓主你要的 "昨天高點所在棒形序號"
用 printf("%g", LastDayHighOfBars);來觀察昨日高點處在昨日的第幾根K
參考語法:valuewhen
這樣應該有幫助到大大才是,參考看看了~~
kilroy 發表於 13-9-29 16:31 static/image/common/back.gif
Hi,
小弟簡單說一下
以台指期 2013/09/26 以及 09/27 兩天為例...時間週期定在 15-minute 可見 2013/09/26 高點在第3根, 2013/09/27 高點在第2根
當 k 棒進行到 2013/09/27 第1根時, Counts=2=今高, LastDayHighOfBars=3=昨高 (非常完美)
當 k 棒進行到 2013/09/27 第2根時, Counts=2=今高, LastDayHighOfBars=2=今高
於是無法一直取得「昨天高點所在棒形序號」..
本帖最後由 enochyu 於 13-9-29 23:28 編輯
小弟獻醜一下。
要回文時發現,keymaker大又有新回應,我好像把需求複雜化了,寫成下圖所示
程式碼_IsIntraday = ( Interval() < inDaily );
_DateLine = Day() != Ref( Day(), -1 );
_BarIndexOfDay = BarsSince( _DateLine ) + 1;
_LastDayBarCount = Ref( _BarIndexOfDay, -1 * _BarIndexOfDay );
_LastDayHHVBars = HHVBars( H, _LastDayBarCount );
_BarSinceLastDayHHV= ( Ref( _LastDayHHVBars, -1 * _BarIndexOfDay ) + _BarIndexOfDay ) * _IsIntraday;
---
小弟就不在簡化程式了,若未會意錯,以keymaker大的需求只要再加上下述程式碼,
_LastDayHighBarIndex = _LastDayBarCount - Ref( _LastDayHHVBars, -1 * _BarIndexOfDay );
該變數(_LastDayHighBarIndex)就是你要的值,參考看看。
傳說中的...隱弄客...出現了...........請容敝人做好實驗之後再回文.... 同樣以台指期 2013/09/26 以及 09/27 兩天為例...
時間週期定在 15-minute...
可見 2013/09/26 高點在第3根, 2013/09/27 高點在第2根...
於是..當k棒到達 2013/09/27 第2根時...隱弄客大所創作之..
_BarSinceLastDayHHV=20=目前k棒距離昨高20根(完美)
_LastDayHighBarIndex=3=今高位於今日第3根(完美)
不過...若要取得「昨高所在 BarIndex()」...就尚未達成須求...(不好意思{:4_90:}) keymaker 發表於 13-9-30 14:45 static/image/common/back.gif
同樣以台指期 2013/09/26 以及 09/27 兩天為例...
時間週期定在 15-minute...
可見 2013/09/26 高點在第3根 ...
建議可以使用函數及變數,自行試試,會更有感覺{:4_153:}
LastValue()
BarIndex()
_BarSinceLastDayHHV
祝 順心
本帖最後由 keymaker 於 13-10-1 10:34 編輯
發帖後...目前已經出現兩位神人...(總之是幫助了大家...該給 + 評分)
看來下次必須想出更 exciting 的題目...(例如..型態學操作之類的)
頁:
[1]