数据和行情问题请教,
由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)