COCO研究院

 找回密碼
 註冊
搜索
樓主: googleandy

請問 bug 在那裡呀?

[複製鏈接]
 樓主| 發表於 12-10-28 14:14 | 顯示全部樓層
folkchen 發表於 12-10-28 13:22
http://www.multicharts.com.tw/dis/dis_Content.aspx?rd=1&D_ID=2&SN=1697
剛剛去查了一下,原文的第6樓有 ...


哈, 早就有人碰到 一模一樣的問題.
那天是星期四(如雙大所說,星期三是端午節), 屬異常結算日.

我大略對照一下,
從 MC 官網發佈這個函數以來,
也只有這一天是 異常結算日.


以後碰到新的異常結算日應手工加入.




 樓主| 發表於 12-10-28 14:23 | 顯示全部樓層
雙巴神 發表於 12-10-28 12:07
裡面沒有0617這個日期~
我指的是官網的程式裡面沒有標0617,不是指歷史資料SORRY沒說清楚
20100617當然有 ...

原來 bug 在此!

我開始也提醒自己這個問題,
不過, 期交所用民國年表示,
而Power Language 用  1000101 代表 2000年1月1日,
有够眼花撩亂, 就忘了注意這個細節.

謝謝雙大!



 樓主| 發表於 12-10-28 14:25 | 顯示全部樓層
folkchen 發表於 12-10-28 13:24
我是沒有逐筆去對,寫個小程式去比對沒有K棒的結算日就可以了

這是個好主意,

謝謝F大!
發表於 12-10-28 17:54 | 顯示全部樓層
也許可以考慮一下我的版本:http://www.yctseng.net/2012/03/blog-post_13.html

我做了指標去 Print 試試
once cleardebug;
if CheckDay then
print(datetostring(datetojulian(D)));

結果如下:
2001/5/28
2002/1/16
2002/9/18
2002/10/16
2002/11/20
2002/12/18
2003/1/15
2003/2/19
2003/3/19
2003/4/16
2003/5/21
2003/6/18
2003/7/16
2003/8/20
2003/9/17
2003/10/15
2003/9/17
2003/10/15
2003/11/19
2003/12/17
2004/2/18
2004/3/17
2004/4/21
2004/5/19
2004/6/16
2004/7/21
2004/8/18
2004/9/15
2004/10/20
2004/11/17
2004/12/15
2005/1/19
2005/2/16
2005/3/16
2005/4/20
2005/5/18
2005/6/15
2005/7/20
2005/8/17
2005/9/21
2005/10/19
2005/11/16
2005/12/21
2006/1/18
2006/2/15
2006/3/15
2006/4/19
2006/5/17
2006/6/21
2006/7/19
2006/8/16
2006/9/20
2006/10/18
2006/11/15
2006/12/20
2007/1/17
2007/2/26
2007/3/21
2007/4/18
2007/5/16
2007/6/20
2007/7/18
2007/8/15
2007/9/19
2007/10/17
2007/11/21
2007/12/19
2008/1/16
2008/2/20
2008/3/19
2008/4/16
2008/5/21
2008/6/18
2008/7/16
2008/8/20
2008/9/17
2008/10/15
2008/11/19
2008/12/17
2009/1/21
2009/2/18
2009/3/18
2009/4/15
2009/5/20
2009/6/17
2009/7/15
2009/8/19
2009/9/16
2009/10/21
2009/11/18
2009/12/16
2010/1/20
2010/2/22
2010/3/17
2010/4/21
2010/5/19
2010/6/17
2010/7/21
2010/8/18
2010/9/15
2010/10/20
2010/11/17
2010/12/15
2011/1/19
2011/2/16
2011/3/16
2011/4/20
2011/5/18
2011/6/15
2011/7/20
2011/8/17
2011/9/21
2011/10/19
2011/11/16
2011/12/21
2012/1/18
2012/2/15
2012/3/21
2012/4/18
2012/5/16
2012/6/20
2012/7/18
2012/8/15
2012/9/19
2012/10/17
 樓主| 發表於 12-10-28 19:29 | 顯示全部樓層
本帖最後由 googleandy 於 12-10-28 20:09 編輯
曾永政 發表於 12-10-28 17:54
也許可以考慮一下我的版本:http://www.yctseng.net/2012/03/blog-post_13.html

我做了指標去 Print 試試

謝謝政大回覆.
我有買您的書  <<期貨程式交易SOP>>, 很棒, 特別是對初學者可以省下很多摸索時間.

不論是 multicharts 官網 或 政大,
都以每月的第三個的星期三結算為邏輯去撰寫程式, 例外者另行處理.都有道理.

不過, 我今天抓到一隻 bug ---
http://www.taifex.com.tw/chinese/11/attach/09700108800%E7%A8%BF%E8%BD%89%E5%87%BD.pdf


003.png


台灣期貨交易所是在 2008年12月份才改為每月的第三個的星期三計算結算價,
在此之前是每月的第三個星期四現貨開盤15分(或30分??)計算結算價,
(最後交易日仍是每月第三個星期三, 只是結算價在星期四計算而已!!)

所以, 在此月之前,不論是 multicharts 官網 或 政大的程式執行結果,
把交易所官網的"最後結算價一覽表"拿來比對----統統差一天!!
不信,上網核對看看.



發表於 12-10-28 21:29 | 顯示全部樓層
本帖最後由 曾永政 於 12-10-28 22:55 編輯
googleandy 發表於 12-10-28 19:29
謝謝政大回覆.
我有買您的書  , 很棒, 特別是對初學者可以省下很多摸索時間.

這部份就必須考量到,判斷結算日的作用是什麼了?

對我來說知道當天是結算日的目的是在當天把部位結清,讓回測報表盡量接近實際的交易,所以我還是把結算日的判斷當做是週三。我要判斷結算日的用處,幾乎就只是:if CheckDay then setexitonclose;


不知我的印象是否有錯?在更改結算價的產生時間前,近月報價還是報價到週三,週四的近月報價是次月份的,對期貨連續圖來說,差別是現在的近月報價只跳到週三的1330,以前是週三的1345。在這樣狀況下,結算日的判斷有需要把以前那段定為週四嗎?

如果我們依然認同把結算日定週三的話,我 Share 出來的方式是可以判斷出本來週三要結算卻因故(不管颱風、地震或是放假)而沒有結算被延到下一個交易日才結算的結算日。比如,雙巴神大提到的2010/06/17因端午節延後結算就有被判斷到。



評分

參與人數 1金錢 +5 收起 理由
googleandy + 5 感恩!

查看全部評分

發表於 12-10-28 21:43 | 顯示全部樓層
我沒有使用 MC, 對於結算日, 我的做法是
1: 先檢查 Exception List
2: 再檢查公式
 樓主| 發表於 12-10-28 22:44 | 顯示全部樓層
曾永政 發表於 12-10-28 21:29
這部份就必須考量到,判斷結算日的作用是什麼了?

對我來說知道當天是結算日的目的是在當天把部位結清, ...

Hi, 阿政,
   是的,
  其實星期四算結算價是題外話, 它是只給未平倉者在次日弄一個湊合價格罷了.
  程式交易者應會在星期三平倉, 星期四重新建立新月份的部位.

順便請教阿政一個問題:

      我用 5分線操作大台, 如果想在結算日"最後一盤"把多空部位全部平倉掉 ,

      If date=CheckDay and time=1325 then begin
          buy 0 share at this bar on close;  
          ShellShort 0 share at this bar on close;
      end ;

    這樣會不會拖到次日第一個bar open 才執行, (因為已close) ??
   要如何在尾盤 萬無一失地清倉? 謝謝您!







 樓主| 發表於 12-10-28 22:49 | 顯示全部樓層
薛豹 發表於 12-10-28 21:43
我沒有使用 MC, 對於結算日, 我的做法是
1: 先檢查 Exception List
2: 再檢查公式 ...

這是好方法.
雙大也主張 弄一個 Exception List, 不要用函數檢查.
發表於 12-10-28 22:52 | 顯示全部樓層
googleandy 發表於 12-10-28 22:44
Hi, 阿政,
   是的,
  其實星期四算結算價是題外話, 它是只給未平倉者在次日弄一個湊合價格罷了.


照你的 Code 來看不是結算日的"最後"一盤,而是平倉後還有5分鐘的時間還在交易。

如果不是那麼 Care 一定要抱單到最後的話,這樣寫可以達到結算日 132601 出場。不過,你得在進場那邊做好限制,別出場後又因為符合進場規則馬上進場了~
發表於 12-10-28 22:59 | 顯示全部樓層
folkchen 發表於 12-10-28 12:09
沒有人可以預知未來那天有放國定假日,也不知那個結算日會碰到颱風假
正常結算日可以用算的,但是特殊結算 ...

的確沒人可以預知未來哪一天是否一定是結算日。
但可以在交易的當日知道今天是否結算,至少,被延後結算的日子不離太遠的話~
 樓主| 發表於 12-10-28 23:08 | 顯示全部樓層
曾永政 發表於 12-10-28 22:52
照你的 Code 來看不是結算日的"最後"一盤,而是平倉後還有5分鐘的時間還在交易。

如果不是那麼 Care 一 ...



1.您說132601出場, 可是我用的是5 分線, 如何處理?

2.我正怕 "出場後又因為符合進場規則馬上進場了"
  我只求 "接近尾盤就可以(不必抱到最後),一定要市價清倉, 而且嚴防又再進場"
  請問如何處理?
  (不好意思,問這樣多, 恕我是初學者. 謝謝!)
發表於 12-10-28 23:17 | 顯示全部樓層
googleandy 發表於 12-10-28 23:08
1.您說132601出場, 可是我用的是5 分線, 如何處理?

2.我正怕 "出場後又因為符合進場規則馬上進場了"

1. 我指的是 1325 結束的K棒後的第一個 tick 出現,會執行平倉出場的動作,不需要特別怎麼做,你的寫法就會那樣了。

2. 至於再度進場的防止,那就只能問施主你自己了,通常可以把進場條件加上

Condition1= CheckDay and T=1325;
if 進場條件 and Not(Condition1) then ....

如果自己搞不定也不擔心程式碼公開的話,放到凱衛官網去也會有客服回答的^^

評分

參與人數 1金錢 +12 收起 理由
googleandy + 12 感恩!

查看全部評分

 樓主| 發表於 12-10-28 23:24 | 顯示全部樓層
曾永政 發表於 12-10-28 23:17
1. 我指的是 1325 結束的K棒後的第一個 tick 出現,會執行平倉出場的動作,不需要特別怎麼做,你的寫法就 ...

謝謝政大,
我慢慢 "試驗"看看.
發表於 12-10-29 00:38 | 顯示全部樓層
台指結算日遇到特殊事件是向後延期結算的..
所以是能寫出在結算日當天第一根K.. 就知道是結算日的..
我寫過一個自動的.. 有興趣請看這.. http://coco-in.net/thread-11959-1-1.html
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-11-25 03:30

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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