教授與各位前輩們大家好!!!!
小弟之前都在做股票,直到最近開始接觸期權商品,像是股票期貨,或者台指期貨。但是我發現無論是股票期貨或台指期貨都會遇到結算日,在結算日後單子就會自動平倉,如果有策略已經下單正在進行,結算日後就要手動補單下去,生活中要注意每個月的結算日期是幾號,哪個裡拜三,我擔心這樣如果上班很忙了話,忙到忘記今天是結算日,晚個一天後再補單,有時距離就被拉開了,因此我想寫一支在結算日能夠自動換倉的程式。
我查了XQ函數,GetLastTradeDate,可以取得台指的結算日日期,但是說明裡有個但書寫道,不支援若有假期變更後而更改的結算日(無法對應到當因為放假導致到期日變動的狀況)。我怕我上班太忙而忽略掉市場結算日期變更。
後來我想到一個方法,以台指期貨為例,可不可以用13:44時Filled=1,但15:01時Filled=0,因為13:45後就結算掉了,15:01夜盤開盤時就會沒有部位,此時可以補個一單。
但是我又遇到另一個問題,就是我的策略可以下多單,也可以下空單,我在找有沒有函數可以在13:44時回傳目前是持有多單還是空單,當知道13:44為多單時,15:01若Fill=0則補一個多單,反之則補一個空單。
目前是找到FilledRecordBS這個函數,但是說明裡說是要輸入第幾筆,我若13:44持有部位,想必一定是最近一筆交易,也找到有FilledRecordCount,不知道可不可以Value1= FilledRecordBS(FilledRecordCount)如果可以了話應該就可以解決大部分問題了
最後我是用非逐筆洗價,以五分鍾K棒,前面取得時間是1344與1501,非以五分鍾為單位,這樣是可行嗎?因為我想說我只是想當下回傳我握有什麼部位,與5分K棒應該沒有關係吧?原本也想說用1340與1505,但我發現我原本的策略裡面有1505時下單,我怕我的策略會與現在的結算換倉程式起衝突,所以改用1344與1501。
不知道教授與各位前輩有沒有更好的方法,以下是想出來的程式草稿
If CurrentTime=134400 and Filled=1 Then
Begin
Value1=FilledRecordBS(FilledRecordCount)
If CurrentTime=150100 and Filled=0 Then
Switch(value1)
Begin
Case=1:buy(1,market)
Case=-1:sell(1,market)
End;
End;
12 評論