Обсуждение статьи "Синхронизация нескольких графиков по одному инструменту на разных таймфреймах"
При 8ми открытых графиках одно иструмента с разными ТФ индикатор заметно тормозит и подвешивает МТ, например свеже-нарисованный квадрат приходит на другие чарты с 5-10 секундной задержкой. В чем может быть причина?
Спасибо!
Не могли бы Вы сделать такой для МТ4? Желательно с фильтром по объектам (клонировать только горизонтальные или трендовые...) Для мт4 есть подобный, но код закрыт, фильтр не приделать.
Для использования на МТ4 достаточно заменить расширение файла индикатора с mq5 на mq4 и перекомпилировать индикатор.
Для добавление фильтрации объектов нужно добавить параметры
sinput bool CloneHLine = true; sinput bool CloneVLine = true; sinput bool CloneTrend = true; sinput bool CloneRectangle = true;
и скорректировать OnChartEvent с добавлением функции CheckToClone
//+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- string message1=NULL; string message2=NULL; int total=0; //--- switch(id) { case CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_OBJECT_DRAG: if(!CheckToClone(sparam)) return; message1=CloneObjects.CreateMessage(l_Chart,sparam,0); message2=CloneObjects.CreateMessage(l_Chart,sparam,1); total=ArraySize(ar_Charts); for(int i=0;i<total;i++) { EventChartCustom(ar_Charts[i],(ushort)id,0,0,message1); EventChartCustom(ar_Charts[i],(ushort)id,0,0,message2); } break; //--- case CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; total=ArraySize(ar_Charts); for(int i=0;i<total;i++) EventChartCustom(ar_Charts[i],(ushort)id,0,0,sparam); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DRAG: CloneObjects.DrawObjects(l_Chart,sparam); ChartRedraw(l_Chart); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; ObjectDelete(l_Chart,sparam); ChartRedraw(l_Chart); break; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CheckToClone(string name) { bool result = false; if(l_Chart>=0 && ObjectFind(l_Chart,name)==0) { switch((ENUM_OBJECT)ObjectGetInteger(l_Chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result=CloneHLine; break; case OBJ_VLINE: result=CloneVLine; break; case OBJ_TREND: result=CloneTrend; break; case OBJ_RECTANGLE: result=CloneRectangle; break; } } return result; }
При 8ми открытых графиках одно иструмента с разными ТФ индикатор заметно тормозит и подвешивает МТ, например свеже-нарисованный квадрат приходит на другие чарты с 5-10 секундной задержкой. В чем может быть причина?
Спасибо!
Добрый день.
Дело в том, что индикаторы работают в одном потоке и большое количество любых индикаторов в терминале действительно может замедлять его работу. Тем более работа с графическими элементами довольно трудоемкая для терминала. Для использования на большом количестве графиков я бы рекомендовал переформатировать программу в советник без какой-либо потери функциональности. Но это подойдет только в том случае, если вы одновременно с анализом не используете советники. Т.к. в терминале есть ограничение не более одного советника на один график.
Для использования на МТ4 достаточно заменить расширение файла индикатора с mq5 на mq4 и перекомпилировать индикатор.
Спасибо за быстрый ответ и помощь. В mq4 не все функции поддерживает. ChartIndicatorGet, CloneAllObjects и другие. В общем 9 ошибок при компилировании. В программировании я ноль. Помогите пожалуйста.
Для использования на МТ4 достаточно заменить расширение файла индикатора с mq5 на mq4 и перекомпилировать индикатор.
Для добавление
фильтрации объектов нужно добавить параметры
Здравствуйте, Дмитрий! Помогите, пожалуйста, переделать этот индикатор в мт4, а то я не силен в программировании. Спасибо!
Для использования на МТ4 достаточно заменить расширение файла индикатора с mq5 на mq4 и перекомпилировать индикатор.
Для добавление
фильтрации объектов нужно добавить параметры
и скорректировать OnChartEvent с добавлением функции CheckToClone
Дмитрий, к сожалению такое не проходит. Для MT4 там как-то всё иначе. И очень интересно увидеть как это будет реализовано. Есть идеи, Дмитрий?
Просто обалденный индикатор, пробовал использовать.... но крме прямоугольников, - ничего больше не синхронизирует : ТЕКСТ, ЛИНИИ ФИБО и т.д. :(( Или тут код написан чтоб копировать только геометрические фигуры, а не инструменты анализа ? Подскажите пожалуйста что подправить, чтоб копировало еще Сетку Фибо.
В статье показана технология на примере копирования горизонтальных, вертикальных, трендовых линий и прямоугольников. Сама технология позволяет копировать любые объекты. Для добавления новых типов объектов нужно создать метода для шифрования объекта по аналогии с методом CCloneObjects::HLineToString и добавить вызов нового метода для соответствующего типа объектов в CCloneObjects::CreateMessage
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Синхронизация нескольких графиков по одному инструменту на разных таймфреймах:
Часто, чтобы принимать решения о совершении сделок, в процессе торговли приходится одновременно анализировать графики на нескольких таймфреймах. При этом на графиках есть объекты графического анализа. Наносить одни и те же объекты на все графики неудобно. В этой статье я предлагаю автоматизировать клонирование объектов по графикам.
Работу нашего индикатора можно разделить на два блока.
Автор: Dmitriy Gizlyk