掘金社区

股票的复权问题Pinned highlighted

p8499 发表在问题反馈 2019-05-22 22:22:42

问题反馈
414
4
0

context对象的data()方法获取到的收盘价,有时是复权的有时不是。例如以下例子:

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *

def init(context):
    # 从14:10起至14:15,每隔1分钟抓取一次迪瑞医疗的股价并和前一分钟的进行比较
    subscribe(symbols="SZSE.300396", frequency='60s', count=2)

def on_bar(context,bars):
    for bar in bars:
        data=context.data(symbol=bar.symbol, frequency='60s', count=2, fields='symbol,close,eob')
        print(data)

if __name__ == '__main__':
    run(strategy_id='???',
        filename='main.py',
        mode=MODE_BACKTEST,
        token='???',
        backtest_start_time='2019-05-22 14:10:00',
        backtest_end_time='2019-05-22 14:15:00')

0_1558534311239_parameters.png
这里,既然选择前复权,我希望得到17左右的股价,但是却得到78的股价
0_1558534460258_3153dd9a-7777-4736-896b-1376187c4d60-image.png
17是前复权的数
0_1558534748113_62869a69-3854-459d-9a7c-4b5c68eceaf4-image.png
78是后复权的数
0_1558535803353_af4322ed-92f5-44ac-afab-5386ab533ae0-image.png

评论: 4
  • 您好, 可能是回测参数设置的页面不生效,可以在run()里设置,使用已有回测参数
    0_1558575297785_d58f5502-b3a5-4a74-835d-bef1b908ff8d-image.png

    2019-05-23 09:35:02
  • @技术支持1
    选择“使用已有回测参数”后,代码中直接包含参数如下,但是问题并没有解决。运行结果仍然是首行17,第二行开始都是78。

    if __name__ == '__main__':
        run(strategy_id='????',
            filename='main.py',
            mode=MODE_BACKTEST,
            token='????',
            backtest_start_time='2019-05-22 14:10:00',
            backtest_end_time='2019-05-22 14:15:00',
            backtest_adjust=ADJUST_PREV, # 为了股价连贯性,我需要使用“前复权”
            backtest_initial_cash=20000,
            backtest_commission_ratio=0.00025)
    
    2019-05-23 09:49:50
  • @p8499 嗯,这是个bug, 会在下个版本修复

    2019-05-23 14:10:08
  • 请问这个问题到底解决没有? @技术支持1

    2019-12-13 18:52:36

Looks like your connection to 掘金量化社区 - 量化交易者的策略交流学习社区 was lost, please wait while we try to reconnect.