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