portfolio對象的持倉變化問題 [金字塔]
-
咨詢內容:
def handle_bar(context):??
? ??print('新的一天開始了')??? ? portfolio = get_portfolio(context.s1,0)#讀取portfolio? ? print('當前空頭持倉為%d'%portfolio.sell_quantity)? ? print('當前多頭持倉為%d'%portfolio.buy_quantity)? ? if close[-1]>sg[-1] and close[-2]<=sg[-2]:? ? ? ? print('符合平空開多')? ? ? ? if portfolio.sell_quantity>0:? ? ? ? ? ? print('有空頭持倉,平空')? ? ? ? ? ? buy_close(context.s1,"market", volume=portfolio.sell_quantity,serial_id = 1)#空頭平倉? ? ? ? ? ? portfolio = get_portfolio(context.s1,0)#平空之后讀portfolio? ? ? ? ? ? print('買平后空頭持倉為%d'%portfolio.sell_quantity)#輸出顯示空頭持倉已經變為0? ? ? ? if portfolio.buy_quantity == 0:? ? print('無多頭持倉,開多')?? ? ? ? ? ? buy_open(context.s1, "market", volume=1,serial_id = 2)#多頭開倉? ? ? ? ? ? portfolio = get_portfolio(context.s1,0)#開多后讀portfolio? ? ? ? ? ? print('多開后多頭持倉為%d'%portfolio.buy_quantity)#輸出顯示多頭持倉依然為零,不應該為1嗎?? ?? ? if close[-1]<xg[-1] and close[-2]>=xg[-2]:? ? ? ? if portfolio.buy_quantity>0:? ? ? ? ? ? print('有多頭持倉,平多')? ? ? ? ? ? sell_close(context.s1,"market", volume=portfolio.buy_quantity,serial_id = 3)? ? ? ? ? ? portfolio = get_portfolio(context.s1,0)? ? ? ? ? ? print('平多后多頭持倉為%d'%portfolio.buy_quantity)? ? ? ? if portfolio.sell_quantity == 0:? ? ? ? ? ? print('無空頭持倉,開空')? ?? ? ? ? ? ? sell_open(context.s1, "market", volume=1,serial_id = 4)? ? ? ? ? ? portfolio = get_portfolio(context.s1,0)? ? ? ? ? ? print('開空后空頭持倉為%d'%portfolio.sell_quantity)? ? print('當天結束了')
def after_trading(context):? ? portfolio = get_portfolio(context.s1,0)? ? print('收盤空頭%d'%portfolio.sell_quantity)? ? print('收盤多頭%d'%portfolio.buy_quantity)#盤后顯示多頭持倉為1? ? pass
上文是平倉反手代碼片段,在handle_bar(context)中,平倉指令發出,持倉馬上歸零,但是反手開倉指令發出后,持倉不能正確顯示,依然為零,必須要在after_trading(context)中,才能正確顯示為1.請教這是機制問題,還是我的代碼有問題??
?來源: CXH99.COM
-
金字塔客服:
你是回測還是實盤運行?回測時候下單后不是立即成交的,如果你handle_bar只執行了一次,那么那一次下單后持倉是不會變化的
?
-
用戶回復:
無論是回測還是實盤都不可能下單后立馬就能在持倉中體現的。
單子總有到交易所撮合交易的過程
[此貼子已經被作者于2020/11/15 19:21:57編輯過]
?
-
網友回復:
我是日線級別回測,handle_bar每天執行一次。我的測試結果,如果是平倉語句,持倉馬上就會發生變化,這個似乎是虛擬持倉變化,跟是否成交沒關系。但是對于開倉語句,在之后handle_bar中任何位置GET_PORTFOLIO,都不會有持倉變化。只有在當日AFTER_TRADING方法中
GET_PORTFOLIO,持倉才會會發生變化。
所以問題一,
PORTFOLIO對象中的持倉是虛擬持倉,還是實際持倉,回測和實盤有何區別?
問題二:無論是虛擬持倉還是實際持倉,開倉和平倉語句之后的持倉變化時機是不同的,如上文所述,這個我反復測試過,難以理解。
?
-
網友回復:
你日線執行一次自然會有這個問題,因為你日線程序相當于只執行一次那么在執行下單動作后,馬上輸出持倉這個時候持倉是沒有變化的。這個如果實盤你應該能理解回測的話也一樣,不同于圖表策略那種回測,python這個回測他在下單瞬間是沒有持倉的
你如果實盤的話,用固定間隔一直去執行程序,那么可能第一次執行下單,等后面幾秒后執行時候持倉就會發生變化了
有思路,想編寫各種指標公式,交易模型,選股公式,還原公式的朋友
可聯系技術人員 QQ: 262069696 或微信號:cxh99cxh99 進行 有償收費 編寫!
(注:由于人數限制,QQ或微信請選擇方便的一個聯系我們就行,加好友時請簡單備注下您的需求,否則無法通過。謝謝您!)
相關文章
-
沒有相關內容