Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Просмотров:
36
Рейтинг:
(6)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Вам когда-нибудь приходилось копировать и вставлять некоторые графические объекты между открытыми графиками? Думаю, да. Удивительно, но в MetaTrader не предусмотрена функция "Копировать и вставить" для объектов. Единственное, что позволяет добиться более-менее похожего эффекта, - это шаблоны (tpl-файлы). Но в шаблоне хранится полное состояние графика, включая индикаторы, настройки и множество вспомогательных вещей, которые могут оказаться неактуальными и ненужными для требуемой процедуры репликации.

Поэтому я разработал этот индикатор ChartObjectsCopyPaste.mq5. Он копирует выбранные объекты в буфер обмена, откуда они могут быть вставлены на другой график (графики). Никаких ограничений.

Индикатор основан на другом индикаторе, опубликованном в книге по алготрейдингу - ObjectGroupEdit.mq5.

Перейдите по ссылке, чтобы узнать больше обо всех базовых классах(ObjectMonitor, MapArray и других), работающих за кулисами.

У этого индикатора нет буферов. Он должен быть прикреплен как минимум к двум графикам: исходному, с которого вы хотите скопировать объекты, и целевому, куда вы планируете их вставить.

Во время работы на графике индикатор отслеживает существующие графические объекты и делает пометки о том, какие из них выбраны.

Как обычно, команды "Копировать и Вставить" работают в паре:

  1. Нажатие горячих клавиш Ctrl+Q копирует все выделенные объекты в буфер обмена Windows в виде текста (его можно сохранить и просмотреть в любом текстовом редакторе, пример приведен ниже).
  2. На целевом графике нажмите Ctrl+J, чтобы вставить все объекты из буфера обмена.

Почему именно Ctrl+Q/Ctrl+J? Это всего лишь 2 незанятые комбинации клавиш, добровольно выбранные из очень немногих. Это связано с тем, что MetaTrader перехватывает и не передает многие горячие клавиши в MQL-программы. В частности, это касается стандартных Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins, которые в данном контексте не работают.

Поскольку исходный код доступен, вы можете изменить горячие клавиши на другие комбинации.

Поскольку индикатор использует системные библиотеки DLL для доступа к буферу обмена Windows, необходимо разрешить импорт DLL в диалоге свойств на вкладке " Зависимости ".

В связи с тем, что кодовая база не разрешает импорт DLL, код, связанный с буфером обмена, обернут в условную директиву препроцессора #ifdef DLL_LINK, поэтому, пожалуйста, откомментируйте строку

#define DLL_LINK

перед компиляцией. В противном случае вы увидите, как заглушки функций буфера обмена будут показывать вам оповещения в ответ на нажатие горячих клавиш, но никаких реальных действий выполняться не будет!

Входными данными являются:
  • MakeAllSelectable - флаг, делающий все объекты выбираемыми (обычно false для объектов, созданных программно);
  • LogDetails - флаг для вывода всех свойств переданных объектов в журнал;
Индикатор не проверяет соответствие вставленных объектов реальному графику цели, например, символу, ценовому диапазону, количеству подокон и т.д. - вы должны сделать это самостоятельно.

Вот пример текста из буфера обмена с 2 объектами:

OBJ_VLINE       H1 Vertical Line 5578   0       0
enum ENUM_OBJECT_PROPERTY_INTEGER
0       OBJPROP_COLOR   55295
1       OBJPROP_STYLE   2
2       OBJPROP_WIDTH   1
3       OBJPROP_BACK    0
4       OBJPROP_SELECTED        1
7       OBJPROP_TYPE    0
8       OBJPROP_TIME    1726739940
10      OBJPROP_SELECTABLE      1
11      OBJPROP_CREATETIME      1726847009
12      OBJPROP_TIMEFRAMES      2097151
200     OBJPROP_LEVELS  0
207     OBJPROP_ZORDER  0
208     OBJPROP_HIDDEN  0
1032    OBJPROP_RAY     1
enum ENUM_OBJECT_PROPERTY_DOUBLE
9       OBJPROP_PRICE   1.11449
enum ENUM_OBJECT_PROPERTY_STRING
5       OBJPROP_NAME    H1 Vertical Line 5578
6       OBJPROP_TEXT    
206     OBJPROP_TOOLTIP 
OBJ_CHANNEL     H1 Equidistant Channel 40885    5       1
enum ENUM_OBJECT_PROPERTY_INTEGER
0       OBJPROP_COLOR   255
1       OBJPROP_STYLE   0
2       OBJPROP_WIDTH   1
3       OBJPROP_BACK    0
4       OBJPROP_SELECTED        1
7       OBJPROP_TYPE    5
8       OBJPROP_TIME    1726758000
8       OBJPROP_TIME.1  1726797600
8       OBJPROP_TIME.2  1726758000
10      OBJPROP_SELECTABLE      1
11      OBJPROP_CREATETIME      1726847883
12      OBJPROP_TIMEFRAMES      2097151
200     OBJPROP_LEVELS  0
207     OBJPROP_ZORDER  0
208     OBJPROP_HIDDEN  0
1003    OBJPROP_RAY_LEFT        0
1004    OBJPROP_RAY_RIGHT       0
1031    OBJPROP_FILL    0
enum ENUM_OBJECT_PROPERTY_DOUBLE
9       OBJPROP_PRICE   -28.113879003558715
9       OBJPROP_PRICE.1 -21.708185053380777
9       OBJPROP_PRICE.2 -48.04270462633452
enum ENUM_OBJECT_PROPERTY_STRING
5       OBJPROP_NAME    H1 Equidistant Channel 40885
6       OBJPROP_TEXT    
206     OBJPROP_TOOLTIP 

А вот эти объекты, вставленные на график:

2 графических объекта, вставленных на график через буфер обмена








Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/52263

ИНСТРУМЕНТЫ ДЛЯ КАЛИБРОВКИ ЗИГЗАГА ИНСТРУМЕНТЫ ДЛЯ КАЛИБРОВКИ ЗИГЗАГА

Позволяет легко визуализировать бычьи и медвежьи периоды, подтвержденные индикатором зигзаг, с помощью vlines. Вы можете управлять отображением зигзага, выбирая начало с начала графика или с определенного количества баров, а также отображением меток, показывающих цену пика или впадины, направление прошедшего периода и его амплитуду в пунктах. Разумеется, это работает как в главном окне, так и в подокнах. ВНИМАНИЕ!!! Это ценное пособие для понимания и калибровки индикаторов и разработки стратегий, но оно не предназначено для прямого использования. Переведено с помощью DeepL.com (бесплатная версия).

Индекс доллара США Индекс доллара США

Сервис для MetaTrader 5, создающий синтетический пользовательский символ "USDX.synthetic", отражающий индекс доллара США (US Dollar Index, DXY) в реальном времени.

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.