Backtrader 맞춤형 지시기 제작 방법
18082 단어 BacktraderPythonFX백 테스트Finance
표시기 생성
· bt.indicator 클래스를 계승한 클래스 만들기
· 그릴 라인 객체 설정
· 이동평균선 설정 기간 등 매개 변수
• 필요한 경우 드로잉 디스플레이 설정 추가
기술 공식
이런 절차에 따라 제작하다.
예를 들어 캐릭터를 만들어서 그 내용을 살펴보자.
sto1.py
import backtrader as bt
class MyStochastic1(bt.Indicator): #bt.Indicatorを継承
lines = ('k', 'd', ) # プロットに表示するlinesオブジェクト
params = (
('k_period', 14), # パラメーターをタプルのタプルで指定する
('d_period', 3), # タプルの最後にもコンマ(、)をいれる
)
plotinfo = dict(plot =True,
subplot=True,
plotname='',
)
def __init__(self):
highest = bt.indicators.Highest(self.datas[0], period=self.params.k_period)
lowest = bt.indicators.Lowest(self.datas[0], period=self.params.k_period)
self.lines.k = k = (self.datas[0] - lowest) / (highest - lowest)
self.lines.d = bt.ind.SimpleMovingAverage(k, period=self.params.d_period)
def next(self):
pass
이것은 지시기 종류의 전체 그림입니다.파업 캐릭터를 계산하려면 14일의 고가와 저가가 필요하다.이 값과 최종 값을 조합하여 변화량을 계산한 후 3일 동안 간단하게 이동해서 평균치를 평평하게 한다.
클래스 선언 class MyStochastic1(bt.Indicator):
먼저 백트레이더의 인디케이터 클래스를 계승하는 My Stochastic 1 클래스를 선언합니다.
Linkes 객체 설정 lines=('k','d')
배역에는 K와 D의 두 줄이 있다.따라서 드로잉에 표시할 두 개의 라인 개체가 설정됩니다.
이 리너스 대상은 MQL4가 말한'인덱스 버퍼'같은 것으로 수치와 시간축이 결합된 매우 좋은 배열이다.Cerebro는 이 Linkes 객체를 차트에 그립니다.
Lines 객체의 색인 및 슬라이스
MQL4에서 [0]로 최신 bar를 표시합니다.최신 Bar부터 세면 1, 2, 3... 옛 Bar가 되면서 숫자도 커진다.
백trader도 최신 Bar Linus 객체를 [0]로 표시합니다.이것은 MQL4와 같다.그러나 0 기준으로 낡아진 바에 따라 -1, -2, -3... 등의 마이너스 부호가 붙는다.
이와 관련된 Lines 객체는 Python 원래 슬라이싱 작업을 수행할 수 없습니다.
슬라이드를 사용하려면 get () 방법을 사용하십시오.myslice = self.lines.my_sma.get(ago=0, size=1)
[0] 이외에 [-1]개만 정렬myslice = self.lines.my_sma.get(ago=0, size=10)
[0]를 제외하고 [1]부터 [1]까지 총 10개의 배열myslice = self.lines.my_sma.get(ago=-1, size=5)
[1]을 제외하고 [-2]에서 [-6]까지의 배열
※ 넥스트 방법에서만 리너스 대상에게 [] 운영자를 사용할 수 있습니다.넥스트 방법에 관해서 나는 훗날 다시 총결하고 싶다.
매개변수 설정(params) params = (
('k_period', 14),
('d_period', 3),
#마지막에 쉼표도)
파업자는 14일 이내에 산정하고, 결과는 3일 이내에 단순 이동 평균치로 매끄러워진다.(k period, d period) 이 인자는 설정하는 데 사용됩니다.모듈의 모듈이나 dict () 를 통해 지정합니다.(참조1)
self.params.k_period처럼'self.params.이름'의 문법으로 표시한다.원조라면 마지막 쉼표를 놓는 것을 잊지 마세요.
드로잉 설정(plotinfo) plotinfo =
dict(plot =True,
subplot=True,
plotname='',
)
그리는 동안 설정을 수정할 수 있습니다.
plot: 디스플레이 On Off 그리기
subplot: 하위 창 보이기 토글
plotname: 바닥글 표시 이름(빈 칸에 클래스 이름 표시)
다른 설정 항목도 있습니다.
Init 메서드에 방정식 기술하기
공식 생성 1 계산에 사용되는 삽입식 표시기 호출
highest = bt.indicators.Highest(self.datas[0],period=self.params.k_period)
lowest = bt.indicators.Lowest(self.datas[0],period=self.params.k_period)
init 방법에서 파업 행위의 계산을 기술하다.
우선 14일간의 고가와 저가를 계산한다.다행히도 백트랙터는 특정 기간의 고가와 저가를 계산할 수 있는 지표가 있다.
삽입식 표시기는 bt. indicators입니다.○○○()로 불러낼 수 있다.(마지막으로 s 주의!)여기서 Highst와 Lowest k를 호출합니다.period 중 가장 높은 값과 가장 낮은 값을 검색하고 있습니다.결과를 Linus 객체 high est 및 lowest에 넣습니다.
방정식이 작성된 두 라인 객체에 값을 입력합니다.
self.lines.k = k = (self.datas[0] - lowest) / (highest - lowest)
self.lines.d = bt.ind.SimpleMovingAverage(k,period=self.params.d_period)
그리는 Lines 객체는 "self.lines. 이름"으로 표시됩니다.k는self.lines.k
d는self.lines.d
이다.결과 Lines 객체를 계산에 사용할 수도 있습니다.여기에 다음 줄의 계산 표시를 간소화하기 위해 간단한 이동 평균 표시기 대신'k'를 사용한다.
데이터 시드
self.datas[0]
식 중의self.데이터 s[0]는 "첫 번째 CSV 데이터"를 나타냅니다.특별히 지정하지 않으면 종가를 사용한다.여러 개의 데이터를 전달할 수 있기 때문에 예를 들어 두 개의 CSV 데이터(예를 들어 매일과 주)에 전달할 때 작은 시간대는 반드시 큰 시간대를 지정해야 한다.즉 데이터s[0]는 반드시 일일 데이터, 데이터[1]를 매주 데이터로 해야 한다.이번에는 일족 데이터만 제공한다.
같은 시장의 다양한 시간대 데이터로 분석할 수 있을 뿐만 아니라 금(Gold)과 환율의 연동성 등 다양한 시장도 분석할 수 있다.3개 이상의 시장 데이터와 서로 다른 시간대 데이터로 분석할 수 있다.참조 2
생략 표시
---
본격
생략하다
lines
self.lines.aaa
self.l.aaa
params
self.params.aaa
self.p.aaa
datas
self.datas[0].close
self.data.close 또는self.data
indicators
bt.indicators.aaa
bt.ind.aaa
Alias
SimpleMovingAverage
SMA
backtrader는 표현을 생략할 수 있습니다.편리하지만 습관이 되기 전에는 혼란스러울 수 있다.
그리고 실제로 이번 plot info는 모두 생략할 수 있습니다.plot,subplot,plotname을 생략할 때 기본 설정을 사용합니다.
next 방법
이번에는 사용하지 않았지만 각 Bar에 대해 조건 판단이나 처리를 하고 싶을 때 넥스트 방법에 내용을 기술한다.
※ init와 넥스트의 차이 등도 추후 취합된다.
완료 정책 클래스에서 호출
표시기는 어떻게 표시합니까?
모든 설정이 끝났습니다.
정책 클래스의 init 방법에서 이 표시기 클래스를 실례화하면, Cerebro는 그래프에 그려집니다.실례 명칭은 스스로 사용할 수 있다.self.myind1 = MyStochastic1(self.data)
(주석을 곳곳에 추가하고 표시를 최대한 생략한다.)
sto12.py%matplotlib notebook
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import datetime
import os.path
import sys
import backtrader as bt
class MyStochastic1(bt.Indicator):
lines = ('k', 'd', ) # プロットに表示するlinesオブジェクト
params = (
('k_period', 14), # パラメーターをタプルのタプルで指定する
('d_period', 3), # タプルの最後にもコンマ(、)をいれる
)
#省略
#plotinfo = dict()
def __init__(self):
# 正確にはself.datas[0]と書くが省略可能
# self.params.k_periodを省略してself.p.k_period
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)
class TestStrategy(bt.Strategy):
def __init__(self):
#インスタンス名myind1の部分は任意の名前でいい
self.myind1 = MyStochastic1(self.data)
if __name__ == '__main__':
cerebro = bt.Cerebro()
cerebro.addstrategy(TestStrategy)
datapath = 'C:\\Users\\aaaa\\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')
역할 분배를 순조롭게 보여 주었다.
* ※ CSV 데이터의 입수와 준비에 관해서는 이 기사에 썼습니다.*https://qiita.com/xxssxxx/items/e915b8afe51facc47a55
Cerebro가 시작될 때까지 대략적인 절차
Cerebro란 무엇입니까?
백트레이더의 중심 기능입니다.여러 가지 설정을 한 후에 이 Cerebro를 시작하면 자동 매매, 분석, 최적화, 결과의 줄거리가 자동으로 진행된다.방금 스크립트의 Cerebro 시작 전 절차를 복습합니다.
lines=('k','d')
배역에는 K와 D의 두 줄이 있다.따라서 드로잉에 표시할 두 개의 라인 개체가 설정됩니다.이 리너스 대상은 MQL4가 말한'인덱스 버퍼'같은 것으로 수치와 시간축이 결합된 매우 좋은 배열이다.Cerebro는 이 Linkes 객체를 차트에 그립니다.
Lines 객체의 색인 및 슬라이스
MQL4에서 [0]로 최신 bar를 표시합니다.최신 Bar부터 세면 1, 2, 3... 옛 Bar가 되면서 숫자도 커진다.
백trader도 최신 Bar Linus 객체를 [0]로 표시합니다.이것은 MQL4와 같다.그러나 0 기준으로 낡아진 바에 따라 -1, -2, -3... 등의 마이너스 부호가 붙는다.
이와 관련된 Lines 객체는 Python 원래 슬라이싱 작업을 수행할 수 없습니다.
슬라이드를 사용하려면 get () 방법을 사용하십시오.
myslice = self.lines.my_sma.get(ago=0, size=1)
[0] 이외에 [-1]개만 정렬myslice = self.lines.my_sma.get(ago=0, size=10)
[0]를 제외하고 [1]부터 [1]까지 총 10개의 배열myslice = self.lines.my_sma.get(ago=-1, size=5)
[1]을 제외하고 [-2]에서 [-6]까지의 배열※ 넥스트 방법에서만 리너스 대상에게 [] 운영자를 사용할 수 있습니다.넥스트 방법에 관해서 나는 훗날 다시 총결하고 싶다.
매개변수 설정(params) params = (
('k_period', 14),
('d_period', 3),
#마지막에 쉼표도)
파업자는 14일 이내에 산정하고, 결과는 3일 이내에 단순 이동 평균치로 매끄러워진다.(k period, d period) 이 인자는 설정하는 데 사용됩니다.모듈의 모듈이나 dict () 를 통해 지정합니다.(참조1)
self.params.k_period처럼'self.params.이름'의 문법으로 표시한다.원조라면 마지막 쉼표를 놓는 것을 잊지 마세요.
드로잉 설정(plotinfo) plotinfo =
dict(plot =True,
subplot=True,
plotname='',
)
그리는 동안 설정을 수정할 수 있습니다.
plot: 디스플레이 On Off 그리기
subplot: 하위 창 보이기 토글
plotname: 바닥글 표시 이름(빈 칸에 클래스 이름 표시)
다른 설정 항목도 있습니다.
Init 메서드에 방정식 기술하기
공식 생성 1 계산에 사용되는 삽입식 표시기 호출
highest = bt.indicators.Highest(self.datas[0],period=self.params.k_period)
lowest = bt.indicators.Lowest(self.datas[0],period=self.params.k_period)
init 방법에서 파업 행위의 계산을 기술하다.
우선 14일간의 고가와 저가를 계산한다.다행히도 백트랙터는 특정 기간의 고가와 저가를 계산할 수 있는 지표가 있다.
삽입식 표시기는 bt. indicators입니다.○○○()로 불러낼 수 있다.(마지막으로 s 주의!)여기서 Highst와 Lowest k를 호출합니다.period 중 가장 높은 값과 가장 낮은 값을 검색하고 있습니다.결과를 Linus 객체 high est 및 lowest에 넣습니다.
방정식이 작성된 두 라인 객체에 값을 입력합니다.
self.lines.k = k = (self.datas[0] - lowest) / (highest - lowest)
self.lines.d = bt.ind.SimpleMovingAverage(k,period=self.params.d_period)
그리는 Lines 객체는 "self.lines. 이름"으로 표시됩니다.k는self.lines.k
d는self.lines.d
이다.결과 Lines 객체를 계산에 사용할 수도 있습니다.여기에 다음 줄의 계산 표시를 간소화하기 위해 간단한 이동 평균 표시기 대신'k'를 사용한다.
데이터 시드
self.datas[0]
식 중의self.데이터 s[0]는 "첫 번째 CSV 데이터"를 나타냅니다.특별히 지정하지 않으면 종가를 사용한다.여러 개의 데이터를 전달할 수 있기 때문에 예를 들어 두 개의 CSV 데이터(예를 들어 매일과 주)에 전달할 때 작은 시간대는 반드시 큰 시간대를 지정해야 한다.즉 데이터s[0]는 반드시 일일 데이터, 데이터[1]를 매주 데이터로 해야 한다.이번에는 일족 데이터만 제공한다.
같은 시장의 다양한 시간대 데이터로 분석할 수 있을 뿐만 아니라 금(Gold)과 환율의 연동성 등 다양한 시장도 분석할 수 있다.3개 이상의 시장 데이터와 서로 다른 시간대 데이터로 분석할 수 있다.참조 2
생략 표시
---
본격
생략하다
lines
self.lines.aaa
self.l.aaa
params
self.params.aaa
self.p.aaa
datas
self.datas[0].close
self.data.close 또는self.data
indicators
bt.indicators.aaa
bt.ind.aaa
Alias
SimpleMovingAverage
SMA
backtrader는 표현을 생략할 수 있습니다.편리하지만 습관이 되기 전에는 혼란스러울 수 있다.
그리고 실제로 이번 plot info는 모두 생략할 수 있습니다.plot,subplot,plotname을 생략할 때 기본 설정을 사용합니다.
next 방법
이번에는 사용하지 않았지만 각 Bar에 대해 조건 판단이나 처리를 하고 싶을 때 넥스트 방법에 내용을 기술한다.
※ init와 넥스트의 차이 등도 추후 취합된다.
완료 정책 클래스에서 호출
표시기는 어떻게 표시합니까?
모든 설정이 끝났습니다.
정책 클래스의 init 방법에서 이 표시기 클래스를 실례화하면, Cerebro는 그래프에 그려집니다.실례 명칭은 스스로 사용할 수 있다.self.myind1 = MyStochastic1(self.data)
(주석을 곳곳에 추가하고 표시를 최대한 생략한다.)
sto12.py%matplotlib notebook
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import datetime
import os.path
import sys
import backtrader as bt
class MyStochastic1(bt.Indicator):
lines = ('k', 'd', ) # プロットに表示するlinesオブジェクト
params = (
('k_period', 14), # パラメーターをタプルのタプルで指定する
('d_period', 3), # タプルの最後にもコンマ(、)をいれる
)
#省略
#plotinfo = dict()
def __init__(self):
# 正確にはself.datas[0]と書くが省略可能
# self.params.k_periodを省略してself.p.k_period
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)
class TestStrategy(bt.Strategy):
def __init__(self):
#インスタンス名myind1の部分は任意の名前でいい
self.myind1 = MyStochastic1(self.data)
if __name__ == '__main__':
cerebro = bt.Cerebro()
cerebro.addstrategy(TestStrategy)
datapath = 'C:\\Users\\aaaa\\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')
역할 분배를 순조롭게 보여 주었다.
* ※ CSV 데이터의 입수와 준비에 관해서는 이 기사에 썼습니다.*https://qiita.com/xxssxxx/items/e915b8afe51facc47a55
Cerebro가 시작될 때까지 대략적인 절차
Cerebro란 무엇입니까?
백트레이더의 중심 기능입니다.여러 가지 설정을 한 후에 이 Cerebro를 시작하면 자동 매매, 분석, 최적화, 결과의 줄거리가 자동으로 진행된다.방금 스크립트의 Cerebro 시작 전 절차를 복습합니다.
plotinfo =
dict(plot =True,
subplot=True,
plotname='',
)
그리는 동안 설정을 수정할 수 있습니다.plot: 디스플레이 On Off 그리기
subplot: 하위 창 보이기 토글
plotname: 바닥글 표시 이름(빈 칸에 클래스 이름 표시)
다른 설정 항목도 있습니다.
Init 메서드에 방정식 기술하기
공식 생성 1 계산에 사용되는 삽입식 표시기 호출
highest = bt.indicators.Highest(self.datas[0],period=self.params.k_period)
lowest = bt.indicators.Lowest(self.datas[0],period=self.params.k_period)
init 방법에서 파업 행위의 계산을 기술하다.
우선 14일간의 고가와 저가를 계산한다.다행히도 백트랙터는 특정 기간의 고가와 저가를 계산할 수 있는 지표가 있다.
삽입식 표시기는 bt. indicators입니다.○○○()로 불러낼 수 있다.(마지막으로 s 주의!)여기서 Highst와 Lowest k를 호출합니다.period 중 가장 높은 값과 가장 낮은 값을 검색하고 있습니다.결과를 Linus 객체 high est 및 lowest에 넣습니다.
방정식이 작성된 두 라인 객체에 값을 입력합니다.
self.lines.k = k = (self.datas[0] - lowest) / (highest - lowest)
self.lines.d = bt.ind.SimpleMovingAverage(k,period=self.params.d_period)
그리는 Lines 객체는 "self.lines. 이름"으로 표시됩니다.k는self.lines.k
d는self.lines.d
이다.결과 Lines 객체를 계산에 사용할 수도 있습니다.여기에 다음 줄의 계산 표시를 간소화하기 위해 간단한 이동 평균 표시기 대신'k'를 사용한다.
데이터 시드
self.datas[0]
식 중의self.데이터 s[0]는 "첫 번째 CSV 데이터"를 나타냅니다.특별히 지정하지 않으면 종가를 사용한다.여러 개의 데이터를 전달할 수 있기 때문에 예를 들어 두 개의 CSV 데이터(예를 들어 매일과 주)에 전달할 때 작은 시간대는 반드시 큰 시간대를 지정해야 한다.즉 데이터s[0]는 반드시 일일 데이터, 데이터[1]를 매주 데이터로 해야 한다.이번에는 일족 데이터만 제공한다.
같은 시장의 다양한 시간대 데이터로 분석할 수 있을 뿐만 아니라 금(Gold)과 환율의 연동성 등 다양한 시장도 분석할 수 있다.3개 이상의 시장 데이터와 서로 다른 시간대 데이터로 분석할 수 있다.참조 2
생략 표시
---
본격
생략하다
lines
self.lines.aaa
self.l.aaa
params
self.params.aaa
self.p.aaa
datas
self.datas[0].close
self.data.close 또는self.data
indicators
bt.indicators.aaa
bt.ind.aaa
Alias
SimpleMovingAverage
SMA
backtrader는 표현을 생략할 수 있습니다.편리하지만 습관이 되기 전에는 혼란스러울 수 있다.
그리고 실제로 이번 plot info는 모두 생략할 수 있습니다.plot,subplot,plotname을 생략할 때 기본 설정을 사용합니다.
next 방법
이번에는 사용하지 않았지만 각 Bar에 대해 조건 판단이나 처리를 하고 싶을 때 넥스트 방법에 내용을 기술한다.
※ init와 넥스트의 차이 등도 추후 취합된다.
완료 정책 클래스에서 호출
표시기는 어떻게 표시합니까?
모든 설정이 끝났습니다.
정책 클래스의 init 방법에서 이 표시기 클래스를 실례화하면, Cerebro는 그래프에 그려집니다.실례 명칭은 스스로 사용할 수 있다.self.myind1 = MyStochastic1(self.data)
(주석을 곳곳에 추가하고 표시를 최대한 생략한다.)
sto12.py%matplotlib notebook
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import datetime
import os.path
import sys
import backtrader as bt
class MyStochastic1(bt.Indicator):
lines = ('k', 'd', ) # プロットに表示するlinesオブジェクト
params = (
('k_period', 14), # パラメーターをタプルのタプルで指定する
('d_period', 3), # タプルの最後にもコンマ(、)をいれる
)
#省略
#plotinfo = dict()
def __init__(self):
# 正確にはself.datas[0]と書くが省略可能
# self.params.k_periodを省略してself.p.k_period
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)
class TestStrategy(bt.Strategy):
def __init__(self):
#インスタンス名myind1の部分は任意の名前でいい
self.myind1 = MyStochastic1(self.data)
if __name__ == '__main__':
cerebro = bt.Cerebro()
cerebro.addstrategy(TestStrategy)
datapath = 'C:\\Users\\aaaa\\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')
역할 분배를 순조롭게 보여 주었다.
* ※ CSV 데이터의 입수와 준비에 관해서는 이 기사에 썼습니다.*https://qiita.com/xxssxxx/items/e915b8afe51facc47a55
Cerebro가 시작될 때까지 대략적인 절차
Cerebro란 무엇입니까?
백트레이더의 중심 기능입니다.여러 가지 설정을 한 후에 이 Cerebro를 시작하면 자동 매매, 분석, 최적화, 결과의 줄거리가 자동으로 진행된다.방금 스크립트의 Cerebro 시작 전 절차를 복습합니다.
표시기는 어떻게 표시합니까?
모든 설정이 끝났습니다.
정책 클래스의 init 방법에서 이 표시기 클래스를 실례화하면, Cerebro는 그래프에 그려집니다.실례 명칭은 스스로 사용할 수 있다.
self.myind1 = MyStochastic1(self.data)
(주석을 곳곳에 추가하고 표시를 최대한 생략한다.)sto12.py
%matplotlib notebook
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import datetime
import os.path
import sys
import backtrader as bt
class MyStochastic1(bt.Indicator):
lines = ('k', 'd', ) # プロットに表示するlinesオブジェクト
params = (
('k_period', 14), # パラメーターをタプルのタプルで指定する
('d_period', 3), # タプルの最後にもコンマ(、)をいれる
)
#省略
#plotinfo = dict()
def __init__(self):
# 正確にはself.datas[0]と書くが省略可能
# self.params.k_periodを省略してself.p.k_period
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)
class TestStrategy(bt.Strategy):
def __init__(self):
#インスタンス名myind1の部分は任意の名前でいい
self.myind1 = MyStochastic1(self.data)
if __name__ == '__main__':
cerebro = bt.Cerebro()
cerebro.addstrategy(TestStrategy)
datapath = 'C:\\Users\\aaaa\\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')
역할 분배를 순조롭게 보여 주었다.
* ※ CSV 데이터의 입수와 준비에 관해서는 이 기사에 썼습니다.*https://qiita.com/xxssxxx/items/e915b8afe51facc47a55
Cerebro가 시작될 때까지 대략적인 절차
Cerebro란 무엇입니까?
백트레이더의 중심 기능입니다.여러 가지 설정을 한 후에 이 Cerebro를 시작하면 자동 매매, 분석, 최적화, 결과의 줄거리가 자동으로 진행된다.방금 스크립트의 Cerebro 시작 전 절차를 복습합니다.
cerebro = bt.Cerebro()
인스턴스화cerebro.adddata(data)
cerebro.addstrategy(TestStrategy)
cerebro.run()
시작cerebro.plot()
이번에는 자동매매는 없었지만'Test Strategy'에서 파업자를 사용했기 때문에 Cerebro가 도안을 그려준다.
총결산
어때요?
Backtrader에서 사용자 정의 표시기를 사용하려면 사용자 정의 표시기 클래스를 만들고 정책 클래스에서 이를 실례화할 수 있습니다.
문헌 목록
참조 1
애초에 매개 변수의 순서를 지키려고 할 때는 원조를 사용하고, 그렇지 않을 때는 사전을 사용하는데 이런 차이가 있는 것 같다.하지만 파이썬 3.7일부터는 괜찮다고 합니다.굳이 두 가지를 다르게 들자면 타자의 양이 줄어들고, 비교적 가벼운 것은 dict()이다. 그리고 개인의 취향에 따라 정한다.
1.MomentumStrategy (Dict vs Tuple of tuple)
https://www.backtrader.com/blog/2019-05-20-momentum-strategy/momentum-strategy/
참조 2
2.Gold vs SP500
https://www.backtrader.com/blog/posts/2016-12-13-gold-vs-sp500/gold-vs-sp500/
Reference
이 문제에 관하여(Backtrader 맞춤형 지시기 제작 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xxssxxx/items/c43c2c9a0d0f524ab472
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
참조 1
애초에 매개 변수의 순서를 지키려고 할 때는 원조를 사용하고, 그렇지 않을 때는 사전을 사용하는데 이런 차이가 있는 것 같다.하지만 파이썬 3.7일부터는 괜찮다고 합니다.굳이 두 가지를 다르게 들자면 타자의 양이 줄어들고, 비교적 가벼운 것은 dict()이다. 그리고 개인의 취향에 따라 정한다.
1.MomentumStrategy (Dict vs Tuple of tuple)
https://www.backtrader.com/blog/2019-05-20-momentum-strategy/momentum-strategy/
참조 2
2.Gold vs SP500
https://www.backtrader.com/blog/posts/2016-12-13-gold-vs-sp500/gold-vs-sp500/
Reference
이 문제에 관하여(Backtrader 맞춤형 지시기 제작 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xxssxxx/items/c43c2c9a0d0f524ab472텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)