突破策略)
尋得一個(gè)pyton寫的策略值得研究一下。IDLE 0 # 定義一個(gè) 標(biāo)記量表示空閑狀態(tài)LONG 1 # 定義一個(gè) 標(biāo)記量表示持多倉狀態(tài)SHORT 2 # 定義一個(gè) 標(biāo)記量表示持空倉狀態(tài)def (): # 實(shí)現(xiàn)一個(gè)取消所有掛單的功能函數(shù)while True: # 循環(huán)執(zhí)行 _C(.) # 讀取當(dāng)前所有掛單 是一個(gè)數(shù)組要是通過某種方式去判定, 這個(gè)數(shù)組的長度, 等于0的話, 那就呈現(xiàn)出, 此數(shù)組正處于, 沒有掛單之后的這種狀態(tài)。結(jié)束# 從while那個(gè)循環(huán)里面退出來, 不存在掛著的單子表明不用去取消了。至于for循環(huán)中的order, 在經(jīng)過上邊if檢測而能夠執(zhí)行到此處時(shí), 這意味著數(shù)組的長度并非為零, 存在掛單情況, 進(jìn)而對(duì)數(shù)組進(jìn)行遍歷。根據(jù)遍歷的時(shí)候, 訂單信息里的Id, 取消那個(gè)Id的訂單, (order.Id) #。讓Sleep(1000)來控制一下取消的頻率, 在每次進(jìn)行取消操作的時(shí)候, 使其暫停1秒鐘。以def main()來定義, 此為策略主函數(shù), 在策略啟動(dòng)之后, 會(huì)從這里開啟執(zhí)行進(jìn)程。state被設(shè)定為IDLE, 此為給策略去定義出一個(gè)狀態(tài)變量, 并且將其初始化為處于空閑的那種狀態(tài)。下達(dá)一個(gè)指令, 為策略去定義一個(gè)下單的方向變量, 將其初始狀態(tài)設(shè)定為空的字符串。while True: # 執(zhí)行策略邏輯循環(huán)倘若.IO空字符串這個(gè)操作成立, 那就意味著要檢查是不是與期貨公司服務(wù)器建立了連接, 而且登錄已經(jīng)獲取成功。(_D(), 已經(jīng)連接)通過()來設(shè)置要做操作的合約, 在此處將其設(shè)置為, 也能夠做成參數(shù), 于策略參數(shù)上面予以設(shè)置。等于_C(點(diǎn)), 用于獲取K線數(shù)據(jù)的狀況, 該狀況是在策略參數(shù)界面以上做出K線周期為1小時(shí)的設(shè)置之后, 所獲取的即為1小時(shí)時(shí)長的K線數(shù)據(jù)。如果數(shù)據(jù)數(shù)量范圍小于二十一, 使用BOLL指標(biāo)的預(yù)設(shè)參數(shù), 為此K線數(shù)據(jù)的柱狀數(shù)量必須足以達(dá)到二十一, 才可核算算出有效的BOLL指標(biāo)。# 不滿足條件的情況下跳過后面的代碼重復(fù)循環(huán)布爾值等于技術(shù)分析庫中的布林帶函數(shù)計(jì)算所得結(jié)果, 當(dāng)列表長度大于或等于二十一時(shí), 執(zhí)行到此處, 運(yùn)用該函數(shù)計(jì)算布林指標(biāo)數(shù)據(jù), 布爾相關(guān)的這個(gè)值是一個(gè)二維列表, 此二維列表中的一項(xiàng)是上軌數(shù)據(jù), 此二維列表中的一項(xiàng)是中線數(shù)據(jù), 此二維列表中的一項(xiàng)是下軌數(shù)據(jù)。利用, 那個(gè), 畫線類庫的接口, 去繪制, K線, 而關(guān)于, 畫線類庫的代碼, 能夠, 在策略廣場之中, 尋覓到。調(diào)用外部的, 名為“up”的, 與布林線相關(guān)的, 涉及時(shí)間的, 類庫接口, 來繪制上軌。提取, “中間的”, 布林線, 時(shí)間, #進(jìn)行描繪中線的操作。于外部執(zhí)行, 針對(duì)“向下”的情況繪制布林線下軌, 關(guān)聯(lián)此時(shí)的時(shí)間。pos _C(.) # 讀取當(dāng)前賬戶持倉信息要是當(dāng)前賬戶存在持倉, 而在無持倉的狀況下, 此時(shí)len(pos)等于0, 那么當(dāng)len(pos) 1的時(shí)候 , 情況又不一樣了。要是持倉數(shù)據(jù)里 持倉的數(shù)據(jù)方向 呈現(xiàn)出一種情況 或者是呈現(xiàn)出另一種規(guī)定的情況 那么 就要依據(jù)此 針對(duì)運(yùn)行的策略 去調(diào)整狀態(tài)變量state所具有的值。state LONG # 設(shè)置為持有多倉狀態(tài)那如果位置種類等于, 或者位置種類等于, 這種情況呢。state SHORT # 設(shè)置為持有空倉狀態(tài)elif len(pos) 0 : # 無持倉時(shí)state IDLE # 持倉狀態(tài)設(shè)置為空閑else :引發(fā) “錯(cuò)誤 長度位置大于1”, #當(dāng)檢測到存在多個(gè)倉位時(shí), 進(jìn)行報(bào)錯(cuò), 而單獨(dú)運(yùn)行這個(gè)策略, 是不會(huì)產(chǎn)生多個(gè)倉位的, 要是出現(xiàn)這種情況那就表明存在異常。要是當(dāng)前處于空閑狀態(tài), 或者處于持有空倉狀態(tài), 且K線BAR結(jié)束時(shí)判定價(jià)格突破上軌那就開展未來進(jìn)一步評(píng)判, 前提是.Close大于boll這個(gè)條件滿足 , # 同時(shí)只要.State等同于 IDLE 或.State形同于 SHORT發(fā)生#。處于持有空倉狀態(tài)時(shí), 將其平為倉, 如有空閑狀態(tài)就實(shí)施開啟多倉的操作, 對(duì)交易方向設(shè)置用來表示它的變量。if state IDLE: buy # 設(shè)置交易方向變量為開多倉else : # 設(shè)置交易方向變量為平空倉.() # 調(diào)用交易方向設(shè)置函數(shù)設(shè)置方向根據(jù)對(duì)于rb這個(gè)品種而言的當(dāng)前價(jià)格, 加兩跳, 執(zhí)行.Buy函數(shù), 下單量為1手 , 此函數(shù)第一參數(shù)是價(jià)格, 第二參數(shù)即該1手下單量, 于.Close 2價(jià)位吃單。() # 下單后嘗試取消所有掛單未成交elif, 當(dāng)前收盤價(jià), 小于, 布林線下軌, 并且, 狀態(tài), 等于, 閑置, 或者, 狀態(tài), 等于, 做多, 這時(shí), 判斷, 形成了, 價(jià)格, 對(duì)下方軌道線, 產(chǎn)生的突出穿過行為。假如是持有多倉的狀況, 請(qǐng)進(jìn)行平多倉操作, 要是處于空閑狀態(tài), 那就開空倉, 進(jìn)而設(shè)置交易方向變量。if state IDLE: sellelse : .().Sell(.Close - 2, 1)()else :