Могли бы вы рассказать о случае, когда участник форума оказался полезным в вашей работе, и можете ли вы описать это подробно? - страница 11
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
p.s. единственное, мне бы хотелось получить аргументированное пояснение -- почему Артём использует в mql5 -- индексацию буферных массивов как mql4 -- но думаю, что получу ответ в стиле "мне так удобно" -- хотя, Артём говорит, что делал пояснения на этот счёт -- если делал, то полезно бы привести ссылку на его такое пояснение.
я отвечаю так, как я понял твой вопрос -- так понимаю, я твой вопрос не понял?
и потом -- для меня эта тема себя исчерпала -- слишком много времени мной потрачено на информационно пустое для меня обсуждение.
я не использую схему Артёма -- как по мне, его схема устаревшая -- я использую схему с индексацией буферных массивов как mql5 (от истории к текущему бару) -- я даже в индикаторах mql4 использую индексацию как в mql5.
Ну так ведь сам решил поучаствовать. Единственно в чём я с тобой согласен, так это не надо никому ничего навязывать. Если ты считаешь оправданным поиск бара на котором оборвалась связь, так и считай его. На мой взгляд это совсем никчёмное занятие. Прибавилось баров больше чем 1, пересчитали весь индикатор и все дела.
А если связь оборвалась на середине бара и close не действительно, объём не соответствует… Его ведь надо пересчитать… А в prev_calculated этот бар уже считался, когда он был последним, текущим.
А вот кстати… Представь ситуацию, что бары прибавились не только в конце истории. Не только самые правые, а есть ещё и в середине. Да, если работать на компе IBM 386 то конечно……………
p.s. единственное, мне бы хотелось получить аргументированное пояснение -- почему Артём использует в mql5 -- индексацию буферных массивов как mql4 -- но думаю, что получу ответ в стиле "мне так удобно" -- хотя, Артём говорит, что делал пояснения на этот счёт -- если делал, то полезно бы привести ссылку на его такое пояснение.
Просто не хочет вникать в другие варианты, не хватает времени. И это обсуждение новичкам даст гораздо больше чем все примеры в CodeBase. Так-что твоё время потрачено не зря.
А вот кстати… Представь ситуацию, что бары прибавились не только в конце истории. Не только самые правые, а есть ещё и в середине. Да, если работать на компе IBM 386 то конечно……………
этот момент тестировал -- при расширении истории влево (доливка) -- сам движок МТ сбрасывает prev_calculated в ноль -- т.е. если в индикаторе схема движения по барам корректная -- то она корректно отработает такую ситуацию.
этот момент тестировал -- при расширении истории влево (доливка) -- сам движок МТ сбрасывает prev_calculated в ноль -- т.е. если в индикаторе схема движения по барам корректная -- то она корректно отработает такую ситуацию.
И это не зависит от направления индексации принятой программистом. Так-что никаких проблем.
Просто не хочет вникать в другие варианты, не хватает времени. И это обсуждение новичкам даст гораздо больше чем все примеры в CodeBase. Так-что твоё время потрачено не зря.
если не вникать в используемые базовые схемы -- то со временем количество превратится в такое количество -- которое гарантированно обесценит всё ранее написанное.
если не вникать -- то количество никогда не превратится в качество.
"зачем заморачиваться", "зачем вникать, итак работает" -- это когда количество превращается только в бестолковое количество.
И это не зависит от направления индексации принятой программистом. Так-что никаких проблем.
да, от направления индексации это не зависит -- зависит от корректной отработки prev_calculated.
направление индексации влияет только на алгоритм анализа баров.
потом исправил своё пояснение -- пояснил, что ситуацию D твой алгоритм вообще не отрабатывает.
Итак. Вот утверждения:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Могли бы вы рассказать о случае, когда участник форума оказался полезным в вашей работе, и можете ли вы описать это подробно?
Andrey F. Zelinsky, 2024.10.05 13:53
эта схема требует доработки -- я бы эту схему в реальности не использовал -- проблему схемы выделил желтым -- ну, а вопрос про отнимание 1 подчеркнул.
рассмотрим четыре примера.
пусть есть 10 баров -- 9 8 7 6 5 4 3 2 1 0
ситуация А -- начало расчёта
rates_total =10
prev_calculated =0
limit =10 -- и надо отнять 1, чтобы не был выход за пределы массива в цикле for(int i=limit; i>=0; i--) -- идёт перерасчёт всей истории от бара 9 до 0
ситуация В -- текущий бар
rates_total =10
prev_calculated =10
limit =0 -- идёт перерасчёт нового бара
ситуация С -- новый бар -- бары: 10 9 8 7 6 5 4 3 2 [1 0]
rates_total =11
prev_calculated =10 -- остановились на баре 1
limit =1 -- идёт перерасчёт только что закрытого бара 1 и нового бара 0
ситуация D -- отсутствовала связь бары: 10 9 8 7 [6 5 4 3 2 1 0]
rates_total =11
prev_calculated =5 -- остановились на баре 6
limit =11-5 =6 -- отнимается 1 по if(limit>1) -- идёт перерасчёт с бара 5, "закрытый" бар 6 не перерасчитывается, а должен был, чтобы отработать его закрытие на манер ситуации С
Вот индикатор:
Вот тест:
Результаты теста индикатора в журнале:
Как видим, после обрыва связи prev_calculated сбрасывается в ноль. Поэтому самый быстрый способ - пересчитать всю историю, чем запоминать прошлый prev_calculated, определять именно обрыв связи (ведь бары могут быть пропущены из-за редких тиков), восстанавливать текущее (нулевое после восстановления связи) значение prev_calculated из ранее запомненного и высчитывать количество пропущенных баров.
Алгоритм работает эффективно.
Как видим, после обрыва связи prev_calculated сбрасывается в ноль. Поэтому самый быстрый способ - пересчитать всю историю, чем запоминать прошлый prev_calculated, определять именно обрыв связи (ведь бары могут быть пропущены из-за редких тиков), восстанавливать текущее (нулевое после восстановления связи) значение prev_calculated из ранее запомненного и высчитывать количество пропущенных баров.
Алгоритм работает эффективно.
твой тест не полный -- ты пишешь "запоминать прошлый prev_calculated, определять именно обрыв связи" -- такую отработку не позволит сделать сам движок терминала.
prev_calculated сбрасывает в ноль движок терминала -- при отклонении rates_total в больше или меньше хотя больше чем на 1 бар от предыдущего -- движок терминала prev_calculated сбрасывает в ноль.
усложнил тест и добавил времязатратный расчёт -- чтобы выйти за пределы нескольких баров М1.
поведение движка терминала следующее -- он не перескакивает и не доливает бары -- он отрабатывает бар за баром без пропусков.
-- на картинке -- видно, что текущее время :48 -- а отрабатывает движок последовательно бар за баром и пока только :44 бар
т.е. движок терминала не отрабатывает актуальный текущий бар
вывод: корректней делать проверку не на if(limit>1) -- а на if(prev_calculate==0)
-- т.к. алгоритм должен делать естественную отработку состояний -- а не искривлять отработку состояний -- движок сам упростит те состояния, которые ему надо упростить
на картинке -- видно
Ладно. Такое пороговое состояние в стиле "индикатор работает, но один бар считает за пять минут и что же при этом делает движок терминала.., а если ещё и отвёрткой ковырнуть..." обсуждать уже не интересно. Кто-то говорил ещё о морганиях для клиентов.
Знаю, сейчас начнёшь о "чистоте экспериментов". Продолжай без меня. Ты никогда не признаёшь ничего за собой. Я, к сожалению, об этом забыл.