3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonでFXチャートを表示してみる バックテスト編

Last updated at Posted at 2022-02-12

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() # 実行結果のグラフ表示

名称未設定1.jpg

名称未設定2.jpg

3
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?