-Входите..
-Доктор... меня все игнорируют!
-Следующий!
ап, типа...
iTime(NULL,timeframe,shift)
так как фунция Time() предназначена для текущего ТФ
или запоминать время, используя другую переменную.
Вообще-то мне не время, а индекс нужен...
Можно, конечно, делать iBarShift( NULL, __, Time[i] ) - iBarShift( NULL, __, Time[0] ), но как-то это извращённо, да и не будет работать глубоко в истории (когда запрашиваемое время Time[i] ещё не появится на реальном графике данного ТФ...
А больше, наверное, и нет средств, раз iBarShift глючит...
А разработчики, говорят, даже багфиксы забросили. Ляпотааа...
Вот лог трёх последовательных шагов в визуальном тестировании индюка:
2010.09.18 08:34:00 my2 EURUSD,M5: Time[1]=2010.07.30 02:05 iBarShift(,0,)=1 iBarShift(,M1,)=50763 iBarShift(,M1,,true)=50763 iBars(,M1)=65222
2010.09.18 08:33:46 my2 EURUSD,M5: Time[1]=2010.07.30 02:00 iBarShift(,0,)=1 iBarShift(,M1,)=50768 iBarShift(,M1,,true)=50768 iBars(,M1)=65222
2010.09.18 08:33:34 my2 EURUSD,M5: Time[1]=2010.07.30 01:55 iBarShift(,0,)=1 iBarShift(,M1,)=50773 iBarShift(,M1,,true)=50773 iBars(,M1)=65222
Короче, оно точно считает смещение на реальном М1, вместо тестируемого :(
А если уйти глубже в историю за пределы досягаемости из реального М1, то те же самые 3 шага:
2010.09.18 08:37:20 my2 EURUSD,M5: Time[1]=2010.05.05 00:40 iBarShift(,0,)=1 iBarShift(,M1,)=65221 iBarShift(,M1,,true)=-1 iBars(,M1)=65222
2010.09.18 08:37:19 my2 EURUSD,M5: Time[1]=2010.05.05 00:35 iBarShift(,0,)=1 iBarShift(,M1,)=65221 iBarShift(,M1,,true)=-1 iBars(,M1)=65222
2010.09.18 08:37:12 my2 EURUSD,M5: Time[1]=2010.05.05 00:30 iBarShift(,0,)=1 iBarShift(,M1,)=65221 iBarShift(,M1,,true)=-1 iBars(,M1)=65222
Как спрашивается, с этим работать? :(
Вот лог трёх последовательных шагов в визуальном тестировании индюка:
2010.09.18 08:34:00 my2 EURUSD,M5: Time[1]=2010.07.30 02:05 iBarShift(,0,)=1 iBarShift(,M1,)=50763 iBarShift(,M1,,true)=50763 iBars(,M1)=65222
2010.09.18 08:33:46 my2 EURUSD,M5: Time[1]=2010.07.30 02:00 iBarShift(,0,)=1 iBarShift(,M1,)=50768 iBarShift(,M1,,true)=50768 iBars(,M1)=65222
2010.09.18 08:33:34 my2 EURUSD,M5: Time[1]=2010.07.30 01:55 iBarShift(,0,)=1 iBarShift(,M1,)=50773 iBarShift(,M1,,true)=50773 iBars(,M1)=65222
Короче, оно точно считает смещение на реальном М1, вместо тестируемого :(
А если уйти глубже в историю за пределы досягаемости из реального М1, то те же самые 3 шага:
2010.09.18 08:37:20 my2 EURUSD,M5: Time[1]=2010.05.05 00:40 iBarShift(,0,)=1 iBarShift(,M1,)=65221 iBarShift(,M1,,true)=-1 iBars(,M1)=65222
2010.09.18 08:37:19 my2 EURUSD,M5: Time[1]=2010.05.05 00:35 iBarShift(,0,)=1 iBarShift(,M1,)=65221 iBarShift(,M1,,true)=-1 iBars(,M1)=65222
2010.09.18 08:37:12 my2 EURUSD,M5: Time[1]=2010.05.05 00:30 iBarShift(,0,)=1 iBarShift(,M1,)=65221 iBarShift(,M1,,true)=-1 iBars(,M1)=65222
Как спрашивается, с этим работать? :(
Никак. Разве что поставить в настройках максимально возможное количество отображаемых баров. Но это ж сколько памяти уйдет зря.
Хотя можно отдельный терминал под это дело настроить и открывать только нужный инструмент
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Из кода, работающего на высоком ТФ в окне визуального тестирования (при визуальном тестировании пустого советника) надо вычислять индекс бара на меньшем ТФ (обычно М1), который открывается в некоторое время Time[i] : вроде бы для этого предназначена iBarShift( NULL, <меньший_тф>, Time[i] ). Но эта самая iBarShift() выдаёт какие-то космические значения, никак не сочетающиеся с действительностью и предположительно относящиеся к реальному времени на меньшем ТФ (а нужно, очевидно, на эмулируемом).
Можно ли как-то победить это баг?
Спасибо.