COCO研究院

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

請教AmiBroker高手,關於時間函數。

[複製鏈接]
發表於 11-12-27 18:24 | 顯示全部樓層 |閱讀模式
AmiBroker的時間函數有 month()、day()、Hour()、Minute() 、Second() 等..
現在小弟想利用 function 自訂15分鐘的函數,請問要如何寫?

謝謝大大們。
 樓主| 發表於 11-12-28 08:55 | 顯示全部樓層
例如  BarsSince(Hour() != Ref(Hour(),-1));
小弟想將其改為  BarsSince(15分鐘() != Ref(15分鐘(),-1));

感恩~
發表於 11-12-28 13:51 | 顯示全部樓層
回復 2# lu0811

程式片段供您參考,不知合不合用


TM = T1 * in1Minute;
SetChartOptions(0,0,chartGrid30|chartGrid70);
TimeFrameSet(TM);
M15O                 = Open;
M15H                        = High;
M15L                         = Low;
M15C                        = Close;  
TimeFrameRestore();
 樓主| 發表於 11-12-28 14:04 | 顯示全部樓層
回復 3# yccecily
謝謝yccecily大您的程式碼。

不過小弟是需要function來自訂函數,弄成類似像Hour()的函數,自訂一個 fifteenMinute()。
發表於 11-12-28 23:37 | 顯示全部樓層
本帖最後由 enochyu 於 11-12-28 11:46 PM 編輯

野人獻曝一下 ~

------
建立一個 function 如下

  1. function getMinuteBlock( _minuteUnit )
  2. {
  3.     _eyMinuteBlock = -1;
  4.     if ( ( _minuteUnit > 0 ) && ( _minuteUnit < 600 ) )
  5.         _eyMinuteBlock = floor( ( ( Hour() * 60 )  + Minute() ) / _minuteUnit );
  6.     return _eyMinuteBlock;
  7. }
複製代碼


說明:
以24H為概念,假設以 15M 為單位,
--> 00:00:00 ~ 00:14:59 傳回 0
--> 00:15:00 ~ 00:29:59 傳回 1
--> 00:30:00 ~ 00:44:59 傳回 2
... 以此類推。

------

[15分鐘]為單位使用範例

  1. getMinuteBlock( 15 );
  2. // 假設於5分鐘線圖中,該K棒時間為09:00,則回傳值為 36
  3. // 假設於5分鐘線圖中,該K棒時間為09:05,則回傳值為 36
  4. // 假設於5分鐘線圖中,該K棒時間為09:10,則回傳值為 36
  5. // 假設於5分鐘線圖中,該K棒時間為09:15,則回傳值為 37 ... 以此類推

  6. Ref( getMinuteBlock( 15 ), -1 );
  7. // 假設於5分鐘線圖中,該K棒時間為09:00,則回傳值為 35
  8. // 假設於5分鐘線圖中,該K棒時間為09:05,則回傳值為 36
  9. // 假設於5分鐘線圖中,該K棒時間為09:10,則回傳值為 36
  10. // 假設於5分鐘線圖中,該K棒時間為09:15,則回傳值為 36 ... 以此類推
複製代碼



[6分鐘]為單位使用範例

  1. getMinuteBlock( 6 );
  2. // 假設於5分鐘線圖中,該K棒時間為09:00,則回傳值為 90
  3. // 假設於5分鐘線圖中,該K棒時間為09:05,則回傳值為 90
  4. // 假設於5分鐘線圖中,該K棒時間為09:10,則回傳值為 91
  5. // 假設於5分鐘線圖中,該K棒時間為09:15,則回傳值為 92 ... 以此類推

  6. Ref( getMinuteBlock( 6 ), -1 );
  7. // 假設於5分鐘線圖中,該K棒時間為09:00,則回傳值為 89
  8. // 假設於5分鐘線圖中,該K棒時間為09:05,則回傳值為 90
  9. // 假設於5分鐘線圖中,該K棒時間為09:10,則回傳值為 90
  10. // 假設於5分鐘線圖中,該K棒時間為09:15,則回傳值為 91 ... 以此類推
複製代碼


------

所以此函式可以視您的需求,傳入任意的分鐘單位(需介於1~599),即會回傳 00:00:00 至該根K棒的[單位數]。

請笑納 ~

評分

參與人數 2金錢 +4 收起 理由
joey0415 + 2 這!這!不加分怎行
lu0811 + 2 讚啦!!

查看全部評分

 樓主| 發表於 11-12-28 23:49 | 顯示全部樓層
本帖最後由 lu0811 於 11-12-29 12:33 AM 編輯

回復 5# enochyu

萬分感謝enochyu大,經小弟測試後完全可以。
enochyu大真是太太太強了!!

再次致上感謝之意~~

發表於 11-12-29 00:12 | 顯示全部樓層
回復 6# lu0811


you are wellcome ~ ^o^


若覺得函式名稱太長想讓名稱變得與內建的 Minute() 較接近,可以變化如下,

  1. // 底層函式
  2. function getMinuteBlock( _minuteUnit )
  3. {
  4.     _eyMinuteBlock = -1;
  5.     if ( ( _minuteUnit > 0 ) && ( _minuteUnit < 600 ) )
  6.         _eyMinuteBlock = floor( ( ( Hour() * 60 )  + Minute() ) / _minuteUnit );
  7.     return _eyMinuteBlock;
  8. }

  9. // 以 [2分鐘] 為單位之函式
  10. function Minute2()
  11. {
  12.     return getMinuteBlock( 2 );
  13. }

  14. // 以 [3分鐘] 為單位之函式
  15. function Minute3()
  16. {
  17.     return getMinuteBlock( 3 );
  18. }

  19. // ...


  20. // 以 [15分鐘] 為單位之函式
  21. function Minute15()
  22. {
  23.     return getMinuteBlock( 15 );
  24. }

  25. // ... 以此類推,任君高興自己定義囉!
複製代碼


------

使用方式,

  1. Minute15();    // 結果同 getMinuteBlock( 15 );
  2. Ref( Minute15(), -1 );    // 結果同 Ref( getMinuteBlock( 15 ), -1 );
複製代碼


------

請參考。

評分

參與人數 3金錢 +9 收起 理由
kilroy + 5 這實在是太讚了!
joey0415 + 2 拍手
lu0811 + 2 enochyu大,感謝您。

查看全部評分

 樓主| 發表於 11-12-29 00:22 | 顯示全部樓層
本帖最後由 lu0811 於 11-12-29 12:32 AM 編輯

回復 7# enochyu

原 getMinuteBlock() 就已經很完美了,

想不到enochyu大除此之外還再附贈一個加強版。

一樣讚啦!這個加強版經小弟測試後一樣OK。

發表於 11-12-29 01:04 | 顯示全部樓層
you are wellcome ~ ^o^
若覺得函式名稱太長想讓名稱變得與內建的 Minute() 較接近,可 ...
enochyu 發表於 11-12-29 12:12 AM



   enochyu 大大真是太厲害了
   大大會寫外期下單機嗎
   有機會的話,合作一下
發表於 11-12-29 01:09 | 顯示全部樓層
我有喔 ~ 用 VC 寫的捏
發表於 11-12-29 02:49 | 顯示全部樓層
我有喔 ~ 用 VC 寫的捏
saucer 發表於 11-12-29 01:09 AM



   讚喔!
發表於 11-12-29 08:04 | 顯示全部樓層
回復 9# kilroy


外期下單這部分小弟很有興趣,若有機會合作小弟也很樂意,只是個人時間上沒這麼彈性,怕耽誤寬大的賺錢良機 ~ 哈哈

套您一句話 "功成不必在我,在各人的的修為",相信有能力(時間)分享絕對是一種幸福 ~

評分

參與人數 2金錢 +7 收起 理由
kilroy + 5 期待大大的分享唷~~
lu0811 + 2 好樣的 :)

查看全部評分

發表於 11-12-29 14:22 | 顯示全部樓層
我有喔 ~ 用 VC 寫的捏
saucer 發表於 11-12-29 01:09 AM



   只要是有 API的函數庫等資料
   大大都可以寫得出來嗎

   P.S. 不管國內外期貨商

---

   讚喔!
發表於 11-12-29 22:08 | 顯示全部樓層
回復 8# lu0811

我比較好奇這可以怎麼用??跟改TimeFrame有什麼不一樣的應用嗎?
 樓主| 發表於 11-12-29 22:43 | 顯示全部樓層
回復 14# GnuHomot
BarsSince(15分鐘() != Ref(15分鐘(),-1));

就是2樓說的用法啊。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-11-22 23:27

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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