返回
繁体
首页

修仙时代我靠卖丹入财门

视觉:
关灯
护眼
字体:

第36章 降龙十八掌求教Python回测码(2 / 5)
并提供一小段示例数据(比如沪深300指数2019-2021年的日线数据),发给你。你可以按照注释,修改其中的策略部分(比如买卖条件),然后运行看结果。但这需要你在自己的电脑上安装Python环境和必要的库(如pandas, numpy, matplotlib)。我可以提供详细的安装和运行步骤。

    贝悟得: 无论选择哪条路,回测本身都有很多需要注意的陷阱,我简单列举几点:

    1. 幸存者偏差:回测时使用的是“存活至今”的股票数据。那些已经退市的股票不在其中,这会导致回测结果过于乐观。所以,回测最好基于指数(如沪深300),或者使用包含已退市股票的全市场数据(较难获取)。

    2. 未来函数:确保你的策略在每一时刻,只使用该时刻及之前的信息。比如,你不能用今天的收盘价作为昨天买入的信号。这在手动回测时容易犯错,在代码中要特别小心。

    3. 过拟合:不要对着历史数据不断调整参数,直到曲线完美。那样得到的策略在未来很可能失效。回测的目的是检验一个逻辑,而不是制造一个完美拟合历史的“神策”。

    4. 交易成本:一定要考虑佣金和印花税,对高频策略影响巨大。

    5. 滑点与流动性:对于小盘股,你的买卖可能无法以预设价格成交,需要设置滑点(假设成交价比信号价差一点)。

    6. 初始资金与再投资:明确是固定资金还是允许盈利再投资。

    贝悟得: 我建议你先从路径一开始,在聚宽上尝试回测你的MACD策略,感受一下。如果有兴趣深入,我们再走路径三,我提供代码和指导。这个过程可能会打破你对技术分析的一些美好想象,但也会让你更清楚它的边界在哪里,从而更有效地使用它,或者思考如何将其纳入一个更完整的体系(比如,作为辅助判断工具,而非唯一依据)。

    降龙十八掌: 这么多门道……我头有点大。不过,你说得对,我得先看看。聚宽是吧?我现在就去注册看看。那个……路径三,你能先把代码和步骤发我吗?我一起看。我电脑里好像装过Python,以前想学爬虫抓数据,没学会就放弃了。这次我想试试。

    贝悟得: 可以。我整理一下。回测代码本身不长,关键是理解每一步在做什么。我会把代码、数据文件(CSV格式)、以及详细的步骤说明(包括如何安装库、如何运行)打包成一个压缩文件发给你。预计明天晚上可以给你。在这之前,你可以先摸索一下聚宽。

    降龙十八掌: 好,谢谢!贝兄,说实话,我以前觉得你这人挺装的,搞一堆理论。但这段时间看下来,你至少是认真的,而且愿意分享。我虽然还不完全认同你那套“乌龟流”,但我觉得,用数据验证自己的想法,这个方向没错。不管回测结果怎么样,我都认。

    贝悟得: 能这么想就很好。投资是一场无限游戏,我们的对手不是彼此,而是市场的无常和自身的弱点。用数据武装自己,减少无知,这是最有力的武器之一。明天晚上联系。

    结束私聊,我开始整理代码。我将之前用于回测MACD、RSI等策略的脚本找出来,这是一段相对简单的Python代码,使用pandas进行数据处理,用matplotlib绘图。我仔细添加了注释,解释了每个步骤的目的,以及如何修改策略逻辑。

    策略部分,我保留了MACD金叉死叉的示例,但将核心信号生成部分用明显的注释标出,方便他替换成自己的逻辑。例如:

    # ========== 策略逻辑:这部分需要你根据你的方法修改 ==========

    # 示例:MACD金叉买入,死叉卖出

    data['Signal'] = 0 # 1为买入,-1为卖出,0为持有

    # 计算MACD(这里使用talib库,你需要安装,或者用其他方法计算)

    # 假设已经计算了 macd, macd_signal

    # 金叉:MACD上穿信号线

    data.loc[macd > macd_signal, 'Signal'] = 1

    # 死叉:MACD下穿信号线

    data.loc[macd < macd_signal, 'Signal'] = -1

    # 注意:这里只是简单示例,实际策略需要考虑持仓状态、避免连续交易等

    # ========== 策略逻辑结束 ==========

    我将沪深300指数2019-2023年的日线数据(开盘、最高、最低、收盘、成交量)整理成一个CSV文件。然后,我写了一个详细的README.txt,内容包括:

    1. 所需Python库及安装命令(pip install pandas numpy m