Обычно для работы с другими таймфреймами в индикаторе нужна синхронизация по времени. Посмотри любой мультитаймфреймный индикатор.
Не найдешь, то могу свои подкинуть.
При визульном тестирование обращение к другому таймфрейму - это обращение к существующим историческим данным. Поэтому ты и получаешь на нулевом баре текущее время.
Обычно для работы с другими таймфреймами в индикаторе нужна синхронизация по времени. Посмотри любой мультитаймфреймный индикатор.
Не найдешь, то могу свои подкинуть.
При визульном тестирование обращение к другому таймфрейму - это обращение к существующим историческим данным. Поэтому ты и получаешь на нулевом баре текущее время.
Спасибо, Виктор! Об особенности не знал.
.
Индикатор с результатом своего "открытия" приложил.
.
Код
void ArrayCopyRatesBL(double & to[][], string whom, int period) { int bars = iBars(whom,period); datetime d0 = Time[0]; int periodAlign = period*60; datetime d0Aligned = d0 - d0%periodAlign; int whereBar = iBarShift(whom, period, d0Aligned, false); // whereBar - это старт нашей истории, однако int actualBars = bars - whereBar + 1; ArrayResize(to, actualBars); ArraySetAsSeries(to, true); int j = 0; int i = whereBar; for(; i < bars; i++, j++) { to[j][0] = iTime(whom, period, i); to[j][1] = iOpen(whom, period, i); to[j][2] = iLow(whom, period, i); to[j][3] = iHigh(whom, period, i); to[j][4] = iClose(whom, period, i); to[j][5] = iVolume(whom, period, i); } // чтобы было нескучно to[j][0] = iTime(whom, period, i); to[j][1] = iOpen(whom, period, i); to[j][2] = -100; to[j][3] = -100; to[j][4] = -100; to[j][5] = 1; Alert(TimeToStr(d0) + " .. " + TimeToStr(to[0][0]) + " .. " + DoubleToStr(to[0][1], 4)); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Столкнулся с забавной проблемой :-)
Имеем: тестер, окошко на 3 января.
Бросаем индикатор на движущийся график.
.
В индикаторе: от 0 до iBars я заполняю массив arr[][6] данными iTime, iOpen, ..., iVol -
единственная тонкость- это то, что с графика М15 я беру данные с таймфрейма H4.
Почему-то в массиве в индексе 0 хранится сегодняшняя дата :-).
Это я так пытался обойти то, что ArrayCopyRates() точно так же копирует не данные,
соответствующие моменту тестирования, а данные инструмента на сегодняшний день.
.
Подскажите, пожалуйста, как-нибудь кроме перехода на МТ5 ;-)
можно сделать, чтобы дата была правильная?
.
Код прилагаю.
.
.