Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А ведь правда, M15 кончаться раньше чем H1
Дыры в истории я проверял, к тому же рассогласование происходит на 3134 баре, дыра же не может быть на одном расстоянии от текущего бара.
от текущего какого? от H1 или от M15
смотри в цикл.
ты делаешь проход по 4000 барам H1. и ищешь бары M15 по очень странному коду.
что это???
ты надеешься что на М15 дыры заполняются сами собой.
при первой же дыре у тебя пойдет рассогласование на всех оставшихся барах.
ну и конечно - окончание М15 истории.
Вот и хотелось бы услышать мнение разработчиков, может подскажут как обходить эту ошибку.
меняй подход. ибо этот BarShift в виде shift*4 - он неверный
от текущего какого? от H1 или от M15
смотри в цикл.
ты делаешь проход по 4000 барам H1. и ищешь бары M15 по очень странному коду.
что это???
ты надеешься что на М15 дыры заполняются сами собой.
при первой же дыре у тебя пойдет рассогласование на всех оставшихся барах.
ну и конечно - окончание М15 истории.
если бы были дыры, то я увидел бы их, про окончание М15 истории я не понял вообще ни чего. И я не понимаю цель твоих постов, ты не понимаешь либо не хочешь понять проблему.
в данном случае - разработчик это Barbarian.
меняй подход. ибо этот BarShift в виде shift*4 - он неверный
Если ты не понимаешь для чего он нужен то почему пытаешься сразу оскорбить, разработчик копирующих функций Метаквоты. А shift*4 это количество баров М15 которые присутствуют в каждом часе. Кстати если бы это вычисление было не верно, то рассогласование шло бы с первых баров, а оно начинается через несколько тысяч баров, что говорит о сдвиге - нарушении структуры тайм-серии.
Кстати если тему переименовал ты, а я уже в этом уверен, то сделал ты это совершенно зря. Об этой плавающей ошибке уже несколько лет назад на другом форуме было обсуждение, но вскользь, люди не стали разбираться дальше, видимо столкнулись с подобными тебе, и просто обошли проблему по другому. Видимо и мне придется это сделать.
А shift*4 это количество баров М15 которые присутствуют в каждом часе.
твоя ошибка именно в этом предположении.
говорит о сдвиге - нарушении структуры тайм-серии.
это говорит лишь о следствии ошибочного допущения выше.
видимо столкнулись с подобными тебе, и просто обошли проблему по другому. Видимо и мне придется это сделать.
они столкнулись как и ты со своей бездоказательной базой. обвиняя других в баге своего кода.
а идти по любому придется по другому, ибо в таком виде код не будет работать как от него требуется.
PSтебя оскорбить ваапще не хочу. просто кодеру не надо обвинять других в непонятых ему багах.
твоя ошибка именно в этом предположении.
это говорит лишь о следствии ошибочного допущения выше.
они столкнулись как и ты со своей бездоказательной базой. обвиняя других в баге своего кода.
а идти по любому придется по другому, ибо в таком виде код не будет работать как от него требуется.
Кстати если бы этот код не работал
то ошибка выявилась бы значительно раньше, а не на баре свыше 3000, я скорее поверю в дыры в истории, чем в неправильную логику этого фрагмента.
дыры в истории, чем в неправильную логику этого фрагмента.ну так дыры в истории и есть причиной последствий бага.
код абсолютизирует допущение, что дыр нет.
что происходит в коде
1. new_shift ты задаешь равным НОМЕР_БАРА_H1 * 4 - это первое допущение, что нужный тебе М15 бар будет отстоять на ровно в 4 раза большем индексе, чем H1
2. ts[new_shift][TIME_INDEX] - тут ты это допущение используешь. берешь время М15 бара, по полученному индексу.
Но индекс у тебя изначально НЕВЕРНЫЙ. так как в истории М15 - дыра оказалась на надцатом баре.
Ты вышел из ситуации циклом подгонки и это скрыло реальные индексы дыр - for(int i=new_shift; i<new_shift+4
этот цикл спасает допущение, пытаясь найти нужное время бара среди 4 соседних.
но по логике - искать ты не должен вообще. а должен сразу брать нужный бар shift*4. Ибо допустил, что индекс М15 должен быть 100% на *4 месте от H1. зачем же его подгонять циклом i<new_shift+4 ??
в дальнейшем не учитываешь накапливающуюся ошибку для последующих правильных смещений новых shift.
в результате уже через 4 дыры на М15 начинается сплошное расхождение.
и всё. баг в коде становится очевиден.
я только что загрузил историю, создал таймфреймы - на моем тесте расхождения начинаются только на последнем баре конца истории М15,