Как вызвать скрипт из индикатора mql4

В журнале публикуется множество обзоров программ-советников и их результативности: одни более удачны, другие сразу расцениваются как убыточные, что тоже само по себе результат. Но результативность советника, при его тщательном рассмотрении, это комплексный итог:
1) применяемой торговой стратегии (алгоритм выработки сигналов открытия-закрытия);
2) применяемой техники управления капиталом (алгоритм управления размером лотов);
3) точности соответствия программы, записанной на MQL, описаниям двух первых пунктов (наличие логических ошибок) и отсутствие в ней непредусмотренных побочных эффектов.

По двум первым позициям написано много, а сейчас я хотел бы остановиться на некоторых тонких вопросах использование языка MQL, которые не нашли никакого отображения и упоминания в описаниях языка (например, в изложенной здесь: _http://docs.mql4.com/ru/ документации).

Это важно по двум причинам:
? во-первых, знание поведения конструкций языка, не отражённое в документации, предотвращает возникновение мало понятных побочных эффектов в программе;

Как создать пользовательский индикатор Старт


? во-вторых, позволяет писать более эффективный код, менее склонный к скрытым ошибкам. Для использования этих возможностей в своих советниках не требуется какой-то особенной квалификации, их нужно только назвать и знать, что такое можно использовать. А если в последующем тексте какие-то формулировки вам покажутся чуть усложнёнными… безболезненно пропускайте их, они сделаны только для полноты изложения.

Передача параметров в функцию по ссылке (по адресу)

Эта вещь прекрасно известна программистам на любом из универсальных языков программирования, например, на C, а ещё более на C++. Напишем самый простейший советник (файл t2.mq4 — здесь и далее имена тестовых примеров в прилагаемом архиве), и поместим его на график любой валютной пары:

int start() static int nTick = 0;
Inc( nTick );
Alert( “новый тик № ” + nTick );
>
//————————————–
void Inc( int n )

Результатом выполнения будет непрерывное повторение одного и того же результата: «новый тик №0»… Переданное в функцию значение n изменяется там, но это не производит никакого влияния на внешнее окружение функции (вызвавшую функцию start()) — в функцию передаётся копия переменной nTick, так обычно работает вызов функций в MQL4. Добавим один символ ( указал, что в функцию нужно передать не копию, а оригинал переменной nTick, и все изменения, проделанные над этой переменной внутри функции, будут отражаться на значении этой переменной снаружи функции. Такое поведение называют побочный эффект функции.

Выводы: Какие последствия несёт в себе этот маленький курьёз? Очень далекоидущие. Функции в MQL весьма ограничены, они могут возвращать только одно значение простейшего типа: int, string, datetime, … За счёт побочного эффекта, функция со многими параметрами может внести изменения во все из них, фактически производя возврат (после своего выполнения) более одного результата (или это можно расценивать как возврат структурированных данных). Например, такая функция:

MQL4 — пишем скрипт для создания FXT файлов

double Func( int s, datetime
int A[];
//——————————————————————
int init() ArrayResize( A, N );
Alert( “размер массива ” + ArraySize( A ) );
for( int i = 0; i < N; i++ ) A[ i ] = i + 1;
>
//——————————————————————
int start() <
static nBars = 0; // чтобы не частить, теперь на барах, а не на тиках
if( nBars != Bars ) < // чтобы не ждать, запускайте на M1
nBars = Bars;
IncArray( A );
ShowArray( A );
>
>
//——————————————————————
void IncArray( int
int n = ArraySize( Array );
for( int i = 0; i < n; i++ ) Array[ i ]++;
>
void ShowArray( int Array[] ) int n = ArraySize( Array );
string Msg = “”;
for( int i = 0; i < n; i++ ) Msg = Msg + Array[ i ];
if( i < n – 1 ) Msg = Msg + ” , “;
>
Alert( Msg );
>

Перенесите советник на график (лучше тайм-фрейма M1) и вы будете иметь удовольствие наблюдать вывод подобных сообщений:
2, 3, 4, 5, 6, 7, 8
3, 4, 5, 6, 7, 8, 9
4, 5, 6, 7, 8, 9, 10
…

Выводы: Теперь изменениям подвергается отдельно каждый элемент переданного массива.

Примечание: Любопытно, как изменится поведение программы, если массив в функцию IncArray() будет передаваться не по ссылке? Будет ли создаваться копия массива для работы с ним внутри функции (подобно предыдущему примеру для единичного значения)? Достигаем этого, переписав заголовок этой функции вот так (всего-то):

void IncArray( int Array[] ) <
…

Результат неожиданный даже для видавших виды программистов на C или C++! На этапе компиляции, не доходя до выполнения, мы получим сообщение об ошибке вида:

‘Array’ – array item cannot be assigned C:Program FilesMetaTrader – Alpariexpertst3.mq4 (22, 33)

Это значит, что контроль на L-value (доступность на присваивание) для элементов массива делается ещё компилятором! А для единичных (скалярных) параметров — это не так.

Изменение размерности массива, переданного по ссылке

Следующий трюк может повергнуть в изумление даже матёрого программиста на классических языках программирования. Сама по себе возможность в любое время изменить размер массива — это уже сама по себе значительная особенность языка MQL4:

После выполнения чего получим, как ни странно: 333, 333, 333, 333, 333, 0, 0

Получается, что массивы не переразмещаются полностью, а «дополняются» до нужной размерности — все ранее присвоенные значения элементов сохраняются! Но без такого трюкачества было бы, пожалуй, невозможно разработчикам MQL4 реализовать представление тайм-серии в MT4.

А теперь сам обещанный трюк — с изменением размерности массива внутри функции.
Для этого только перепишем одну функцию из предыдущего примера:

Результат выполнения (скопировано с журнала терминала MetaTrader 4 (https://mr-trader.com/forex-terminals/torgovyj-terminal-metatrader-4-skachat), который разворачивает результаты снизу-вверх):

Примечание: Ещё раз вернёмся к вопросу, рассмотренному выше: как вообще (копией или оригиналом) передаётся в функцию массив в MQL4? Для этого ещё раз перепишем:

void IncArray( int Array[] ) int n = ArraySize( Array );
ArrayResize( A, n + 1 );
>

И получим достаточно неожиданный результат:

2011.03.07 20:17:02 t4 EURUSD,M1: Alert: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 0 , 0 , 0
2011.03.07 20:16:01 t4 EURUSD,M1: Alert: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 0 , 0
2011.03.07 20:15:44 t4 EURUSD,M1: Alert: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 0

В итоге, можно утверждать, что массив передаётся в функцию всегда по ссылке, но если вы это не укажете явно (https://mr-trader.com/trading/mql/nedokumentirovannye-vozmozhnosti-mql4″ target=»_blank»]mr-trader.com[/mask_link]

Скрипт «Close All» и другие полезные скрипты для MetaTrader4

ForeX Technical Analysis  Analytics

Скрипт в торговом терминале MetaTrader4 – это небольшая программа, которая выполняет единоразовое действие и отключается.

Metatrader4 Scripts

В конце этой статьи вы можете скачать скрипт «Close All» и другие скрипты по управлению несколькими позициями в торговом терминале MetaTrader4.

Скрипты очень удобны для автоматизации однотипных повторяющихся действий в терминале MT4.

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

Вы можете скачать и установить следующие скрипты:

«Close All» — закрывает все открытые позиции на графике валютной пары;
«Close Losses» — закрывает все убыточные позиции на графике валютной пары;
«Close Open» — закрывает все открытые позиции, за исключением установленных отложенных ордеров на графике валютной пары;
«Close Pendings» — закрывает все открытые отложенные ордера на графике валютной пары;
«Close Profits» — закрывает все прибыльные позиции на графике валютной пары;

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

Если на скрипте щелкнуть два раза мышкой в меню Навигатор, то он применится ко всем графикам валютных пар и всем позициям в терминале МТ4.

После выполнения своей функции скрипт автоматически удалится с графика.

В терминале МТ4 скрипты расположены в окне Навигатор после индикаторов и советников.

Для того чтобы добавить новые скрипты в ваш торговый терминал MT4 необходимо скопировать файлы со скриптами и вставить их в папку Scripts в разделе MQL4. Это действие аналогично установки индикаторов в терминал, только скрипты копируются в свою папку.

Соответственно, вам необходимо не забыть перегрузить терминал или нажать кнопку «Обновить» в окне Навигатор, после копирования файлов.

Для того, чтобы скрипты исполнялись торговым терминалом, необходимо в Настройках терминала выставить разрешение на автоматическую торговлю (вкладка Советники).

Настройка скриптов в MT4

Немногие также знают, что скриптам в терминале МТ4 можно присваивать горячие клавиши. Делается это очень просто. Надо выбрать скрипт в разделе Скрипты в окне Навигатора, кликнуть правой клавишей мыши, выбрать пункт «Присвоить горячую клавишу» (см. рисунок выше) и выбрать желаемую комбинацию клавиш.

Скрипты торгового терминала MT4 способны значительно облегчить управление торговыми позициями и сделать трейдинга на форекс намного удобней.

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

Вы можете скачать абсолютно бесплатно и без регистрации эти полезные скрипты в архиве zip по ссылке — Close All Scripts Zip.

Оцените статью (9 ratings, average: 5,00 из 5)

Оставляйте комментарии. Задавайте вопросы. Подписывайтесь на новостную рассылку на главной странице сайта FXTAA.com и вы будете первыми узнавать о выходе новых материалов на нашем сайте.

Будьте благоразумными, соблюдайте риски и торгуйте в плюс.

Источник: www.fxtaa.com

Как вызвать скрипт из индикатора mql4

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

Скачать Видеокурc MQL Программирование. Как самому написать советник / индикатор / скрипт

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

Хотелось бы вам автоматизировать собственную торговую стратегию на форекс? Есть ли у вас желание прекратить ежедневные операции, растрачивая на них драгоценное время? Может, вам приходило в голову, создать индивидуальный торговый робот, который бы самостоятельно торговал и приносил финансы автоматическим путем.

Возможно, вам приходилось их заказывать у разработчиков со стороны… Можно легко скачать программу на MQL. Но осуществить заказ советника или же индикатора у программиста будет иметь цену от 100$ и, возможно, выше. Более того, вам надо будет неделю переписываться с исполнителем, для того, чтобы уточнить детали и дорабатывать скрипты.

Сделать индивидуального робота быстро и лично для себя очень хочется. Нет абсолютно желания, потом его дорабатывать. При этом хочется потратить минимум финансов и оставить систему в секрете!

Реально ли что-то подобное?

Да, это вполне реально и как именно сделать, можно узнать из подробного видеокурса под названием «MQL программирование. Как самому написать форекс советник». Если вы его исследуете, то сможете создавать всякого робота. Кроме этого, вы сможете переделывать все, что угодно и как вам удобно, исходя из личных нужд.

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

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

Преимущества данного курса перед подобными изобретениями

Простота.

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

Пошаговое руководство.

Вас «за руку» проведут, покажут все детали о создании индивидуальных роботов.

Практическая составляющая курса.

Видео дополнены специальными заданиями.

Бесплатность.

Рейтинг
( Пока оценок нет )
Загрузка ...
Заработок в интернете или как начать работать дома