Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Автоматизация рисования картинок в MT4


Рекомендуемые сообщения

Все знают, что чтобы научиться работать на форексе нужно рисовать, рисовать и еще раз рисовать, Мастер постоянно об этом пишет.

Однако многие сталкиваются с тем что на рисование уходит уйма времени (пока поставишь текст, выставишь цвет и напишешь название волны), и начальный задор быстро сдувается и тутже появляется желание: а может ну её, мож без рисования как-нить получиться. Про то, чтобы в реальном времени читать посты Мастера, переваривать их, и все это зарисовывать кажется уже совсем дохлым номером. А если скажу что реально не только все это проделывать в реальном времени, но и при этом оформлять еще одну - две валютных пары сверху :) - думаю не верите. Поэтому выложил демонстрашку отрисовки одной парыDemonstration.rar, меньше 4-х минут на все основные выкрутасы :).

 

Если понравилось, тады стоит почитать и дальше. Не пугайтесь размера поста, он просто кажется страшным, а время затраченное на его изучение (пол часа от силы) и пробование скриптов окупится потом с лихвой. Короче, как говорил герой мультика: лучше день потерять, потом за 5 минут долететь :wink:

 

До такой жизни дошел когда решил - что пора рисовать, а на переключение цветов и т.д. уходит много времени - не гуд и в облом :)

 

Скрипты доводил до ума обучаясь на кафедре ТС Masterforex - Синтез бинарных закономерностей, поэтому цвета и стили фибо-сеток сделаны в соответствии с их стандартами.

 

 

 

Основные идеи.

1. Все скрипты основаны на том, что каждому таймфрейму (TF) соответствует свой цвет.

2. Скрипты работают с: TRENDLINE (Трендовая линия), FIBO (Линии Фибоначчи), TEXT (Текст).

3. Скрипты меняют свойства только для объектов, которые полностью видны на графике.

4. Основная масса скриптов изменяет свойства последнего созданного объекта, причем он должен быть виден на графике в момент запуска скриптов.

5. Настройки для всех скриптов лежат в одном файле "/include/TFColorConfig.mqh". После внесения изменений в этот файл, необходимо откомпилировать только библиотеку "/libraries/TFColor.mq4", скрипты компилировать не требуется.

 

 

Алгоритм определения последнего созданного объекта. Читать обязательно!!!!

Последний объект определяется по номеру, который находится в названии объектов. Например: "Fibo 13194", "Fibo 13222". Предполагается что максимальный номер соответствует последнему созданному объекту.

Нюанс заключается в том, что в MT4 нумерация объектов сбрасывается минимум раз в сутки где-то в 18 МСК у Fibo или если объектов слишком много (номера объектов переваливают за 65000). Например после "Fibo 13194" идет "Fibo 123" - официально в этом случае последним будет считаться "Fibo 13194".

К сожалению обойти это пока низя и других способов определения последнего созданного объекта я пока не нашел.

На данный момент решением является запуск скрипта "RenameOldObjects.mq4", который переименовывает все объекты: из "Fibo 13194" делает "Fibo _13194", т.е. чтобы цифра 13194 уже не определялась.

В реале это проявляется следующим образом: в какой-то момент скрипты перестают менять свойства новых объектов и вместо них меняют свойства какого-то предыдущего объекта. В этот момент и нужно запускать "RenameOldObjects.mq4". В среднем запускать его приходиться два раза в сутки.

 

Далее кратко опишу сами скрипты, более подробно о принципе работы и их настройках можно почитать в исходниках самих скриптов ".mq4".

 

 

Скрипты для рисования трендовых линий, фибо-сеток и названий волн.

 

Установка цвета

Скрипт "SetTFColor.mq4" выставляет цвет последнего созданного объекта в цвет текущего ТФ.

Для установки цвета заданного ТФ предназначены скрипты "ColorM1.mq4", "ColorM2.mq4", ..., "ColorMN1.mq4". Они выставляют цвет в соответствии с TF, например: "ColorM1.mq4" устанавливает цвет который соответствует TF M1.

Кроме того скрипты "SetTFColor.mq4", "ColorM1.mq4", "ColorM5.mq4", "ColorM15.mq4", "ColorH1.mq4", "ColorH4.mq4", "ColorD1.mq4" при повторном вызове выставляют цвет следующего ТФ, если эта дополнительная функция не нужна - ее можно убрать через параметр ON_SECOND_CLICK_SET_NEXT_TF (нужно выставить его в false).

 

Нанесение названий волн

Скрипт "ShowNames.mq4" предназначен для нанесения названий волн.

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

Сам процесс выглядит следующим образом: я отображаю буквы (вызываю скрипт), выделяю одну из букв + нажимаю Ctrl и не отпуска клавиши тащу букву мышкой на свое место - при этом она копируется.

После скрываю буквы - вызываю скрипт второй раз.

Буквы отображаются цветом в соответствии с текущим TF. Само собой, вновь созданным буквам можно менять цвет с помощью скриптов "SetTFColor.mq4" и т.д.

 

Добавления названия ТФ к названиям волн

Скрипт "AddTFtoNames.mq4" добавляет к названиям волн названия их ТФ. При повторном вызове убирает названия ТФ (если больше нет новых волн с названиями без ТФ).

Название ТФ определяется по цвету текста названия волны.

 

Изменение размера текста

Скрипт "SetFontSize.mq4" изменяет размер текста на 10 если он не равен 10, и на 20 если равен.

 

Форматирования линий

"SetImpuls.mq4" - делает трендовую линию тонкой, при повторном вызове делает линию толстой;

"SetCorrection.mq4" - делает трендовую линию пунктирной, при повторном вызове делает линию толстой;

 

Форматирования Fibo-сеток

Фибо-сетки добавляю следующим образом: выставляю трендовую линию по волне, выставляю ей цвет, добавляю фибо-сетку, выставляю ей цвет, выравниваю фибосетку по трендовой линии, указываю импульсная она или коррекционная, удаляю лишние уровни.

Скрипты, которые выполняют эти функции:

"SetImpuls.mq4" - делает фибо-сетку импульсной;

"SetCorrection.mq4" - делает фибо-сетку коррекционной;

"SetNormalFibo.mq4" - делает фибо-сетку обычной. Чтобы она стала сеткой по умолчанию необходимо после выполнения скрипта зайти в свойства фибо-сетки и просто сохранить (нажать кнопку "OK");

"AdjustObjects.mq4" - у ВСЕХ видимых фибо-сеток выставляет 100% и 0% по трендовым линиям того же цвета. При выставлении фибо-сетка будет выставлена по большей линии (по цене, т.е. разница между верхней и нижней ценой) которая находится справа и внутри 100% - 0% фибосетки. Фибо-сетка и линия по которой она будет выставлена, должны полностью помещаться на экране. Кроме того этот скрипт выставляет окончания трендовых линий по барам минутного графика.

"DelCanceledFiboLevels.mq4" - у ВСЕХ видимых фибо-сеток, которые выставлены по трендовым линиям (например с помощью "AdjustObjects.mq4") удаляет отработавшие фибо уровни (различает коррекционные и импульсные сетки).

 

В настройках для "..\scripts\SetImpuls.mq4", "..\scripts\SetCorrection.mq4" можно указать чтобы вместе со значением уровней выводить их цену, таймфрейм и название волны. Также можно указать чтобы уровни до 100% выводились в виде "88.2 .. 11.8".

 

Поиск названия волны для фибо-сетки осуществляется следующим образом:

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

Причем, по времени текст ищется в удвоенной ширине найденной лини. Т.е. если линия начинается в 5 часов, а заканчивается в 7 часов, то текст будет искаться в промежутке 5ч - 9ч, т.е. 5 + (7-5)*2 = 9ч

В итоге будет найден текст, который попадает в удвоенный диапазон трендовой линии цена которого ближе всех к этой линии.

 

Добавления объектов

Есть скрипты для добавления пивотов "AddPivot.mq4" и прямоугольников(важных уровней) "AddRectangle.mq4" - они просто добавляют их в середине графика внизу.

 

 

Скрипты для редактирования отображения объектов.

 

Отображение и скрытие объектов на разных TF

Т.к. цвета привязаны к своим TF, то можно скрывать объекты младших TF на старших TF, т.е. например объекты TF M15 показывать только на M1, M5, M15, H1 и не показывать на H4 и выше.

Для этого я использую скрипты "RefreshObjectsViewOneTF.mq4" (отображает объекты только этого ТF и выше) и "RefreshObjectsView.mq4" - показывает объекты начиная с TF ниже текущего.

 

Отображение Fibo-сеток

Скрипт "HideFibo.mq4" - скрывает все фибо-сетки, а при повторном вызове отображает их обратно.

Он применяется когда нужно увидеть цену за лесом фибо-сеток. :)

 

Очистка экрана

Скрипт "ClearGrafics.mq4" предназначен для запуска утром, перед началом рабочего дня для очистки графика от старых "ненужных" объектов. Он удаляет все фибо-сетки, трендовые линии и названия волн которые ниже среднесрочки, а также пивоты ("AddPivot.mq4"), метки важных уровней ("AddRectangle.mq4") и метки о сделках.

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

 

 

Остальные скрипты.

 

Сохранение уровней фибо-сеток в файл

Скрипт "SaveFiboLevels.mq4" сохраняет уровни всех фибо-сеток которые полностью видны на экране в файл

"Папка Mt4\experts\files\FiboLevels.txt".

Его я сделал для пункта "уровни поддержки/сопротивления", чтобы не вбивать все руками.

Он различает импульсные и коррекционные сетки, также выставляет TF по цвету и пытается определить название волны по которой были выставлены фибо-сетки.

 

Создание легенды по цветам

Скрипт "CreateTFColors.mq4" создает в левой стороне графика список цветов для существующих TF.

 

 

Принцип работы со скриптами.

 

Утром при первом открытии MT4 я запускаю скрипт ClearGrafics, он чистит вчерашние художества и переименовывает все объекты, оставляя только линии и названия волн среднесрочки.

По умолчанию у трендовых линий и фибо-сеток стоит цвет ТФ М1, т.к. там чаще всего приходится рисовать линии, плюс отпадает необходимость в выделении горячей клавиши под скрипт ColorM1.

Фибо-сетка по умолчанию имеет все уровни (можно выставить с помощью скрипта SetNormalFibo).

Уровни фибо-сеток сделаны таким образом, что и коррекционную и импульсную сетку всегда нужно натягивать с конца волны.

 

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

 

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

Т.е. левая рука при рисовании линий, фибо-сеток и текста должна доставать до горячих клавиш всех участвующих в этом скриптов не летая при этом по всей клавиатуре :).

Если это реализовать, то скорость рисования будет максимальной, Вас уже никто не догонит ))).

 

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

Добавил скрипт выставления цвета текущего ТФ "SetTFColor", а в скрипты основных цветов (ColorM1, ColorM5, ..) добавил функцию выставления цвета следующего ТФ при повторном вызове.

Таким образом я избавился от скриптов ColorM2, ColorM10, ColorM30 и т.д.

Кстати скрипт ColorM1 тоже не нужен т.к. по умолчанию у нас уже стоит цвет для ТФ М1, а цвет для М2 мы получаем с помощью скрипта "SetTFColor", к тому же на ТФ M5 и выше мы явно не рисуем волны М1.

Отображение и скрытие названий волн, осуществляется с помощью одного скрипта - "ShowNames.mq4".

 

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

 

Моя версия размещения горячих клавиш показана на рисунке, пока попытался их расположить по группам в ущерб удобству, время покажет, мож переделаю. Все комбинации клавиш начинаются с кнопки Alt. От Ctrl отказался, т.к. неудобно нажимать на него мизинцем - нужно руку разворачивать, вообщем отказался. Остальные скрипты располагаются на правой части клавиатуры, т.к. вызывать их приходиться не так часто, можно и попрыгать.

http://s44.radikal.ru/i104/0905/59/44ec7c939727.gif

 

В данный момент у меня установлены следующие горячие клавиши:

SetTFColor=Alt+W

ColorD1=Alt+5

ColorH1=Alt+T

ColorH4=Alt+4

ColorM1=Alt+G

ColorM15=Alt+R

ColorM5=Alt+E

ShowNames=Alt+A

AdjustObjects=Alt+S

SetCorrection=Alt+C

SetImpuls=Alt+F

AddPivot=Alt+B

AddRectangle=Alt+V

 

CreateTFColors=Alt+J

AddTFtoNames=Alt+H

ClearGrafics=Alt+U

DelCanceledFiboLevels=Alt+D

HideFibo=Alt+K

RefreshObjectsView=Alt+L

RefreshObjectsViewOneTF=Alt+P

RenameOldObjects=Alt+O

 

Когда все нарисовано - жалко терять свои труды, тем более что 100% придется перерисовывать - и не один раз.

Свои творчества можно сохранять в шаблон через контекстное меню (Шаблон->Сохранить шаблон).

Например, когда делал анализ у меня получилось несколько файлов шаблонов:

gbplfx_h4_d.tpl - на H4 движение вниз (down) с фибо-сетками

gbplfx_h4_u.tpl - на H4 движение вверх (up) с фибо-сетками

после, если нужно что-то подправить - загружаю один из них и редактирую.

Фибосетки удалять не надо, т.к. их можно будет скрыть/отобразить с помощью скрипта "HideFibo.mq4".

 

 

 

Большинство скриптов также работают в тестере vHandsTrade.

 

Установка скриптов.

Нужно скопировать содержимое архива ColorScripts_1.2.zip в папку "Программа МТ4\experts\", для Fibo (при установке по умолчанию) это будет "C:\Program Files\FIBO Group\experts".

 

 

Надеюсь, что скрипты помогут новичкам сократить время на рисование и сосредоточиться на самом анализе графиков.

 

В архивах лежат скрипты, видео демонстрашики и обучалки.

 

Вроде все. :smile:

 

ColorScripts_1.2.zip

Demonstration.rar

Obychalka.rar

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
  • Ответов 198
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Здравствуйте, Андрей,

при инсталляции ваших скриптов в соответствии с обучалкой получил следущее (на рисунке).

Не подскажете, в чем ошибка?

 

http://s46.radikal.ru/i114/0906/11/16f79fc16601.gif

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте!

Спасибо большое за скрипты. Очень удобно.

 

Подскажите, при повторном запуске скрипта RefreshObjectsView.mq4 должны ли объекты, присвоенные к таймфремам ниже текущего, снова отображаться на всех таймфреймах. У меня после повторного запуска данного скрипта объекты уже не возвращаются в исходное состояние.

Спасибо.

Ссылка на комментарий
Поделиться на другие сайты

при инсталляции ваших скриптов в соответствии с обучалкой получил следущее (на рисунке).

Не подскажете, в чем ошибка?

 

там не хватало стандартной библиотеки stdlib (по идее она включена в дистрибутив по умолчанию, по крайней мере у Fibo)

включил ее в новую версию, т.е. нужно скачать ColorScripts_1.1.zip - все должно быть нормально

 

Подскажите, при повторном запуске скрипта RefreshObjectsView.mq4 должны ли объекты, присвоенные к таймфремам ниже текущего, снова отображаться на всех таймфреймах. У меня после повторного запуска данного скрипта объекты уже не возвращаются в исходное состояние.

 

изначально я не предполагал возврат обратно, просто ни разу не требовалось :huh:

в этой версии сделал, чтобы при повторном вызове RefreshObjectsView.mq4 и RefreshObjectsViewOneTF.mq4 возвращали все обратно

 

текущая версия ColorScripts_1.1.zip

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
Добрый день!

 

В Вашем обучающем ролике по скриптам, я увидел как Вы рисуете линию волны А и она ЗАКОНЧЕННАЯ, т.е. просто отрезок из точки А в точку В. Подскажите пожалуйста как это делать!!!

 

С уважением.

 

Трендовые линии могут быть лучом и отрезком. Это задается в свойствах линии "Луч" (как на картинке).

http://s50.radikal.ru/i129/0906/6d/0ee97377282c.gif

Нужно убрать галочку "Луч" у любой трендовой линии и сохранить, тогда все новые линии будут отрезками.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Андрей, добрый день!

Скрипт практически освоил. Особенно, когда назначил горячие клавиши, рисование пошло на автопилоте. Еще раз спасибо за скрипт.

Работая с пивотами натолкнулся на такую идею как их подсветка тем ТФ к которому он принадлежит, т.е. к примеру н1- голубой, м30 - коричневый и т.д. Уже не хочется лазить по настройкам добавляемых объектов :smile: .

И второй вопрос касается нормальной фибо сетки - хочется иногда чтобы и на ней был отражены ТФ и название волны. Как сделать?

С благодарностью за твой скрипт, Сергей!

Ссылка на комментарий
Поделиться на другие сайты

Андрей, присоединяюсь к благодарностям!

 

буду потихонечку осваивать и пробовать.

 

 

 

 

 

 

правда пока так и не пойму в каких именно ситуациях на практике используются эти два скрипта:

RefreshObjectsView

RefreshObjectsViewOneTF

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за хорошие инструменты

только вот столкнулся с такой проблемой

при запуске скрипта ShowNames.mq4

расставив буквы, снова запускаю ShowNames

и все в том числе уже расставленные пропадают...

и соответствено и уровни волн не отображает...

в чем может быть причина???

помогите плизз

Ссылка на комментарий
Поделиться на другие сайты

Работая с пивотами натолкнулся на такую идею как их подсветка тем ТФ к которому он принадлежит, т.е. к примеру н1- голубой, м30 - коричневый и т.д. Уже не хочется лазить по настройкам добавляемых объектов :smile: .

И второй вопрос касается нормальной фибо сетки - хочется иногда чтобы и на ней был отражены ТФ и название волны. Как сделать?

В версию ColorScripts_1.2.zip добавил возможность устанавливать цвет для значка пивотов. Единственно теперь скрипт переименования RenameOldObjects.mq4 переименовывает все объекты OBJ_ARROW (по другому никак).

Дальше уже посмотрим будет ли это мешать или нет.

 

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

bool SHOW_FIBO_TF = true;

bool SHOW_FIBO_WAVE_NAME = true;

И после откомпилировать "/libraries/TFColor.mq4".

Далее процесс выглядит следующим образом: рисуете трендовую линию, выставляете ей цвет, добавляет над ней название волны, выставляете названию волны цвет, после добавляете фибо-сетку, выставляете ей цвет, выравниваете фибо-сетку по трендовой линии и устанавливаете коррекционная она или трендовая, в этот момент и будут установлены ТФ и название волны.

 

правда пока так и не пойму в каких именно ситуациях на практике используются эти два скрипта:

RefreshObjectsView

RefreshObjectsViewOneTF

Скрипты RefreshObjectsView и RefreshObjectsViewOneTF нужны в случае, если например на ТФ Н1 мешаются объекты с ТФ М1, М5 и т.д., т.е. на графике получается "каша", они просто их скрывают не удаляя, при повторном вызове возвращают их отображение обратно.

 

 

при запуске скрипта ShowNames.mq4

расставив буквы, снова запускаю ShowNames

и все в том числе уже расставленные пропадают...

и соответствено и уровни волн не отображает...

в чем может быть причина???

))))

Этот скрипт предназначен для отображения названий волн, которые нужно СКОПИРОВАТЬ, а не просто переместить.

Т.е. его использую следующим образом: отображаю буквы (вызываю ShowNames.mq4), выделяю одну из букв + нажимаю Ctrl и не отпуска клавиши тащу букву мышкой на свое место - при этом она копируется.

После скрываю буквы - вызываю скрипт второй раз.

Ссылка на комментарий
Поделиться на другие сайты

Скрипты RefreshObjectsView и RefreshObjectsViewOneTF нужны в случае, если например на ТФ Н1 мешаются объекты с ТФ М1, М5 и т.д., т.е. на графике получается "каша", они просто их скрывают не удаляя, при повторном вызове возвращают их отображение обратно. ( У меня все убирается кроме сеток старших ТФ ,так и должно быть? они мешают.)
Ссылка на комментарий
Поделиться на другие сайты

Не могу победить ,при компиляции выдает ошибку . Может что-то надо в библиотеке stdlib изменить? пробывал обе версии 1.1 1.2

 

5. Настройки для всех скриптов лежат в одном файле "/include/TFColorConfig.mqh". После внесения изменений в этот файл, необходимо откомпилировать только библиотеку "/libraries/TFColor.mq4", скрипты компилировать не требуется.

 

 

Компилировать TFColorConfig.mqh не надо.

 

 

Скрипты RefreshObjectsView и RefreshObjectsViewOneTF нужны в случае, если например на ТФ Н1 мешаются объекты с ТФ М1, М5 и т.д., т.е. на графике получается "каша", они просто их скрывают не удаляя, при повторном вызове возвращают их отображение обратно. ( У меня все убирается кроме сеток старших ТФ ,так и должно быть? они мешают.)

 

Да все верно, они оставляют объекты текущего ТФ и выше убирая объекты нижних ТФ. Чтобы понять что они делают, создай объекты для М1, М5, М15 и так до Н4, запусти например RefreshObjectsViewOneTF, и попробуй по переключаться между ТФ.

 

Если хочешь скрыть фибо-сетки - для этого есть скрипт HideFibo.mq4 (при повторном вызове он отображает их).

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за ответ про название волн))) совсем что-то сглупил я

Выставил трендовую линию

Назначил цвет далее название и цвет

тяну фибо сетку (причем раньше пользовался скриптом из подФАКа Fibo_creation3.1, и фибо-сетка уже имеет другой вид от первоначального) запустил скрипт SetNormalFibo зашел в настройки фибо, нажал ОК

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

выставил фибо на экран, назначил цвет...

а вот на скрипт AdjustObjects ноль эмоций

проверил у трендовых линий то же самое нет реакции на этот скрипт

на рисунке пример, может увидите мою ошибку или еще что...не знаю, снова нужна помощь мастера :smile:

http://img243.imageshack.us/img243/5369/eurusdm151207.gif

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...