文章 "价格走势角度分析:用于预测金融市场的混合模型" - 页 2

小老鼠们又一次哭了、捅了、拉了,但还是坚持不懈地继续吃仙人掌!;)

以下是MT4 的江恩模板,代码已开放。

https://disk.yandex.ru/d/7YhmKzcqttnQnQ

只要正确设置 TS 所描述的所有内容,您就可以提前几个小时看到趋势或修正即将结束。此外,还可以提前计算出趋势结束的时间。

如何正确设置,每个人自己都知道。

附注- Gunn 在他的著作(模型数学)中已经说明了一切,您不会发现或发明任何新东西,2x2 永远是 4。最好还是深入研究原始资料。

Gann_Box_144_test_FULL_NULL_NEN_SQH4-----.mq4
Gann_Box_144_test_FULL_NULL_NEN_SQH4-----.mq4
  • disk.yandex.ru
Посмотреть и скачать с Яндекс Диска

金子

该形态再次证实,趋势正在减弱,值得等待反应。

未对`copy_rates_range` 返回 `None` 的情况进行防护。如果符号/时间周期/历史数据不可用,`mt5.copy_rates_range` 将返回 `None`,而 `pd.DataFrame(None)` 会引发一个毫无帮助的错误。
train_test_split 中将 shuffle 设为 True 会导致数据泄漏。每行特征的 15 个 angle_j 值中有 14 个与其相邻行共享(滚动窗口重叠严重),且数据按时间顺序排列。 打乱排序会将近乎重复的窗口分散到训练集和测试集中,因此报告的准确率/均方根误差(RMSE)会比模型在样本外实际表现好得多。
在 `prepare_features` 以及 `backtest_signals` 中(重复出现的)逻辑 `window = filtered_df.iloc[i-lookback:i]` 处理的 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 根 K 根 K+1 i-1,但目标值是从 filtered_df.iloc[i]['future_direction_24'] / future_change_pct_24 中读取的——该值描述了从第 i 根 K 线(而非 i-1)到 i+24 的走势。 因此,在整个训练和回测过程中,current_price 以及所有基于窗口生成的特征,其锚点都比实际预测对象滞后一个K线。
predict_future_movement 并不采用这种锚定方式。它使用 angular_df.tail(lookback),并将该窗口的最后一根 K 线视为实时信号的“当前价格”——但根据第 3 点所述,该模型是在“当前价格”比真实标签锚点早一根 K 线的情况下训练的。 实时预测和训练标签并非基于相同的约定进行计算。
create_angular_features 中可能出现除以零的情况:如果 time_range(最大时间 − 最小时间)为 0(例如时间戳重复或错误),scale_factor 将变为 inf/nan,并传播到每个角度中。
CatBoostClassifier.predict() 返回的维度——根据已安装的 CatBoost 版本不同,返回值可能是 (n, 1) 而不是 (n,)。该结果会被直接传入 accuracy_score/classification_report,且没有维度转换检查,因此建议根据最终安装的版本进行验证。
次要问题:figsize=(750/100, 750/200) 格式的调用会生成非整数的英寸尺寸(7.5×3.75、7.5×6.0、7.5×5.0)——这并非功能故障,只是表达图形尺寸的一种特殊方式。

附加的文件: