金融市場的動態本質需要利用可靠的數據來開發和驗證交易策略。在回測環境中有效地整合高品質資料對於交易者和分析師來說至關重要。 TraderMade API 透過提供精確、詳細和全面的市場數據來為這些專業人士提供支援。
此分析利用 TraderMade 的時間序列 API 來獲取歷史數據,執行簡單的簡單移動平均線 (SMA) 交叉策略,並評估其歷史表現。
簡單移動平均線(SMA)交叉策略是一種基本技術分析技術。它涉及對兩個 SMA 的觀察:一個是短期 SMA,它對價格變動表現出更高的敏感性;另一個是長期 SMA,它可以減輕短期價格波動的影響。
當短期移動平均線超過長期移動平均線時,就會產生買進訊號,表示潛在的上升趨勢。相反,當短期 SMA 跌破長期 SMA 時,會觸發賣出訊號,表示潛在的下跌趨勢。
先安裝 TraderMade 的 SDK,如下圖:
!pip install tradermade
我們使用安裝的軟體開發套件(SDK)來擷取外匯(forex)對的每小時時間序列資料。隨後的 Python 程式碼範例了獲取 EUR/USD 貨幣對的資料。
import tradermade as tm import pandas as pd def fetch_forex_data(api_key, currency, start_date, end_date, interval="hourly", fields=["open", "high", "low", "close"]): # Set API key tm.set_rest_api_key(api_key) # Fetch the data data = tm.timeseries(currency=currency, start=start_date, end=end_date, interval=interval, fields=fields) # Convert data directly to DataFrame df = pd.DataFrame(data) # Convert 'date' column to datetime df["date"] = pd.to_datetime(df["date"]) # Set 'date' as the index df.set_index("date", inplace=True) return df # Adjust as needed api_key = "YOUR TRADERMADE API KEY" currency = "EURUSD" start_date = "2024-11-01-00:00" end_date = "2024-11-27-05:12" # Fetch the data and display the first few rows forex_data = fetch_forex_data(api_key, currency, start_date, end_date) forex_data = forex_data.rename(columns={"open": "Open", "high": "High", "low": "Low", "close": "Close"}) forex_data.head()
回測資料收集和預處理已順利完成。
本節利用回測 Python 函式庫來定義和評估我們的 SMA 交叉策略。對於那些不熟悉回測庫的人來說,它被認為是用於回測技術交易策略的一個突出且強大的 Python 框架。這些策略涵蓋廣泛,包括 SMA 交叉、RSI 交叉、平均值反轉策略、動量策略等。
import numpy as np from backtesting import Backtest, Strategy from backtesting.lib import crossover from backtesting.test import SMA # Define the SMA crossover trading strategy class SMACrossoverStrategy(Strategy): def init(self): # Calculate shorter-period SMAs for limited data price = self.data.Close self.short_sma = self.I(SMA, price, 20) # Short window self.long_sma = self.I(SMA, price, 60) # Long window def next(self): # Check for crossover signals if crossover(self.short_sma, self.long_sma): self.buy() elif crossover(self.long_sma, self.short_sma): self.sell() # Initialize and run the backtest bt = Backtest(forex_data, SMACrossoverStrategy, cash=10000, commission=.002) result = bt.run() # Display the backtest results print("Backtest Results:") print(result)
此策略採用兩條移動平均線:20 週期 SMA 和 60 週期 SMA。當短期 SMA 超過長期 SMA 時,買入訂單被執行。相反,當短期 SMA 跌破長期 SMA 時,會觸發賣單。在 25 天的交易期間內,這種簡單的策略透過 6 筆交易獲得了 243 美元的利潤。
後續Python程式碼評估SMA交叉策略的效能。 SMA 有助於價格趨勢的可視化並識別產生買入/賣出訊號的交叉點。股票曲線作為績效指標,說明這些訊號對投資組合成長的影響。
透過整合兩條曲線,交易者可以輕鬆觀察交叉事件與投資組合價值變化之間的相關性,從而為 SMA 交叉策略的有效性提供重要見解。
Plotly 用於視覺化淨值和 SMA 曲線,使交易者能夠有效評估其策略的獲利能力。
!pip install tradermade
成功的回測需要準確、高頻的數據,而 TraderMade 的 API 有助於無縫整合。無論您的經驗水平如何 - 無論您是探索不同策略的新手還是開發複雜模型的經驗豐富的分析師 - 公司的產品都提供必要的工具。
您準備好將 TraderMade 的 API 納入您的工作流程了嗎?今天就開始您的旅程,將您的概念變為現實。
以上是像專業人士一樣使用外匯 API 進行回測的詳細內容。更多資訊請關注PHP中文網其他相關文章!