PythonでFXチャートを表示するのをGoogle Colabでやってみます。
https://colab.research.google.com
【Python】Backtesting.pyで株売買のバックテスト・最適化してみる
https://qiita.com/Fujinoinvestor/items/f2bdaabb766db443ddc0
アキシオリーのヒストリカルデータをダウンロードしてきます。
https://www.axiory.com/jp/how-to-install/historical-data
!pip install backtesting
もしも所持金5万円でドル円を取り引きした場合、2022年1月に114円下回ったら買い、116円上回ったら売りとしたらどうなったのか。
import pandas as pd
from google.colab import drive
# Googleドライブからアキシオリーの2022/01のCSVファイルを読み込む
drive.mount('/content/drive')
df = pd.read_csv(filepath_or_buffer='drive/My Drive/USDJPY_2022_01.csv', names = ['date','time','Open','High','Low','Close','volume'])
df['timestamp'] = pd.to_datetime(df['date'] +" "+ df['time'], format='%Y.%m.%d %H:%M')
df.drop({'date','time'},axis = 1,inplace = True)
df.set_index("timestamp", inplace=True)
# バックテスト実行、ストラテジー作成
from backtesting import Backtest, Strategy
from backtesting.lib import crossover
class myStrategy(Strategy):
def init(self): # ポジションを閉じる
self.position.close()
def next(self):
# 114円より下回ったら買い
if crossover(114, self.data.Close):
self.buy()
# 116円より上回ったら売り
elif crossover(self.data.Close, 116):
self.sell()
# バックテストを設定
bt = Backtest(
df,
myStrategy,
cash=500, # 所持金50,000円
commission=0.0001, # 取引手数料(為替価格に対する倍率で指定、為替価格100円でcommission=0.0001なら0.01円)
margin=0.04, # レバレッジ25倍
trade_on_close=True # 現在の終値で取引する
)
output = bt.run() # バックテスト実行
display(output._trades) # 取り引き結果
print(output) # バックテスト実行結果
bt.plot() # 実行結果のグラフ表示