1
1

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 3 years have passed since last update.

Backtrader 別のファイルからインジケーターをimportする方法

Posted at

#カスタムインジケーターのimport
いままでは説明のため同一のスクリプト内にカスタムインジケータークラスを書きました。しかしカスタムインジケータークラスだけを別のpyファイルに書いて、ストラテジーのスクリプトとは別々に使う方が便利です。

カスタムインジケーターのファイル名を仮に customindicator.py とすると、ストラテジーの冒頭部分に

import customindicator as cind (任意のわかりやすい名前)

と書いてストラテジークラスのinitメソッド内には

self.myind1 = cind.MyStochastics1(self.data)

と書きます。

customindicator.py はストラテジーのスクリプトと同じディレクトリに置きます。Jupyternotebookを使っていてデフォルト設定のままならば C:\Users\ユーザー名\ です。

customindicator.py

import backtrader as bt


class MyStochastic1(bt.Indicator):
    
    lines = ('k', 'd', ) 
    params = (
        ('k_period', 14), 
        ('d_period', 3),  # タプルの最後にもコンマ(、)をいれる
    )
    
    
    def __init__(self):
        highest = bt.ind.Highest(self.data, period=self.p.k_period)
        lowest = bt.ind.Lowest(self.data, period=self.p.k_period)        
       
        self.lines.k = k = (self.data - lowest) / (highest - lowest)    
        self.lines.d = bt.ind.SMA(k, period=self.p.d_period)
sto2.py
%matplotlib notebook
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

import datetime  
import os.path  
import sys 
import backtrader as bt 
import customindicator as cind #

class TestStrategy(bt.Strategy):
    def __init__(self):
        
        self.myind1 = cind.MyStochastics1(self.data)   
        
        
if __name__ == '__main__':
    cerebro = bt.Cerebro()
    cerebro.addstrategy(TestStrategy)

    datapath = 'C:\\Users\\XXXX\\orcl-1995-2014.txt'

    # Create a Data Feed
    data = bt.feeds.YahooFinanceCSVData(
        dataname=datapath,        
        fromdate=datetime.datetime(2000, 1, 1),
        todate=datetime.datetime(2000, 12, 31),
        reverse=False)

    cerebro.adddata(data)
    cerebro.run(stdstats=False)
    cerebro.plot(style='candle')
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?