獨立網(wǎng)站優(yōu)化廣告寧波seo網(wǎng)絡推廣渠道介紹
在上一章節(jié) MACD金死叉中結(jié)束了如何根據(jù) MACD 金死叉計算交易信號。
目錄
- 腳本說明文檔(DevChat 生成)
- MACD 分析腳本
- 安裝依賴庫
- 參數(shù)配置
- 查詢與解析數(shù)據(jù)
- 計算 MACD 指標
- 判斷金叉和死叉
- 計算收益
- 繪制圖形
- 運行腳本
本次將根據(jù)交易信號,模擬交易。更加歷史數(shù)據(jù)對MACD金死叉交易策略進行回測,看一下收益如何。
下面進行一個簡單的實現(xiàn):
-
- 定義一個資金池
-
- 當出現(xiàn)買入信號且無倉位時,全倉買入。買入價為第二日收盤價(其實以第二日開盤價計算比較合理)。
-
- 當出現(xiàn)賣出信號且有倉位時,清倉。賣出價為第二日收盤價(同樣,也是以第二日開盤價更合理)
-
- 以下程序未計算印花稅等交易費用。
-
- 對金額進行了取整,方便展示。
def calculate_profit(prices, signals):capital = 100000 # 初始資金000001shares = 0 # 持有股票數(shù)量position = 0 # 0表示空倉,1表示持倉balance = 0profit = []profit.append(capital)for i,singal in signals:if singal == 'buy' and position == 0 :shares = int(capital / prices[i+1] / 100)balance = int(capital - (shares*prices[i+1]*100))position = 1elif singal == 'sell' and position == 1 :capital = int(shares * 100 * prices[i+1] + balance)shares = 0 position = 0profit.append(capital)return profit
對MACD 和收益進行圖形化輸出
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
plt.plot(df.index, df['close'])
plt.title('收盤價')
plt.xlabel('tdate')
plt.ylabel('Price')plt.subplot(3, 1, 2)
plt.title("MACD")
plt.plot(df['DIF'],'r',linewidth=1.0,label='DIF')
plt.plot(df['DEA'],'y',linewidth=1.0,label='DEA')
plt.legend()
plt.grid()plt.subplot(3, 1, 3)
plt.title("收益曲線")
plt.plot(profits,'r',linewidth=1.0,label='Profit')
plt.bar(range(len(profits)),profits)
plt.ylabel('RMB')
plt.legend()
plt.grid()plt.tight_layout()
plt.show()
以下是不同股票的策略回測結(jié)果:
平安銀行(000001)
全柴動力(600218)
中航高科(600862)
腳本說明文檔(DevChat 生成)
再次展示一下 AI 的力量。
MACD 分析腳本
這是一個用于從 TDengine 數(shù)據(jù)庫查詢股票收盤價,并進行 MACD 分析的 Python 腳本示例。腳本會繪制收盤價曲線、MACD 指標曲線以及收益曲線圖。
安裝依賴庫
確保您已安裝以下依賴庫:
requests
用于發(fā)送 RESTful 請求json
用于解析 JSON 響應matplotlib
用于繪制圖形pandas
用于處理數(shù)據(jù)
您可以使用 pip
在命令行中安裝它們:
pip install requests matplotlib pandas
參數(shù)配置
在開始之前,請根據(jù)您的實際情況設置以下參數(shù):
host
:TDengine 數(shù)據(jù)庫的主機名或 IP 地址port
:TDengine 數(shù)據(jù)庫的端口號username
:TDengine 數(shù)據(jù)庫的用戶名password
:TDengine 數(shù)據(jù)庫的密碼db_name
:數(shù)據(jù)庫名稱table_name
:數(shù)據(jù)表名稱fcode
:股票代碼
查詢與解析數(shù)據(jù)
首先,腳本通過 RESTful 請求從 TDengine 數(shù)據(jù)庫中查詢收盤價數(shù)據(jù)。然后,將查詢結(jié)果解析為列表,并將時間戳和收盤價分別存儲在 timestamps
和 close_prices
數(shù)組中。
計算 MACD 指標
接下來,使用 calculate_macd
函數(shù)計算 MACD 和信號線的值。該函數(shù)使用指定的周期參數(shù)計算指數(shù)移動平均線(EMA),然后計算 MACD 和信號線。同時,還計算了 MACD 的柱狀圖(MACD-Histogram)。
判斷金叉和死叉
使用 check_macd
函數(shù)判斷金叉和死叉的位置。該函數(shù)遍歷 MACD 和信號線數(shù)組,找到金叉和死叉的位置,并將其存儲在 crossing_points
數(shù)組中。
計算收益
使用 calculate_profit
函數(shù)計算根據(jù)金叉和死叉信號的策略產(chǎn)生的收益。在此示例中,初始資金為 100,000 RMB,根據(jù)買入和賣出信號以及股票價格的變化,計算并存儲了每個時刻的資金余額,并返回收益數(shù)組 profits
。
繪制圖形
最后,腳本使用 matplotlib
庫繪制了三個子圖。第一個子圖展示了收盤價的曲線圖,第二個子圖展示了 MACD 指標的曲線圖,第三個子圖展示了收益曲線。
運行腳本
確保您已正確安裝依賴庫并設置了正確的參數(shù)后,您可以執(zhí)行此 Python 腳本來運行 MACD 分析并繪制圖形。
當腳本運行完畢后,將會在屏幕上打印金叉和死叉的位置以及對應的時間戳和收盤價。此外,圖形窗口將顯示收盤價、MACD 指標和收益曲線。
請根據(jù)您的實際需求對腳本進行自定義和調(diào)整。希望這個示例對您有所幫助!