Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Загружай коды из Библиотеки MQL5 через MetaTrader. Это удобно!
Andrey Khatimlianskii
52262
Andrey Khatimlianskii 2006.06.15 13:51 
Сегодня была опубликована статья Графики без "дыр" , в которой подробно описан алгоритм заполнения пропущенных баров.
На форуме было столько "криков" (и просто высказываний) в пользу таких графиков, что я просто не мог не заняться этим вопросом =)

Так что, пробуем, высказываем предложения и пожелания по доработке.

ps: обсуждать в статье не очень удобно - каждый раз грузить лишнюю сотню килобайт - зачем? ;)
Сергей
569
Сергей 2006.06.15 15:15  
komposter писал (а):
Сегодня была опубликована статья Графики без "дыр" , в которой подробно описан алгоритм заполнения пропущенных баров.
На форуме было столько "криков" (и просто высказываний) в пользу таких графиков, что я просто не мог не заняться этим вопросом =)

Так что, пробуем, высказываем предложения и пожелания по доработке.

ps: обсуждать в статье не очень удобно - каждый раз грузить лишнюю сотню килобайт - зачем? ;)

Проконсультируйте, пожалуйста, почему для "AllMinutes.mq4" Вы выбрали эксперт, а не индикатор?
(Я сам написал "близкое к этому" в виде индикатора только потому, что посчитал, что "лучше много индикаторов на чарте, чем много чартов с одним экспертом". ЗЫ. Много индикаторов/экспертов/скриптов для "моих нюансов" принципиально.)
Andrey Khatimlianskii
52262
Andrey Khatimlianskii 2006.06.15 15:27  
(Я сам написал "близкое к этому" в виде индикатора только потому, что посчитал, что "лучше много индикаторов на чарте, чем много чартов с одним экспертом". ЗЫ. Много индикаторов/экспертов/скриптов для "моих нюансов" принципиально.)


AllMinutes.mq4, работая на одном графике, обновляет несколько графиков (до 32-х).
Зачем индикатор? Жалко завести один "служебный" график? ;)

На самом деле, я просто не подумал о такой возможности )))
Rustam
59
Rustam 2006.06.15 17:59  
странно окно для редактирования поста ведет себя как-то странно, да и содержание поста после нажатия "добавить комментарий" куда-то подевалось, ну ладно попробую еще раз набрать. Думаю должно быть так: 1. на первой секунде нового бара смотрим есть котировка : а)да котировка есть - бар рисуется штатным образом, код может отдыхать до конца времени бара (старт без наличия нового тика не отработает, поэтому наверняка нужен скрипт); б) нет котировки нет - отрисовываем "пустой бар", и переходим в режим периодической проверки появления тика внутри нашего "пустого бара"; 2. если был отрисован "пустой бар" периодически смотрим не появилась ли котировка : а) появился тик - заменяем "пустой" бар на реальный и отправляем код в отпуск до конца времени текущего бара б) нету тика - продолжаем находиться в режиме ожидания. вот и процессор значительно разгрузится :)
Andrey Khatimlianskii
52262
Andrey Khatimlianskii 2006.06.15 23:58  
0-й бар не будет обновляться "штатным образом" - это офф-лайн графики.
И рисовать несуществующую цену, как по мне, тоже неправильно - пропущенный бар должен нарисоваться только тогда, когда будет понятно, что он пропущен =)
Max
225
Max 2006.06.21 07:17  
Господа! Проблема таким образом снимается только в малой части -

1. Встроенные индикаторы (и поставляемые с MT4) по прежнему будут работать некорректно, как и советники на их основе. Можно, конечно, переписать необходимые.. чем собственно, многие и занимаются :)
2. Я, например, хотел бы знать, чем обусловлен пропуск в данных - одно дело, когда не изменяется цена, и совсем другое - когда это следствие технических проблем.
Опять же - с нулевым баром. Что он пропущен можно определить, когда от последнего бара прошло времени больше, чем период чарта. Но информации о причинах такого пропуска нет.. И никто не гарантирует, что в этот момент получится выставить (закрыть) ордер по последней известной цене.
MetaQuotes
Админ
24412
Renat Fatkhullin 2006.06.21 08:04  
>> И никто не гарантирует, что в этот момент получится выставить (закрыть) ордер по последней известной цене.

Если цена не менялась, то почему "никто не гарантирует"?
Поищите на этом форуме и на http://www.metatrader4.com/ru/forum темы обсуждения пропусков баров.
Тема настолько избита, что остается только рекомендация поискать в форумах.
Andrey Khatimlianskii
52262
Andrey Khatimlianskii 2006.06.21 08:17  
1. Встроенные индикаторы (и поставляемые с MT4) по прежнему будут работать некорректно, как и советники на их основе. Можно, конечно, переписать необходимые.. чем собственно, многие и занимаются :)

Почему? И на графиках ALL* тоже?


Опять же - с нулевым баром. Что он пропущен можно определить, когда от последнего бара прошло времени больше, чем период чарта. Но информации о причинах такого пропуска нет..

Именно поэтому AllMinutes рисует пропущенные бары только тогда, когда появляется первый "нормальный" бар.
Max
225
Max 2006.06.21 10:16  
komposter писал (а):

1. Встроенные индикаторы (и поставляемые с MT4) по прежнему будут работать некорректно, как и советники на их основе. Можно, конечно, переписать необходимые.. чем собственно, многие и занимаются :)

Почему? И на графиках ALL* тоже?

Потому, что индикаторы расчитываются на определенное количество баров назад. При наличии пропусков - понятно, что те же MA могут в различные моменты времени быть расчитаны на различные периоды ВРЕМЕНИ назад. Т.е. вычисляя MA(9) - подразумевается, что MA считаем по 9 последним периодам времени. А при наличии пропусков мы получим (по факту) то MA(10), то MA(20).


Опять же - с нулевым баром. Что он пропущен можно определить, когда от последнего бара прошло времени больше, чем период чарта. Но информации о причинах такого пропуска нет..

Именно поэтому AllMinutes рисует пропущенные бары только тогда, когда появляется первый "нормальный" бар.


Вопрос с ПРИЧИНОЙ пропуска все равно открыт.
Max
225
Max 2006.06.21 10:20  
Renat:
>> И никто не гарантирует, что в этот момент получится выставить (закрыть) ордер по последней известной цене.

Если цена не менялась, то почему "никто не гарантирует"?

Потому, что возможны еще технические проблемы, кроме просто неизменности цены. Я думаю разработчикам не надо объяснять, о чем речь.


Поищите на этом форуме и на http://www.metatrader4.com/ru/forum темы обсуждения пропусков баров.
Тема настолько избита, что остается только рекомендация поискать в форумах.

Согласен, избита. А воз и ныне там.
Andrey Khatimlianskii
52262
Andrey Khatimlianskii 2006.06.21 11:00  
Потому, что индикаторы расчитываются на определенное количество баров назад. При наличии пропусков - понятно, что те же MA могут в различные моменты времени быть расчитаны на различные периоды ВРЕМЕНИ назад. Т.е. вычисляя MA(9) - подразумевается, что MA считаем по 9 последним периодам времени. А при наличии пропусков мы получим (по факту) то MA(10), то MA(20).


Почему? И на графиках ALL* тоже?


Я специально уточнил: на графиках, генерируемых экспертом AllMinutes тоже неправильно?


Вопрос с ПРИЧИНОЙ пропуска все равно открыт.


Как вариант - постоянная проверка IsConnected().
Кроме того, если баров не было из-за потери связи, при её возобновлении они должны докачаться.
Правда, такую ситуацию я не тестировал, и не знаю, как поведёт себя "заполнитель дыр".
/ /12345678...12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий