注意:我尝试了许多不同的策略,其中大多数表现非常糟糕或不一致。废弃的策略位于archived/文件夹中以供参考(我有时会将其中的片段剪切并粘贴到新策略中)。
8 n! o/ }. A& x5 u7 N- d m我目前专注于围绕以下几种方法之一的策略:
8 Q& i/ i" U6 y
' ?7 `) A6 s1 C& z& A1 y5 F- 创建预期行为的模型并将其与实际行为进行比较。如果模型预测价格较高(高于一定幅度),则买入;如果模型预测价格较低,则卖出。有一些变体使用离散小波变换 (DWT)、快速傅立叶变换 (FFT) 和卡尔曼滤波器。DWT 变体似乎表现最好(并且速度最快)。
7 Y$ S* |* T: w6 B1 z9 _ - 使用主成分分析 (PCA) 来减少数据框列的维度,然后使用它来训练分类器,然后使用分类器来预测买卖。PCA 分析非常酷,因为您只需添加指标,然后让 PCA 缩减找出其中哪些指标实际上很重要。请注意,这与freqAI
, L$ e/ V2 y! I# j N: S7 V4 X( r的方法非常相似,但我在知道这一点之前就开始了它,所以继续下去(因为我发现它很有趣)。 所有 PCA 逻辑都包含在名为 PCA 的基类中。有几种变体(以 PCA_ 为前缀)尝试不同的方法来识别用于训练分类器的买入/卖出信号。
- V. _, w }6 \, f; C8 | - 使用神经网络创建返回买入/卖出预测的三元分类器。 U3 Z- m% G, i m8 {! }
逻辑与PCA类非常相似,基类是NNTC(神经网络三元分类器)。内部结构稍微复杂一些,因为神经网络代码使用“张量”而不是数据帧。这些必须经过长时间的培训,否则就没有足够的购买/销售。模型保存在 models/ 目录中,如果存在则将使用。+ G5 H5 L) @: r' e1 ~
- 神经网络预测模型 (NNPredict_*.py)
/ d+ F% ^* ^# J, l( I7 U/ U" n, R与 NNBC 类似,但预测实际价格,而不是买入/卖出建议。与 NNBC 相同的问题7 ~3 r9 J. p& f8 H
- 异常检测 (Anomaly.py)
; N) N4 x- q% ^6 r$ u ?: f使用神经网络的主要问题是相对于样本数量(通常约为 1%)而言,没有太多的买入/卖出建议。这种方法通过对历史数据进行训练来使用各种异常检测算法,这将主要对正常情况(不买入或卖出)进行建模。然后我们根据实际数据运行它,任何被识别为“异常”的东西都应该是买入或卖出。
" {) d- X5 v6 _6 |) o( v% r. p我还将其与各种压缩技术(例如 PCA)相结合,以使异常检测算法更加高效。3 l/ M: Q3 L' i) G9 X; b- i
对于使用神经网络的方法(通常在名称中带有“NN”),我已开始保存并重新加载模型,这些模型位于交换文件夹的models/子目录中。这些是通过 长时间运行回测而创建的,然后在任何其他模式(hyperopt、plot、dryrun 等)中加载和重用
- R' f3 r" `, D# r# u所有这些策略都使用 Solipsis 策略(由 werkrew 编写)中的自定义卖出/止损方法。这在性能上产生了巨大的差异,但缺点是每种策略都需要大量的超级选择才能获得不错的性能。另外,我怀疑自定义止损代码过度拟合,因为它对性能有如此巨大的影响,并且因为它在空运行中似乎不以相同的方式工作。
" e- A. |4 y9 D/ y3 X" r9 a我目前正在尝试找到一种更简单的自定义止损方法,可以更好地转移到实际环境中(查看 Anomaly.py)- ?1 N- Z" C R( P- C3 d$ ~
免责声明. R" V" K! Z+ y3 ?8 u6 v* w% o* P
. ]$ l8 o5 @" {4 J& _, L这些策略仅用于教育目的
9 U* p3 a8 V% \: w& E不要拿您害怕损失的钱去冒险。使用该软件的风险由您自行承担。作者和所有附属机构对您的交易结果不承担任何责任。
4 W; h2 B6 e& Z1 ]+ x始终首先使用回溯测试来测试策略,然后在试运行模式下运行交易机器人(实时数据但模拟交易)。下面提供了有关如何执行此操作的一些说明。 永远* s3 g( p% N8 {% A: U O7 i: O* ]
不要在没有经过试运行的情况下进行实时交易 - 策略在回溯测试中取得出色的结果,但在实时情况下表现却非常糟糕,这种情况并不罕见。造成这种情况的主要原因是回测模拟无法重现真实环境的行为。例如,实际交易需要相对较长的时间,并且价格在此期间可能会大幅波动。此外,交易量、点差、波动性等市场状况无法从交易所提供的历史数据中重现% k) S/ f% l+ ^/ D2 C" N- }9 u
在了解资金如何运作以及您应该预期的利润/损失之前,请勿投入资金。另外,不要在巨大增长时期(例如 2020 年)对策略进行回测,因为此时任何策略都会表现良好 |