真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python怎么實(shí)現(xiàn)線性掛單流策略

這篇文章主要介紹了python怎么實(shí)現(xiàn)線性掛單流策略的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇python怎么實(shí)現(xiàn)線性掛單流策略文章都會(huì)有所收獲,下面我們一起來看看吧。

成都創(chuàng)新互聯(lián)公司主營宜陽網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,宜陽h5微信小程序搭建,宜陽網(wǎng)站營銷推廣歡迎宜陽等地區(qū)企業(yè)咨詢

如何使用數(shù)據(jù)回放

數(shù)據(jù)回放功能可以不受交易所交易時(shí)間限制進(jìn)行訓(xùn)練,支持多種商品期貨和數(shù)字貨幣品種,行情可以手動(dòng)回放也可以自動(dòng)回放,也能自由設(shè)定歷史行情起止時(shí)間和回放速度。相對于其他軟件普遍采用K線數(shù)據(jù)回放方式,發(fā)明者量化采用Tick級別的數(shù)據(jù)回放方式,真實(shí)接近實(shí)盤交易的回測環(huán)境,重現(xiàn)盤口價(jià)量數(shù)據(jù),讓交易者身臨其境。

打開發(fā)明者量化的官網(wǎng)(fmz.com)注冊并登錄,然后點(diǎn)擊控制中心的數(shù)據(jù)探索,即可呈現(xiàn)數(shù)據(jù)回放功能頁面。其**有四個(gè)選項(xiàng)框和一個(gè)選擇按鈕,首先點(diǎn)擊選擇按鈕只顯示支持實(shí)盤回放的品種,其次在左上方選擇要回放的品種,然后在后面的兩個(gè)選項(xiàng)框中選擇數(shù)據(jù)的起止時(shí)間,接著選擇數(shù)據(jù)的時(shí)間周期為實(shí)盤回放,最后點(diǎn)擊最右邊的Go按鈕,即可開啟數(shù)據(jù)回放功能。

python怎么實(shí)現(xiàn)線性掛單流策略

在數(shù)據(jù)標(biāo)簽下面一共分為三塊。左邊是交易歷史,這里按照時(shí)間順序展示了所有已經(jīng)成交的訂單。中間是買賣各20檔深度的盤口數(shù)據(jù)。右邊則是數(shù)據(jù)回放的控制區(qū)域,在這里可以選擇手動(dòng)和自動(dòng)數(shù)據(jù)回放方式,就像使用媒體播放器一樣簡單。

python怎么實(shí)現(xiàn)線性掛單流策略

位置索引可以左右來回拖動(dòng)游標(biāo),可以快速的選擇數(shù)據(jù)回放的開始時(shí)間。

python怎么實(shí)現(xiàn)線性掛單流策略

在最下方也可以通過右左移動(dòng)游標(biāo)控制數(shù)據(jù)的回放速度,以毫秒為時(shí)間單位,在數(shù)據(jù)回放時(shí)既能加速也能減速。

python怎么實(shí)現(xiàn)線性掛單流策略

構(gòu)建策略邏輯

盡管影響價(jià)格漲跌的因素非常多,包括:全球經(jīng)濟(jì)環(huán)境、國家宏觀政策、相關(guān)產(chǎn)業(yè)政策、供需關(guān)系、國際事件、利率與匯率、通貨膨脹與緊縮、市場心理、未知因素等等,但最后盤面上的價(jià)格卻是多方與空方角逐后的結(jié)果。如果買的人多過賣的人,價(jià)格就會(huì)上漲;反之如果賣的人多過買的人,價(jià)格就會(huì)下跌。那么我們只需要分析價(jià)格,就可以做出一個(gè)交易策略。

通過發(fā)明者量化回放最近一個(gè)月幣安交易所的btc_usdt交易對,我們發(fā)現(xiàn)在行情大漲和大跌時(shí),Tick數(shù)據(jù)的訂單薄多空雙方的單量明顯不對稱。當(dāng)行情大漲時(shí)多頭的掛單量明顯大于空頭的掛單量;當(dāng)行情大跌時(shí)空頭的掛單量明顯小于多頭掛單量。那么我們是否可以根據(jù)訂單薄中的掛單量來預(yù)測短時(shí)間內(nèi)價(jià)格的漲跌呢?

答案是肯定的。

python怎么實(shí)現(xiàn)線性掛單流策略
python怎么實(shí)現(xiàn)線性掛單流策略

我們可以通過收集深度Tick數(shù)據(jù),計(jì)算多空雙方的掛單量并加以對比,如果多空綜合掛單量懸殊很大,就可能時(shí)潛在的買賣機(jī)會(huì)。比如當(dāng)多頭的掛單量是空頭掛單量的N倍時(shí),我們可以認(rèn)為市場上大部分人都看多,未來短時(shí)間內(nèi)價(jià)格上漲的概率就會(huì)增大;當(dāng)空頭的掛單量是多頭的N倍時(shí),我們可以認(rèn)為市場大部分人都看空,未來短時(shí)間內(nèi)價(jià)格下跌的概率就會(huì)增大。

編寫交易策略

按照以上策略邏輯,開始用代碼實(shí)現(xiàn)出來。依次打開:fmz.com網(wǎng)站 > 登錄 > 控制中心 > 策略庫 > 新建策略 > 點(diǎn)擊右上角下拉菜單選擇Python語言,開始編寫策略。本策略作為教學(xué)拋磚引玉,所以我盡量把策略寫的精簡一些,注意看下面代碼中的注釋。

第一步:編寫策略框架

# 策略主函數(shù)
def onTick():
    pass


# 程序入口
def main():
    while True:  # 進(jìn)入無限循環(huán)模式
        onTick()  # 執(zhí)行策略主函數(shù)
        Sleep(1000)  # 休眠1秒

我們編寫策略時(shí)應(yīng)該由大往小寫,就像蓋房子一樣,先蓋框架再蓋墻面。在這個(gè)框架中,我們使用了兩個(gè)函數(shù),分別是:main函數(shù)和onTick函數(shù)。其中main函數(shù)是程序的入口,也就是說程序會(huì)從這里執(zhí)行,然后進(jìn)入無限循環(huán)模式,重復(fù)執(zhí)行onTick函數(shù)。那么我們只需要把策略內(nèi)容寫到onTick函數(shù)中就可以了。

第二步:編寫全局變量

vol_ratio_arr = []  # 多空掛單比率數(shù)組
mp = 0  # 虛擬持倉

之所以定義vol_ratio_arr為全局變量,因?yàn)槲业牟呗孕枰占欢蜹ick數(shù)據(jù)的多空掛單比率,如果我們把vol_ratio_arr變量放到onTick函數(shù)中,隨著循環(huán)運(yùn)行顯然是不合理的,我們需要的是在循環(huán)模式中,當(dāng)達(dá)到某個(gè)條件時(shí)才改變變量的值,最合理的方法是把這個(gè)變量放到循環(huán)的外面。

持倉管理是非常有必要的,因?yàn)樗P(guān)系到買賣邏輯,一般情況下我們在現(xiàn)貨交易中,是通過獲取賬戶來計(jì)算持有的貨幣對。這里為了簡化代碼,直接定義一個(gè)全局虛擬持倉變量,來控制買賣邏輯。

第三步:計(jì)算當(dāng)前多空比率

depth = exchange.GetDepth()  # 獲取深度數(shù)據(jù)
asks = depth['Asks']  # 獲取賣價(jià)數(shù)組
bids = depth['Bids']  # 獲取買價(jià)數(shù)組
asks_vol = 0  # 所有賣價(jià)掛單
bids_vol = 0  # 所有買價(jià)掛單
for index, ask in enumerate(asks):  # 遍歷賣價(jià)數(shù)組
    # 線性計(jì)算所有賣價(jià)掛單
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # 遍歷買價(jià)數(shù)組
    # 線性計(jì)算所有買價(jià)掛單
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # 計(jì)算多空比率

眾所周知,數(shù)字貨幣通常是20檔的深度數(shù)據(jù),那么我們可以把多頭和空頭的掛單量累加起來就可以計(jì)算出多頭與空頭的比值,當(dāng)這個(gè)值大于1時(shí)說明看多的人大于看空的人,預(yù)示著未來短時(shí)間內(nèi)價(jià)格會(huì)上漲;當(dāng)這個(gè)值小于1時(shí)說明看空的人大于看多的人,預(yù)示著未來短時(shí)間內(nèi)價(jià)格會(huì)下跌。

但有一點(diǎn)是需要加以區(qū)分的,當(dāng)掛單距離盤口越近,就說明看多或看空的意愿更強(qiáng)烈,比如掛在一檔的買單肯定比掛在20檔的買單看多意愿更強(qiáng)烈。因此我們在累加掛單時(shí),需要用線性的方式把20檔的掛單分別給與不同的權(quán)重,這樣會(huì)更加合理。

第四步:線性計(jì)算一段時(shí)間內(nèi)的多空比率

global vol_ratio_arr, mp  # 引入全局變量
vol_ratio_arr.insert(0, bidask_ratio)  # 把多空比率放到全局變量數(shù)組里面
if len(vol_ratio_arr) > 20:  # 如果數(shù)組超過指定長度
    vol_ratio_arr.pop()  # 刪除最舊的元素
all_ratio = 0  # 臨時(shí)變量,所有多空掛單比率
all_num = 0  # 臨時(shí)變量,所有線性乘數(shù)
for index, vol_ratio in enumerate(vol_ratio_arr):  # 變量全局變量數(shù)組
    num = 20 - index  # 線性乘數(shù)
    all_num = all_num + num  # 線性乘數(shù)累加
    all_ratio = all_ratio + vol_ratio * num  # 所有多空掛單比率累加
ratio = all_ratio / all_num  # 線性多空掛單比率

把多頭累加掛單除以空頭累加掛單就可以得到多空比值,但這僅僅時(shí)一個(gè)Tick的數(shù)據(jù),如果只用一個(gè)Tick數(shù)據(jù),來決定買賣交易可能不是一個(gè)明智選擇,因?yàn)樵谒蚕⑷f變的行情中,一個(gè)Tick數(shù)據(jù)是沒有說服力的。所以我們就需要收集一段固定的Tick數(shù)據(jù),最后再通過線性計(jì)算出一個(gè)公允的數(shù)值。

第五步:下單交易

last_ask_price = asks[0]['Price']  # 最新賣一價(jià),用于買入的價(jià)格
last_bid_price = bids[0]['Price']  # 最新買一價(jià),用于賣出的價(jià)格
if mp == 0 and ratio > buy_threshold:  # 如果當(dāng)前無持幣,并且比率大于指定值
    exchange.Buy(last_ask_price, 0.01)  # 買入
    mp = 1  # 設(shè)置虛擬持倉的值
if mp == 1 and ratio < sell_threshold:  # 如果當(dāng)前持幣,并且比率小于指定值
    exchange.Sell(last_bid_price, 0.01)  # 賣出
    mp = 0  # 重置虛擬持倉的值

因?yàn)樵谙聠螘r(shí)需要指定一個(gè)價(jià)格,所以我們在買入的時(shí)候,可以直接使用最新的賣一價(jià);在賣出的時(shí)候,可以直接使用最新的買一價(jià)。最后在下單交易完畢,重置設(shè)置虛擬持倉的值。

關(guān)于“python怎么實(shí)現(xiàn)線性掛單流策略”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“python怎么實(shí)現(xiàn)線性掛單流策略”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文題目:python怎么實(shí)現(xiàn)線性掛單流策略
分享網(wǎng)址:http://www.weahome.cn/article/ghpjsg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部