En l'état, j'ai écrit une classe d'indicateur personnalisée dans le même script pour l'explication. Cependant, il est plus pratique d'écrire uniquement la classe d'indicateur personnalisé dans un fichier py séparé et de l'utiliser séparément du script de stratégie.
Si le nom de fichier de l'indicateur personnalisé est ** customindicator.py **, il sera au début de la stratégie.
ʻImporter l'indicateur personnalisé en tant que cind` (tout nom descriptif)
Dans la méthode init de la classe de stratégie
self.myind1 = cind.MyStochastics1(self.data)
Écrire.
Placez customindicator.py dans le même répertoire que le script de stratégie. Si vous utilisez le notebook Jupyter et que vous conservez les paramètres par défaut, il s'agit de C: \ Users \ username \
.
customindicator.py
import backtrader as bt
class MyStochastic1(bt.Indicator):
lines = ('k', 'd', )
params = (
('k_period', 14),
('d_period', 3), #Virgule à la fin du taple(、)Mettre en
)
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')
Recommended Posts