问答交流

数据和行情问题请教,

由bq7b8vwg创建,最终由small_q 被浏览 12 用户

写一个关于万科A 000002.SZA的回测数据,同样后复权价,在和别的平台数据差别很大,请问是什么原因呢?

别的平台 [20, 110] 策略最终收益: 22.42 交易对,都是12组 24次交易

本平台代码如下:

用20日和110日均线回测 000002.SZA的双均线策略回报率,在我们平台是收益在643%,而别的平台收益是 2240%。 请大佬看一下另一个数据是正确的,谢谢

from bigdatasource.api import DataSource
from biglearning.api import M
import numpy as np

# 读取数据  默认会返回全部证券代码数据, 通过指定参数 instruments 可以读取到指定的证券代码数据
# df = DataSource("bar1d_index_CN_STOCK_A").read(instrument='000002.SZA', start_date="2020-06-01", end_date="2020-06-30")

#读取基金数据
instruments=['000002.SZA']
df = DataSource("bar1d_index_CN_STOCK_A").read(instrument='000002.SZA', start_date="2007-01-04", end_date="2008-01-04")
history_ds = DataSource.write_df(df)
#设置开始日期,结束日期
start_date = '2007-01-04'
end_date = '2019-06-30'

# 策略比较参考标准,以沪深300为例
benchmark = '000300.SHA'

capital_base = 1000000

# 2. 策略主体函数
# 初始化虚拟账户状态,只在第一个交易日运行
def initialize(context):
    #记录策略运行天数
    context.index = 0
    #短均线参数
    context.short_period = 20
    #长均线参数
    context.long_period = 110

# 策略交易逻辑,每个交易日运行一次
def handle_data(context, data):
    today = data.current_dt.strftime('%Y-%m-%d')
    #更新策略运行天数
    context.index += 1
    if context.index <= context.long_period:
        return
    
    for instr in instruments:
        # 将标的转化为equity格式
        sid = instr
        # 短周期均线值
        short_mavg = data.history(sid, 'close', context.short_period, '1d').mean()
        # 长周期均线值
        long_mavg = data.history(sid, 'close', context.long_period, '1d').mean()
        # 账户持仓
        cur_pos = context.portfolio.positions[sid].amount

        # 策略逻辑部分
        # 空仓状态下,短周期均线上穿(大于)长周期均线形成金叉,买入股票,且该股票可以交易
        # 持仓状态下,短周期均线下穿(小于)长周期均线形成死叉,卖出股票,且该股票可以交易
        if short_mavg > long_mavg and cur_pos == 0:
            context.order_target_percent(sid, 1)
        elif short_mavg < long_mavg and cur_pos > 0:
            context.order_target_percent(sid, 0)



# 3. 启动回测
# 策略回测接口: https://bigquant.com/docs/module_trade.html
backtest_result = M.hftrade.v2(
    instruments=['000002.SZA'],
    start_date='2007-01-04',
    end_date='2019-04-30',
    handle_data=handle_data,
    initialize=initialize,
    volume_limit=0.025,
    order_price_field_buy='open',
    order_price_field_sell='close',
    capital_base=1000000,
    frequency='daily',
    price_type='真实价格',
    product_type='股票',
    plot_charts=True,
    backtest_only=False,
    benchmark='000300.HIX'
)
print(df)

标签

20日均线双均线策略回报率
评论
  • 解答:你好,不同平台的数据是可能不同的哈,因为数据供应的厂家在数据处理的时候用的方式不一样,其次我们平台的回测引擎和别的平台也是有差异的
  • 因为是真实价格回测,股票有除权除息时,真实价格会跳空,建议算均线指标时使用后复权价格计算均值得到交易信号(回测还是真实价格模式,此时下单也是用当天真实的价格来交易的)
{link}