test 发表于 2026-4-3 08:32:11

基于ByQuant的均线策略

# 基于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}")
      if self.data.close > self.sma and self.data.close[-1] < self.sma[-1]:
            # 执行买入操作
            self.buy()
      elif self.data.close < self.sma 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]
查看完整版本: 基于ByQuant的均线策略