Help

 

Использую в советнике функцию  iLow(_Symbol,Period,0) несколько раз с разными периодами, но в роловер спреды расширяются и минимум неадекватный. Как убрать из расчетов несколько баров, которые рисуются в роловер? 

Как я делал:  проверял, если время бара вписывается в промежуток времени от 00:00 до 00:15 то брал значения бара в 23:59 и копировал в новый массив значения Low. Но этот способ очень тяжелый. Есть ли более оригинальное решение ? 

 
Dmitiry Ananiev:

Использую в советнике функцию  iLow(_Symbol,Period,0) несколько раз с разными периодами, но в роловер спреды расширяются и минимум неадекватный. Как убрать из расчетов несколько баров, которые рисуются в роловер? 

Как я делал:  проверял, если время бара вписывается в промежуток времени от 00:00 до 00:15 то брал значения бара в 23:59 и копировал в новый массив значения Low. Но этот способ очень тяжелый. Есть ли более оригинальное решение ? 

Используйте CopyLow с третьей формой вызова:

   datetime         start_time,        // с какой даты 
   datetime         stop_time,         // по какую дату 

Добавлено:

то есть будет два вызова: первый массив получаете с датами до 00:00, второй массив с датами после 00:15 и затем эти два массива нужно соединить в третий.

 

В цикле while искать мин макс. Если бар правильный, учитываем его и увеличиваем счетчик, если неправильный, то пропускаем.

 
Ещё можно получать данные при помощи CopyRates - тогда можно будет пройтись по полученной структуре MqlRates и если время бара между 00:00 и 00:15, то в поле .low перезаписать заведомо БОЛЬШОЕ число или константу. В общем потом при анализе, если встречается это число или константа - не учитывать этот бар.
 
Dmitiry Ananiev:

Использую в советнике функцию  iLow(_Symbol,Period,0) несколько раз с разными периодами, но в роловер спреды расширяются и минимум неадекватный. Как убрать из расчетов несколько баров, которые рисуются в роловер? 

Как я делал:  проверял, если время бара вписывается в промежуток времени от 00:00 до 00:15 то брал значения бара в 23:59 и копировал в новый массив значения Low. Но этот способ очень тяжелый. Есть ли более оригинальное решение ? 

как вариант можно использовать такие общепринятые решения (если конечно с данной идеей они совместимы): Пройтись по всему ряду машкой с периодом 2 -3: Против выбросов часто помогает, но и минусы на лицо . Второй вариант это взять некую максимально допустимую волатильность и всё что выше - не брать в расчёты.
Причина обращения: