Здравствуйте! Как бы организовать в тестере стратегий оптимизацию (или тестирование) на промежутке времени, определенном не датами, а количеством последних баров? Попытка установки в советнике ограничителя времени работы, который определяется заданным количеством баров и основывается на TimeCurrent(), ничего не дала.
Хотя:
datetime TimeCurrent(
)
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.
Замечание: при тестировании последнее известное время сервера моделируется
Получается, что время, на котором работает оптимизатор, задается только в окне тестера фразой "Использовать дату:". Может кто знает какую-нибудь хитрость?
你的意思是设置一天的交易时间吗?
如果是这样
//beginexternstring Торгуемый_диапазон ="В часах";externint начало=8;externint окончание=20;//B startif(Hour()>= начало&&Hour()< окончание)//если час больше или = 8, а так же если час меньше 20, торгуем{//условия}
Я хотел бы оптимизировать параметры советника на коротких таймфреймах на малом промежутке времени поближе к текущему времени. Тестер же стратегий позволяет установить дату на которой начинается и на которой заканчивается процесс оптимизации. Когда же ТФ равен 15 минутам (например), то в сутках (а это минимум который позволяет установить тестер) будет 96 баров. А это по моему много. Хотелось бы для этого ТФ пооптимизировать на последних 2-х часах т.е. на 8-ми например барах.
Возвращает текущий час (0,1,2,..23) последнего известного серверного времени на момент старта программы (в процессе выполнения программы это значение не меняется).
Замечание: при тестировании последнее известное время сервера моделируется.
Тестер поддерживает ТФ М1, не привязывайтесь к барам, привязывайтесь ко времени, возможно это тоже нужно.
Возвращает текущий час (0,1,2,..23) последнего известного серверного времени на момент старта программы (в процессе выполнения программы это значение не меняется).
Замечание: при тестировании последнее известное время сервера моделируется.
Тестер поддерживает ТФ М1, не привязывайтесь к барам, привязывайтесь ко времени, возможно это тоже нужно.
externint History=100;//История в барах, на которой работает советник
StartDateTime=TimeCurrent()- History*Period()*60;//...=datetime - int*int*int (допустим 1265996665 - 100 * 15 * 60 это не есть интересующее время)Alert("TimeCurrent() "+TimeCurrent()+" < StartDateTime "+ StartDateTime);//...проверим соотношение datetime if(TimeCurrent()< StartDateTime)// Время старта не наступило...{Alert("Время старта не наступило. Эксперт не работает.",": ", Symb,", ",Period());return;// Выход из start()}
datetime - дата и время, беззнаковое целое число, содержащее количество секунд, прошедших с 0 часов 1 января 1970 года.
и
Данные типов color и datetime представляются в виде целых чисел. Целые типы вместе с типами с плавающей точкой называются арифметическими (числовыми) типами.
А если нет, то как выйти из этого положения.
Хотя, спасибо за подсказку на счет формата чисел. Есть направление поиска. Если всеже есть готовое решение буду благодарен
Здравствуйте! Как бы организовать в тестере стратегий оптимизацию (или тестирование) на промежутке времени, определенном не датами, а количеством последних баров? Попытка установки в советнике ограничителя времени работы, который определяется заданным количеством баров и основывается на TimeCurrent(), ничего не дала.
Хотя:
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.
Замечание: при тестировании последнее известное время сервера моделируется
Получается, что время, на котором работает оптимизатор, задается только в окне тестера фразой "Использовать дату:". Может кто знает какую-нибудь хитрость?
你的意思是设置一天的交易时间吗?
如果是这样
Вы имеете ввиду задавать время торгов внутри дня?
Если так то
我想在接近当前时间的一小段时间内,在短的时间框架上优化EA的参数。另一方面,策略测试器允许你设置优化过程开始和结束的日期。当TF是15分钟(例如),那么在一天中(这是允许测试器设置的最小值)将有96条。而且我认为这是一个很大的问题。我想让这个TF在过去2个小时内得到优化,比如说在8个柱子上。
我已经在EA中插入了这样一个片段。
Extern int History=100; //以条为单位的历史,专家顾问在其中工作。StartDateTime=TimeCurrent()-History*Period()*60。
如果(TimeCurrent()<StartDateTime) // 开始时间还没有到来
{
Alert("开始时间还没有到来。EA没有工作。",": ",Symb,",",Period())。
return; // 退出start()
}
我预计在StartDateTime之前,策略测试器中的EA将不会工作。但是没有!
Я хотел бы оптимизировать параметры советника на коротких таймфреймах на малом промежутке времени поближе к текущему времени. Тестер же стратегий позволяет установить дату на которой начинается и на которой заканчивается процесс оптимизации. Когда же ТФ равен 15 минутам (например), то в сутках (а это минимум который позволяет установить тестер) будет 96 баров. А это по моему много. Хотелось бы для этого ТФ пооптимизировать на последних 2-х часах т.е. на 8-ми например барах.
注意:测试时,模拟的是最后一个已知的服务器时间。
测试仪支持M1 TF,不要把它和酒吧绑在一起,把它和时间绑在一起,也许你也需要这样。
Замечание: при тестировании последнее известное время сервера моделируется.
Тестер поддерживает ТФ М1, не привязывайтесь к барам, привязывайтесь ко времени, возможно это тоже нужно.
这句话:在测试时,模拟最后已知的服务器时间是存在的,在TimeCurrent( )中,然而它并不起作用。你的变体很好,但我们必须检查它是否有效?其次,当改变TF时,有必要改变一段代码或必须认识到它在哪个TF中工作,以充分感知数字 "开始 "和 "结束"。第三,我认为向后设置巴罗号要方便得多--没有必要手动计算 "开始"。在MQL中,我们处理的是酒吧最后一点:这个代码的缺点是什么?(除了它在策略测试器中不起作用。而这就是我的问题)
Замечание: при тестировании последнее известное время сервера моделируется.
Тестер поддерживает ТФ М1, не привязывайтесь к барам, привязывайтесь ко времени, возможно это тоже нужно.
有点像。
datetime是日期和时间,是一个无符号整数,包含从1970年1月1日0时起经过的秒数。
и
颜色和 日期时间 类型的数据 被表示为整数。整数类型与浮点类型一起被称为算术(数字)类型。
如果没有,如何摆脱它。
不过,谢谢你对数字格式的提示。有一个搜索的方向。如果仍有现成的解决方案,将不胜感激。
实际上,在测试器中使用Time[0]而不是TimeCurrent() 更好,在我看来,以前TimeCurrent()在测试器中是有效的...
而现在测试器中的TimeCurrent()(或不在测试器中)很可能会输出最后一次报价的时间......
在这种情况下,它将工作
Extern int History=100; // 以条为单位的历史,专家顾问在此基础上工作
StartDateTime=Time[History];
if(Time[0] < StartDateTime) // 开始时间未到
{
Alert("Start time has not come.EA不工作。",": ",Symb,",",Period());
return; // Exit start()
}
Вроде как:
datetime - дата и время, беззнаковое целое число, содержащее количество секунд, прошедших с 0 часов 1 января 1970 года.
и
Данные типов color и datetime представляются в виде целых чисел. Целые типы вместе с типами с плавающей точкой называются арифметическими (числовыми) типами.
А если нет, то как выйти из этого положения.
Хотя, спасибо за подсказку на счет формата чисел. Есть направление поиска. Если всеже есть готовое решение буду благодарен
那么,在之前的评论中,错误是通过警报显示的。
帮助中说:"注意:在测试时,最后已知的服务器时间是模拟的。"但如果不是模拟的,所有的问题都要交给帮助编辑。
你检查了,你发现了错误...
只有你知道解决方案,因为我们不知道逻辑的进一步方向。
我不明白为什么有这么多的文字
StartDateTime=TimeCurrent()-History*Period()*60。
当一切都可以做得更容易的时候?
Готовое решение знаете только Вы, так как дальнейшее направление логики нам не известно.
我完全同意你在前一个答案中的解决方案:这是一个数据格式不兼容的问题!对现成的解决方案的要求归结为解决格式转换的问题。但显然MQL4没有这样的选项。例如,今天是一年中的第43天,即从年初开始的日线时间框架中的第43条。假设我想在60条上优化我的专家顾问。这意味着测试者应该从上一年的第365-(60-43)=348天(条)开始工作。也就是说,我们应该采取TimeDayOfYear(TimeCurrent())的方式。(它是一个int!)并与348进行比较。很明显,我们也必须考虑到今年(去年)的价值。总而言之,我认为我已经得到了它。我们只是要实施它。在小的TF上,当一个人必须测试大量的条形图,(例如,5分钟)将超过前一个小时,或者可能是前一天,这将是更加困难的。
你的整个问题都在问题陈述中,要让别人明白......说实话,我不明白你需要从什么时间开始测试......
如果你需要从60条开始,就从60条开始。
int startTime = iTime(NULL,PERIOD_D1, N); // N - 日线时间框架上从当前时刻开始的条数。