voidOnTick()
{
// Объявление массивов переменных для торговых сигналовstaticdatetimeNew_Bar[2];
staticbool UpSignal[2], DnSignal[2];
// Получение торговых сигналов
TradeSignalCounter(0, остальные параметры);
TradeSignalCounter(1, остальные параметры);
// Совершение торговых операций
TradePerformer(0, остальные параметры);
TradePerformer(1, остальные параметры);
}
bool isNewBar(int Number,string Symbol_,ENUM_TIMEFRAMES Timeframe,datetime &New_Bar[])
{
// Текущее времяdatetime lastbar_time = (ENUM_SERIES_INFO_INTEGER)SeriesInfoInteger(Symbol_,Timeframe,SERIES_LASTBAR_DATE);
// Если это первый вызов функцииif(New_Bar[Number] == 0)
{
// Установим время и выйдем
New_Bar[Number] = lastbar_time;
return(false);
}
// Если время отличаетсяif(New_Bar[Number] != lastbar_time)
{
// Запомним время и вернем true
New_Bar[Number] = lastbar_time;
return(true);
}
// Дошли до этого места - значит бар не новый, вернем falsereturn(false);
}
纠正昵称为 "专家"的人的错误? 这应该放在幽默主题中。
至于你的帖子涉及到10分制的扯皮?=)
起初我以为是安德烈在问这样的问题,但后来我想起他的绰号是TheXpert,他对应的是这个名字。
既然你如此接近,那么请做好准备,你将会被加倍地需要。
最好改一下,现在发3个帖子还来得及,这个论坛上有足够的专家。
请告知如何在所提出的方案中正确实现多币种EA中的新条检查。
我已经添加了一个静态数组,用于存储每个符号的新条形图的开盘时间。
更改了函数isNewBar(string Symbol_, ENUM_TIMEFRAMES Timeframe); 现在它与数组New_Bar[]一起工作。
在参数不变的情况下,不同的工具的结果仍然不同。你能告诉我我错在哪里了吗?起初我以为是安德烈在问这样的问题,但后来我想起他的绰号是TheXpert,他对应的是这个名字。
既然你离得这么近,就要做好准备,你的需求会加倍。
最好改一下,3个帖子还不算太晚,论坛上一个专家就够了。
一开始我以为安德鲁是在问这样的问题(在上下文中理解为愚蠢)问,但后来我想起他的绰号是TheXpert,他与之相匹配(哎呀,隐藏的侮辱TheXpert)=)。
P.S. 坐下来想一个新的绰号。
结果将是不同的,因为OnTick()函数在专家顾问工作的图表上,当符号出现一个新的tick时,就会触发。不同符号的刻度线不会同时出现。这导致了最终结果的分歧。如果您将您的EA设置为在流动性最强的货币上工作,并拥有当天最高的点数(eurusd),则不必担心这个问题。
结果不同的原因在我看来是很清楚的。这已经在几个主题中讨论过很多次了。在我的情况下,不被蒸煮是不可能的)。有一个问题需要解决,以便获得正确的测试结果。尼古拉斯-科西津提出的方案目前对我来说是最容易理解的,而且相当合适。只是没有办法解决上面提出的问题。
康斯坦丁-格鲁兹德夫在他的文章中提出了一个有趣的方法,即用 "间谍 "和 "特工"。))但他的 "代理 "exSpy控制面板MCM 似乎对我不起作用。
有没有人在康斯坦丁-格鲁兹德夫的 "代理人 "帮助下尝试解决上述问题?
有没有人尝试用Konstantin Gruzdev的 "代理 "来解决上述问题?
我不认为这种技术在测试器中会起作用。
// 按计时器工作。有什么不喜欢的呢?
我认为这项技术在测试器中不会起作用。
康斯坦丁本人在文章的讨论线中这样评论。
OnChartEvent() 在测试器中还不能工作。开发商承诺会做到这一点。我测试了(如果可以称为测试的话)直接从测试者的专家顾问中调用 "间谍 "的方法,取代了通过全局变量传输事件的做法--它是有效的。
这就是尝试的方法。
我脑子里还有一些变体,但它们对我来说似乎相当复杂。在任何情况下,我都必须解决这个问题。我只是厌倦了把结果搞错。我开始学习MQL5,完全是因为可以测试多货币交易系统。在此之前,我是将测试结果上传到Excel,并在那里进行计算。但我需要在策略测试器中直接看到结果。
弗拉基米尔,你是如何解决这个问题的?
// 按计时器工作。有什么不喜欢的呢?
啊,已经回答了))。是的,一些论坛上的 "鲨鱼 "也已经建议了这个选项,但我还没有看到它如何能够被实施。我现在会试着集中精力,最终实现这个必要的功能。如果你有现成的解决方案,我将对你深表感谢,如果你不介意的话,至少有一个简单的例子))。
// 在一个计时器上工作。有什么不喜欢的呢?
我试着在一个定时器中测试它。我发现这一切都很复杂,但在这里,事实证明,我只需要把OnTick() 函数的代码翻译成OnTimer()。其结果是相同的。为了准确起见,你将不得不设置定时器,例如每10秒一次。诚然,测试需要更多的时间;这是唯一可能让人一看就不爽的事情。
这取决于定时器的周期。你 可以做10天(60*60*24*10),会比较快。:))
也有一些微妙之处。例如,你不需要在周末打勾。;)
但测试的时间要长得多
如果 "滴答 "只是为了捕捉一个新的柱子,那么只需为柱子出现的时间设置一个计时器(H1为00分00秒),每隔1秒滴答一次,持续几分钟,直到柱子出现在所有必要的TF上。它将更加准确和经济。
但是,带有自定义事件 的解决方案当然要优雅得多。