开启左侧

基于ByQuant的均线策略

发表于:2026-4-3 08:32:11 83
# 基于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

图片1
收藏
送赞
分享

发表回复

话题