COCO研究院

 找回密碼
 註冊
搜索
查看: 4327|回復: 14

[範例程式碼] 請問 AmiBroker 如何取得昨天高點所在棒形序號

[複製鏈接]
發表於 13-9-28 17:20 | 顯示全部樓層 |閱讀模式
這幾天 AB 的客服系統忽然掛了..因此發表這個問題..求助於 coco-in 的高手..

預設條件如下 (或基本想法):
1. 時間週期 = 1分盤
2. 可能用到函數 HHV, DateNum,.....





評分

參與人數 1金錢 +1 收起 理由
RECOM + 1 好文章,我推薦

查看全部評分

發表於 13-9-28 19:51 | 顯示全部樓層
棒形序號是什麼?
 樓主| 發表於 13-9-28 20:50 | 顯示全部樓層
Sirius 發表於 13-9-28 19:51
棒形序號是什麼?

假設,現在有 10 根 k 棒,每根 k 棒,按照由左而右的次序給予編號:
因此,第1根 k 棒的棒形序號 = 1;  第2根 k 棒的棒形序號 = 2;  
剩下的部份以此原理類推..希望這樣說明您可以了解
發表於 13-9-29 02:04 | 顯示全部樓層
keymaker 發表於 13-9-28 20:50
假設,現在有 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 參考看看了

評分

參與人數 1金錢 +2 收起 理由
keymaker + 2 按一個讚

查看全部評分

 樓主| 發表於 13-9-29 11:04 | 顯示全部樓層
本帖最後由 keymaker 於 13-9-29 11:42 編輯

Bars = 1 + BarsSince( Day()!= Ref(Day(), -1)); //算出換日後的棒形序號
//但是呢..沒有算出..全域性的棒形序號...
//所謂..全域性的棒形序號..例如..有10000根 k 棒..那您得到的 Bars 都是 1
//再者..Day() 算出來的部份在1分盤沒辦法用...
//無論如何..非常感謝您發揮助人之心...告訴大家您的智慧與解答........

發表於 13-9-29 12:10 來自手機 | 顯示全部樓層
keymaker 發表於 13-9-29 11:04
Bars = 1 + BarsSince( Day()!= Ref(Day(), -1)); //算出換日後的棒形序號
//但是呢..沒有算出..全域性的棒 ...

LastDayHighOfBars 這個值是當日第幾跟k

再參考看看吧

評分

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

查看全部評分

 樓主| 發表於 13-9-29 16:24 | 顯示全部樓層
kilroy 發表於 13-9-29 12:10
LastDayHighOfBars 這個值是當日第幾跟k

再參考看看吧

Counts = ValueWhen( H == DH, bars); 可以比對今日 k 而找到 DH 最後位於今日第幾根 k 確實沒錯..

只是..若要宣告一個變數記錄(在 1 分盤)此 Counts 發生於昨日的最後值..不知有何想法(語法)..

發表於 13-9-29 16:31 | 顯示全部樓層
keymaker 發表於 13-9-29 16:24
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


這樣應該有幫助到大大才是,參考看看了~~

評分

參與人數 1金錢 +2 收起 理由
keymaker + 2 按一個讚

查看全部評分

 樓主| 發表於 13-9-29 21:19 | 顯示全部樓層
kilroy 發表於 13-9-29 16:31
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=今高
於是無法一直取得「昨天高點所在棒形序號」..


發表於 13-9-29 23:26 | 顯示全部樓層
本帖最後由 enochyu 於 13-9-29 23:28 編輯

小弟獻醜一下。

要回文時發現,keymaker大又有新回應,我好像把需求複雜化了,寫成下圖所示 LastHighBarIndex.png


程式碼
  1. _IsIntraday          = ( Interval() < inDaily );
  2. _DateLine            = Day() != Ref( Day(), -1 );
  3. _BarIndexOfDay       = BarsSince( _DateLine ) + 1;
  4. _LastDayBarCount     = Ref( _BarIndexOfDay, -1 * _BarIndexOfDay );
  5. _LastDayHHVBars      = HHVBars( H, _LastDayBarCount );
  6. _BarSinceLastDayHHV  = ( Ref( _LastDayHHVBars, -1 * _BarIndexOfDay ) + _BarIndexOfDay ) * _IsIntraday;
複製代碼

---
小弟就不在簡化程式了,若未會意錯,以keymaker大的需求只要再加上下述程式碼,
  1. _LastDayHighBarIndex = _LastDayBarCount - Ref( _LastDayHHVBars, -1 * _BarIndexOfDay );
複製代碼

該變數(_LastDayHighBarIndex)就是你要的值,參考看看。



評分

參與人數 3金錢 +9 收起 理由
joey0415 + 2 太強了
keymaker + 2 按一個讚
kilroy + 5 讚啊~~

查看全部評分

 樓主| 發表於 13-9-30 13:54 | 顯示全部樓層
傳說中的...隱弄客...出現了...........請容敝人做好實驗之後再回文....
 樓主| 發表於 13-9-30 14:45 | 顯示全部樓層
同樣以台指期 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()」...就尚未達成須求...(不好意思)
發表於 13-9-30 15:02 | 顯示全部樓層
keymaker 發表於 13-9-30 14:45
同樣以台指期 2013/09/26 以及 09/27 兩天為例...
時間週期定在 15-minute...
可見 2013/09/26 高點在第3根 ...

建議可以使用函數及變數,自行試試,會更有感覺
LastValue()
BarIndex()
_BarSinceLastDayHHV


祝 順心

評分

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

查看全部評分

 樓主| 發表於 13-10-1 10:15 | 顯示全部樓層
本帖最後由 keymaker 於 13-10-1 10:34 編輯

發帖後...目前已經出現兩位神人...(總之是幫助了大家...該給 + 評分)

 樓主| 發表於 13-10-1 10:39 | 顯示全部樓層
看來下次必須想出更 exciting 的題目...(例如..型態學操作之類的)
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-23 15:49

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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