本帖最後由 skyler 於 14-6-19 11:36 編輯
kilroy 發表於 14-6-19 10:19
Hi,
沒錯,Periodicity 設定就是掃描的週期
感謝k大您的回覆
跟您確認一下我的理解有沒有誤
-----
PrevTN = StaticVarGet("TimeNumber"+Name());
TN = LastValue(TimeNum());
NewBar = TN != PrevTN;
我想問NewBar的變化
假設以小時K來看(用開盤時間表示)
-1 (前根K棒):時間是 09:00:00
0 (目前K棒):時間是 10:00:00
scan 是1秒執行一次
系統時間在 09:59:59 的scan : NewBar = false
系統時間在 10:00:00 的scan : NewBar = true
系統時間在 10:00:01 的scan : NewBar = false
Buy = ExRem( Buy, Short );
假設在這三個時間點都有buy訊號成立
系統時間在 09:59:59 時 BuyOrderID != "" 所以不會有買訊送出
系統時間在 10:00:00 時 BuyOrderID != "" 會送出買訊
系統時間在 10:00:01 時 BuyOrderID != "" 所以不會有買訊送出
今天若加上
barcomplete = BarIndex() < LastValue(BarIndex());
系統時間在 09:59:59 時 -1K尚未走完 barcomplete = false 買訊不成立
系統時間在 10:00:00 時 -1K走完 barcomplete = true 買訊成立
系統時間在 10:00:01 時 0K尚未走完 barcomplete = false 買訊不成立
最後應該只有 10:00:00 時會有單子送出才對呀
想不出來為什麼會有單子送不出去的情境?!
-----
另外想問一下
如果下出去的單是限價單目前正在排而沒有立即成交時
那麼我在以下
BuyOrderID = StaticVarGetText("BuyOrderID"+Name());
SellOrderID = StaticVarGetText("SellOrderID"+Name());
是否就取不到值呢?
-----
ibc.CloseAllOpenPositions(ContractMonth);
這會是以市價單平掉目前留倉並且也也包含委託中尚未成交單嗎?
如果要用限價來平倉
是否就是如下寫法
平多單(sell):
ibc.PlaceOrder("contractmonth", "SELL", 數量, "LMT", 價格, 0, "DAY", True );
平空單(cover):
ibc.PlaceOrder("contractmonth", "BUY", 數量, "LMT", 價格, 0, "DAY", True );
-----
下市價單就不用管邏輯中的
BuyPrice = CoverPrice = O;
ShortPrice = SellPrice = O;
只要管進出場
buy 或 cover:
ibc.PlaceOrder("contractmonth", "BUY", 數量, "MKT", 價格, 0, "DAY", True );
short 或 sell:
ibc.PlaceOrder("contractmonth", "SELL", 數量, "MKT", 價格, 0, "DAY", True );
所以大大都是下市價單
是為了確保所下的單能成交嗎?
------
突然想到
AB的回測能如果MC那樣
模擬各K線的上下振動來回測嗎
例如
我資料源是1分鐘
但回測K線圖是1小時
是否能做到 ?
再次謝謝您了~
|