错误、漏洞、问题 - 页 2587

 
elibrarius:
我认为从文件中读取条形图比较容易。

我给你写了一个解决方案--在这个条件下添加测试日期,在测试器中测试没有问题,性能至少会下降。

或者更好的是,按照管理员的建议去做--文件当然不是问题,但有一个很大的诱惑,那就是用神经元网窥探错误的地方--我通常就是这样结束的))))

 
Roman:

代码中使用了 lock_guard
但如果把它注释掉,就不会有任何变化

然而,它开始泄漏,嗯,很清楚原因,因为错误的尺寸
我放假回来后,如果不嫌麻烦,我会研究这个问题。但从逻辑上讲,错误不在mql,而是在你的代码中。顺便说一下,只是为了好玩,如果这个库用什么编码工作呢?你确定是utf-16,但如果是utf-8呢,毕竟是最常见的。
 
Igor Makanu:

我给你写了一个解决方案--在这个条件下添加测试日期,在测试器中测试没有问题,性能至少会下降。

或者更好的是,只要按照管理员的建议--文件不会有问题,但你可能会想用神经元网来偷看你不该看的地方--我通常就是这样结束的))

检查了一下--没有帮助。

而且不应该这样。毕竟,根据管理员引用的那篇文章。
对于D1及以下的时间段,从交易服务器下载的最小 历史 是一年。

而我要求的100000条M15,大约是3年。对于第一年的酒吧是复制的,也就是37000个酒吧,除此之外,他们只是不在测试器中,等待不会有任何帮助。

 
elibrarius:

检查了一下--没有工作。

是的,而且不应该。毕竟根据管理员引用的那篇文章。
从交易服务器下载D1及以下时间段的历史记录时,最小量 为一年。

而我要求的100000条M15,大约是3年。对于第一年的酒吧是复制的,也就是37000个酒吧,除此之外,他们只是不在测试器中,等待不会有任何帮助。

对我来说是有效的,把测试2000-2019放在M15上,专家代码。

input int InpBars = 100000;

void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

   if(print_once)
   {  Print("OK - ", TimeCurrent());
      print_once = false; }

}

在日志中得到了它。

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: 测试Experts\IgorM\tst.ex5从2000.01.01 00:00到2019.10.03 00:00开始,输入。

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 核心 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 核心 1 最终余额 10000.00 USD

在开始测试和训练NS的条件中添加一个日期,或者按照管理员的建议做。
 
Igor Makanu:

我得到了一切工作,把测试2000-2019放在M15上,专家代码。

在日志中得到了它。

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: 测试Experts\IgorM\tst.ex5从2000.01.01 00:00到2019.10.03 00:00开始,输入。

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 核心 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 核心 1 最终余额 10000.00 USD

在条件中加入你想开始测试的日期,并教给NS,或者按照管理员的建议做。

现在我明白你的想法了)

也就是说,你不应该对最后两个月进行测试,而是对3年进行测试,在OnTick中跳过这3年,只对最后两个月开始计算。

是的--这是最简单的解决方案。谢谢你!

 
elibrarius:

而我要求的100,000条M15大约是3年。第一年,酒吧被复制,那是37,000个酒吧,然后他们就是不在测试器中,等待不会有帮助。

在优化器模式"数学计算"下处理你的历史文件会更快。

 
elibrarius:

现在我明白你的想法了)

也就是说,测试不应该运行最后两个月,而是3年,在OnTick中跳过所有这3年,只在最后两个月开始计算。

是的--这是最简单的解决方案。谢谢你!

在条件中加入时间

input int InpBars = 100000;
input datetime InpDataTest = D'2015.01.01 00:00'; 
void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   datetime t = TimeCurrent();
   if(bars < InpBars || t < InpDataTest  ) return;

   if(print_once)
   {  Print("OK, TimeCurrent() =  ", t);
      print_once = false; }

}

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: 测试experts\IgorM\tst.ex5从2000.01.01 00:00到2019.10.03 00:00开始,输入。

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK,TimeCurrent()= 2015.01.02 09:00:00

2019.10.04 22:36:43.041 核心 1 最终余额 10000.00 USD



 
Igor Makanu:

在条件中加入时间

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: 测试experts\IgorM\tst.ex5从2000.01.01 00:00到2019.10.03 00:00开始,输入。

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK, TimeCurrent() = 2015.01.02 09:00:00

2019.10.04 22:36:43.041 核心 1 最终余额 10000.00 USD



是的,谢谢你。一切正常。

 
Aleksey Vyazmikin:

在优化器的"数学计算"模式下处理你的历史文件会更快。

这是指如果你纯粹是在NS本身,看的是结果。

我现在正在测试交易,以便将成本和价差都考虑在内。这样做的结果是,交易机器人可以在测试器中使用,并可以连接到真正的交易。

 
elibrarius:

好吧,那是如果你纯粹是在NS本身,看的是结果。

我现在正在测试交易,以便将成本和价差都考虑在内。这就是为什么我对一个现成的机器人感兴趣,我可以在测试器中查看,并连接到真实的交易。

我还是不明白--你的预测器需要更深入的计算吗?我真的需要一个--MA的日子:)我只是提前一年开始测试,在该日期之前的交易可能会被禁止...