溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中如何利用交叉指標算法進行加密貨幣量化交易

發(fā)布時間:2021-10-09 15:31:48 來源:億速云 閱讀:178 作者:柒染 欄目:互聯(lián)網(wǎng)科技

Python中如何利用交叉指標算法進行加密貨幣量化交易,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

在這個教程中,我們將學習如何利用交叉指標預測加密貨幣市場的買入/賣出信號,并在教程結尾提供了完整的Python代碼,在市場歷史數(shù)據(jù)上利用此算法可以實現(xiàn)三倍的比特幣收益回報率。

1、基礎知識:黃金交叉 vs. 死亡交叉

如果你有金融背景,就知道黃金交叉(golden Cross)和死亡交叉(Death Cross)這兩個指標是衍生自滑動平均算法,也被稱為交叉指標(cross indicator)。這兩個交叉指標都是使用以下公式對特定時間段內的市場收盤價計算平均值:

Python中如何利用交叉指標算法進行加密貨幣量化交易

該概念組合兩個滑動平均值(短期和長期)以獲得加密貨幣趨勢。當短期移動均線超過或回顧長期移動均線時,將出現(xiàn)買入或賣出信號。

從數(shù)學上講,如果你選擇5個周期的短期移動均線和20個周期的長期移動均線,我們將通過以下條件 獲得買入信號:

Python中如何利用交叉指標算法進行加密貨幣量化交易

MA(5)計算如下:

Python中如何利用交叉指標算法進行加密貨幣量化交易

MA(20)計算如下:

Python中如何利用交叉指標算法進行加密貨幣量化交易

CPrice對應于收盤價值。例如,目前比特幣的價格為49,670美元,t表示時間段定義(在本文結尾的視頻中對此有更多解釋)。這些交叉指標是方程的一部分,可幫助檢測所研究的加密貨幣的全球趨勢。這些CI(交叉指標)在全球范圍內被多個交易者和基金廣泛使用,以定義支撐力量、阻力水平、 止損和目標并了解潛在趨勢。

現(xiàn)在我們已經(jīng)涵蓋了一些背景知識,讓我們開始測試,看看它們如何幫助預測加密貨幣市場。

2、使用的軟件棧

在繼續(xù)下面的教程之前,請確保你已經(jīng)安裝了Python3以及以下軟件包:

  • Pandas:

  • NumPy:

  • Yfinance:

  • Plotly:不是必須的,但在繪圖時有用

可以使用pip安裝上述軟件包,例如:

pip install yfinance
pip install plotly

3、數(shù)據(jù)管道和建模

現(xiàn)在我們可以定義數(shù)據(jù)處理流程了,主要包含3個不同的步驟:

Python中如何利用交叉指標算法進行加密貨幣量化交易

  1. 使用Yahoo Finance API查詢實時加密貨幣的數(shù)據(jù)

  2. 定義一個時間段,為我們要計算的數(shù)據(jù)創(chuàng)建新列,然后每秒更新這些值。

  3. 實時繪圖,并檢查我們的信號是否準確。

在本文中,我不會過多地介紹有關代碼和API的細節(jié),你可以在下面的文章中 了解 如何用Python獲取實時的加密貨幣市場數(shù)據(jù)。現(xiàn)在我們可以開始編碼了!

4、導入軟件包

第一步將包括導入必要的軟件包。使用以下代碼行導入以前安裝的軟件包:

# Raw Package
import numpy as np
import pandas as pd

#Data Source
import yfinance as yf

#Data viz
import plotly.graph_objs as go

現(xiàn)在已經(jīng)導入了庫,接下來可以導入我們的加密貨幣數(shù)據(jù)了。

5、獲取實時市場數(shù)據(jù)

現(xiàn)在,所需的不同軟件包已上傳。我們將以BTC-USD交易對為例,通過Yahoo Finance API設置導入。

可以擴展需要的法幣以及加密貨幣選項。例如,如果你來自印度或加拿大,則可以使用INR或CAD,你也可以設置是否需要Ripple或Ethereum數(shù)據(jù)。

讓我們回到API結構。

調用Yahoo Finance API時需要按順序傳入三個參數(shù):

  • 交易對代碼(1)

  • 開始日期+結束日期或期間(2)

  • 間隔(3)

在我們的示例中,交易對代碼(參數(shù)1)將為BTC-USD對。此外,在此示例中,我們將選擇最后7天作為時間段(參數(shù)2)。并設置一個間隔(參數(shù)3)的90分鐘。

要調用數(shù)據(jù),必須使用以下結構:

Python中如何利用交叉指標算法進行加密貨幣量化交易

在繼續(xù)之前,我將介紹有關第三個參數(shù)(interval)的一些細節(jié)。

6、可用的時間間隔

這里我想快速介紹一下可以使用yahoo finance API設置的不同間隔。

下面詳細列出了各種可能的間隔:

Python中如何利用交叉指標算法進行加密貨幣量化交易

現(xiàn)在我們已經(jīng)定義了三個參數(shù),讓我們執(zhí)行查詢并檢查輸出:

data = yf.download(tickers='BTC-USD',period = '8d', interval = '90m')

下面是輸出結果:

Python中如何利用交叉指標算法進行加密貨幣量化交易

現(xiàn)在,我們已經(jīng)下載并存儲了數(shù)據(jù),可以繼續(xù)并定義華東平均線以及買賣信號。

7、算法實現(xiàn)

現(xiàn)在,我們的實時數(shù)據(jù)已經(jīng)下載并存儲在名為data的變量中。下一步包括計算我們的移動平均線 并設置買入和賣出信號。

我們將需要創(chuàng)建以下計算字段:

  • MA(5)

  • MA(20)

為此,我們將使用Python中包含的滾動函數(shù)來獲取n個最新周期的平均值。關于MA(5),我們將在最近的5個90分鐘周期內應用我們的策略。這意味著我們將計算最近7小時30分鐘(5次乘以90分鐘)的平均收盤價。

Python中如何利用交叉指標算法進行加密貨幣量化交易

類似的對于MA(20),要計算的是20個而不是5個90分鐘周期的平均值。Python代碼如下:

#Moving average using Python Rolling function
data['MA5'] = data['Close'].rolling(5).mean()
data['MA20'] = data['Close'].rolling(20).mean()

上面的代碼執(zhí)行后,將為數(shù)據(jù)框創(chuàng)建2個新列,如下所示:

Python中如何利用交叉指標算法進行加密貨幣量化交易

好了,下面我們就可以測試策略了。

8、實時繪圖

我們計劃的最后一步是繪制數(shù)據(jù)并檢查是否可以預測市場走勢。在下圖中,我將綠色標記為良好的預測,將黑色預測為錯誤的預測:

Python中如何利用交叉指標算法進行加密貨幣量化交易

9、量化交易Python代碼

完整的Python代碼如下:

# Raw Package
import numpy as np
import pandas as pd
#Data Source
import yfinance as yf
#Data viz
import plotly.graph_objs as go

#Importing market data
data = yf.download(tickers='BTC-USD',period = '8d', interval = '90m')

#Adding Moving average calculated field
data['MA5'] = data['Close'].rolling(5).mean()
data['MA20'] = data['Close'].rolling(20).mean()

#declare figure
fig = go.Figure()

#Candlestick
fig.add_trace(go.Candlestick(x=data.index,
                open=data['Open'],
                high=data['High'],
                low=data['Low'],
                close=data['Close'], name = 'market data'))

#Add Moving average on the graph
fig.add_trace(go.Scatter(x=data.index, y= data['MA20'],line=dict(color='blue', width=1.5), name = 'Long Term MA'))
fig.add_trace(go.Scatter(x=data.index, y= data['MA5'],line=dict(color='orange', width=1.5), name = 'Short Term MA'))

#Updating X axis and graph
# X-Axes
fig.update_xaxes(
    rangeslider_visible=True,
    rangeselector=dict(
        buttons=list([
            dict(count=3, label="3d", step="days", stepmode="backward"),
            dict(count=5, label="5d", step="days", stepmode="backward"),
            dict(count=7, label="WTD", step="days", stepmode="todate"),
            dict(step="all")
        ])
    )
)

#Show
fig.show()

所有交易都不完美,有時我們往往會滯后于進入或離開市場,但在比特幣穩(wěn)定的時期,黃金交叉策略已成為提高我們利潤的有用策略。利用已有的歷史數(shù)據(jù)進行簡單計算后,我們的算法可以在一周內獲得7.1%的回報,而同期的比特幣交易回報率則穩(wěn)定在1.7%左右。

關于Python中如何利用交叉指標算法進行加密貨幣量化交易問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI