# 基于ByQuant的均线策略:
import byquant as by
#by.info()
data1 = by.data.quote(symbol='AG.SHFEf', freq='1d',limit=400,cachetime=3600).dropna() #symbol 可替换为其他标的代码,格式:(代码+'.'+交易所)
#print(data.tail())
data2 = by.data.quote(symbol='AU.SHFEf', freq='1d', limit=400,cachetime=3600).dropna() # symbol 可替换为其他标的代码,格式:(代码+'.'+交易所)
print(data2.tail())
class SMAStrategy(by.Strategy):
params = (
('sma_period', 20), # 移动均线周期
)
def __init__(self):
self.sma = by.ta.sma(self.data, period=self.p.sma_period)
def next(self):
#self.log(f"short_ma:{self.short_ma[0]}")
if self.data.close[0] > self.sma[0] and self.data.close[-1] < self.sma[-1]:
# 执行买入操作
self.buy()
elif self.data.close[0] < self.sma[0] and self.data.close[-1] > self.sma[-1]:
# 执行卖出操作
self.sell()
#by.Backtest(data[-200:],strategy=SMAStrategy,out='q',warn=True).byrun()
params = dict(cash = 1000000,commission=0.0003,)
#datasets = [{"data": data,"symbol": symbol, "freq": freq}]
datasets = [{"data": data1,"symbol": 'AG', "freq": '1d',"tag":''},{"data": data2,"symbol": 'AU', "freq": '1d',"tag":'index'}]
#datasets = [{"data": data,"symbol": 'symbola', "freq": '1d',"tag":''}]
by.Backtest(datasets,strategy=SMAStrategy,out='a',**params).byrun()
图片1
|