文章 "神经网络在交易中的应用:用于多元时间序列预测的 LSTM 优化(终篇)" - 页 2

 
Vladimir Sanin #:

所以说,还是得把它挂到图表上,并运行带优化的测试吗?毕竟现在讨论的不是在线版本,对吧? 不清楚Study应该选择哪个日期区间,随便哪个都可以吗?我运行了带可视化的测试,看到左上角的数据在变化,但图表却纹丝不动。数据中的百分比同时以相同的速度缓慢增加,而图表本身却纹丝不动。


一切正常。本该如此。

 

我想问一下作者,Research 本来就是这样工作的吗?



 
Andrey Yankin #:

我想问一下作者,Research 本来就应该是这样运行的吗?



我不是作者,但我来回答。确实应该这样。但把它加入时间线是没有意义的。需要在测试器中通过(完全)优化agent参数来运行它。这样就会生成一个轨迹文件,随后将用于训练。

 
Andrey Yankin #:

没错。本该如此。

具体该怎么做?只在图表上进行Study吗?还是要在图表上和测试器中同时运行?在测试器中是进行优化还是单次测试?如果是优化,那么应该优化哪个参数?

 
Andrey Yankin #:

只需将Study放置在图表上即可。安装完成后,它会读取数据文件,然后开始优化。图表左上角会显示进度和结果。

在15分钟K线图上,半年内完成了3000笔交易…… 这意味着几乎每两根K线中就有一根会开仓,且全部为做空。您可以通过运行带可视化的单次回测,或在模拟账户上安装该策略来验证这一点。交易在开仓后于下一根K线时平仓。

难道不应该是这样吗?交易应该如何开仓?只做空,还是也应该做多?指标参数会对此产生影响吗?

 
关于Research中的输入参数MinProfit(默认值为10)。它会过滤掉亏损的交易时段吗?我的理解是否正确:可以将其设为负值,这样也不会造成更差的结果?
 

我遇到这样一个问题:在并行优化(多个本地代理)时,DACGLSTM.bd 文件的大小会波动:一次迭代写入约 250 MB,下一次迭代写入约 200 MB,然后又回到 250MB。 经查,在 SaveTotalBase() 函数中,文件是这样打开的:

int handle = FileOpen(FileName + ".bd",
FILE_WRITE | FILE_BIN | FILE_COMMON); // 会覆盖原有内容!

最后一个结束的代理会清除之前所有保存的内容。
为了让轨迹能够累积,建议将其替换为:

int handle = FileOpen(FileName + ".bd", FILE_READ | FILE_WRITE | FILE_BIN | FILE_COMMON);
FileSeek(handle, 0, SEEK_END); // 写入文件末尾

限制仍通过 MaxReplayBuffer 实现,因此保存时多余的部分仍会被截断。

问题:

  1. MT5中的这种“追加模式”是否存在潜在问题?

  2. 或许最好为每个代理单独维护一个.bd 文件,然后进行合并?

 
Vladimir Sanin #:

问题:

  1. MT5中的这种“append模式”是否存在潜在风险?

  2. 或许最好为每个代理分别保留一个独立的.bd 文件,然后再进行合并?

第2点也是可行的,但标准做法是将代理的数据以帧为单位发送至交易终端,并由终端将其保存到一个统一的文件中。

方案1在多个代理尝试同时写入时,随时可能“出问题”——一个代理写入成功,其余代理则会因错误而失败。

 

|
在Research中运行了1个月,每次5分钟,生成了300MB的DACGLSTM.bd文件。随后运行了Study。错误率高得吓人。还是说对于第一次运行来说这很正常?
 
还有谁懂这个神经网络?Telegram:@vigit