Форекс mql4 цикл while

форекс mql4 цикл while

Создание советника для открытия серии ордеров Понедельник, 20 Июн После того, как я решил использовать валютное хеджирование в качестве основы торговой стратегии, 1-м делом я определил все необходимое для торговли.

Итак, мне понадобится: индикатор прохода цены серии форекс mql4 цикл while пар от определенного дня и времени; советник для открытия серии валютных как создать пасивнвй заработок в интернете в одном направлении; советник для закрытия серии валютных пар. В данном посте я напишу советник для открытия серии валютных пар в одном направлении.

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

Хочу отметить, что создание указанных советников и индикатора не обеспечит прибыльную и стабильную торговлю на Форекс. Это лишь помощники, которые облегчат процесс анализа форекс mql4 цикл while ситуации и операции с форекс mql4 цикл while.

Чтобы избежать задание лишних внешних параметров и ускорить работу, будут 2 разных советника.

  1. Заработок в интернете самий популярен
  2. Основы программирования MQL4.
  3. Торговие роботи форекс
  4. Изучаем язык программирования MQL4 | Forex Forum - Независимый форекс форум для трейдеров
  5. Здравствуйте, дорогие друзья.
  6. По сути, чтение программы сводится к простому переводу команд с английского языка на русский.

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

Симпатии: 27 Итак, что необходимо для того чтобы написать советник по индикатору. Я же использую это несколько шире и анализирую уже поведение валюты в целом на 6 графиках, выявляя, как она торгуется со всеми остальными основными валютами. Пусть это будет британский фунт.

Для начинающих, многие вопросы программирования после прочтения указанной записи должны проясниться. Определим необходимые внешние задаваемые переменные. Теперь открываем MetaEditor. Задаем внешние форекс mql4 цикл while Первыми форекс mql4 цикл while задаем необходимые внешние переменные.

Переменная workLimit это ограничитель. Если цена ушла от цены открытия нового бара больше указанного уровне, ордер не будет открыт. Переменная openSet в принципе небольшое дополнение. Хотя я форекс mql4 цикл while не использовал ранее доливки при торговле на Форексе, но на будущее решил предусмотреть этот параметр. Значение переменной openSet будет указана в Комментарии в открываемом ордере. С помощью этого мы сможем определить с какой серией ордеров мы сейчас работаем. Чтобы было понятно, объясню на примере: на форекс mql4 цикл while баре мы открыли 5 ордеров 1-й серии.

Через 10 минут мы решаем, что нужно сделать доливку.

как заработать на продаже постеьного через интернет james16 forexfactory

Мы вновь переносим советник на торговый график, в параметрах советника указываем номер серии 2 и на новом баре советник открывает на еще 5 ордеров. Теперь объявляем глобальные переменные советника.

как дома зарабатывать как заработать в интернете хорошие деньги

Размер массива в 14 элементов задан произвольно. В массиве pairsOpen[] будет храниться количество открытых ордеров по каждой валютной паре. Значение 2 будет означать, что сделана доливка. Массив openPrice[] содержит цены открытия текущего бара для каждой валютной пары.

Присоединяйтесь к обсуждению

Функция init Переходим к содержимому функции init. Данная функция запускается при прикреплении советника к торговому графику, изменению настроек советника, а также смене символа или периода графика. Сначала узнаем, в системе используется 5 и 3 знаков после запятой форекс mql4 цикл while 4 и 2. Главное помнить, что несмотря на то, что ордера мы собираемся открывать по нескольким валютным парам, советник присоединяется к графику одной валютной пары и именно с ней мы сейчас работаем.

Если 3 или 5 знаков после запятой, в переменную number заносим значение Это множитель.

MQL4 TUTORIAL BASICS - 26 HOW TO CODE A SIMPLE BUY TRAILING STOP

К примеру, мы указали изначально, что проскальзывание равно 2 пункта. Но с 5-ю знаками после запятой это значение должно равняться Как раз это мы и получим, помножив 2 на Теперь заполняем данными наши внешние переменные. Чтобы советник работал на Sell, переменной нужно присвоить значение 1 и перекомпилировать.

Важной переменной является magic, то есть магическое число. Из всего потока ордеров наш советник будет искать среди открытых только ордера с данным магическим числом. Хотя мы можем задать любой размер массива pairs[], в переменную totalPairs необходимо поместить количество заданных элементов.

Пройдемся в цикле по массиву pairs[]. В переменную size помещаем ранг массива pairs[]. В цикле проходимся по всем элементам массива pairs и если длина элемента больше 0, то увеличиваем форекс mql4 цикл while валютных пар в переменной totalPairs. Как только цикл доходит до пустого элемента, то с помощью оператора завершения break работа цикла завершается. Советник должен знать реальное число валютных пар в массиве, так как это значение будет использоваться в дальнейшем в циклах и позволит избежать лишних проходов.

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

Проверка ордеров также будет происходить при поступлении каждого нового тика. Вынесем проверку в отдельную функцию. Выборка ордеров происходит по типу трейдер на форексе orderType, магическому числу magic и номеру сета openSet.

Если советник работает с доливкой, то есть номер сета, к примеру 2, то его уже не интересуют ордера 1-го сета. Мне кажется, что ограничение функциональности советника позволяет избежать ошибок в его дальнейшей работе.

форекс mql4 цикл while индикаторы опционов

Глобальная переменная количества ордеров count также обнуляется в начале функции и увеличивается с каждым новым выбранным ордеров. Чтобы записать количество открытых ордеров в массив pairsOpen[] нужен номер валютной пары.

После того, как номер валютной пары в массиве pairs получен, соответствующий элемент массива pairsOpen[] становится равным номеру сета openSet. После прохождения всех ордеров в цикле советник делает последнюю проверку перед выходом из функции.

Количество форекс mql4 цикл while, подсчитанное и хранящееся в переменной count может быть меньше заданного, если, к примеру, при открытии ордеров произошла Критическая ошибка. Флаг work мы переставляем в положение false, чтобы на новом тике советник, проверив количество ордеров, открыл недостающие.

Ваши недокументированные возможности при написании советников на MQL4

Если оставить флаг работы work в положении true, советник откроет недостающие ордера только на новом баре. Теперь обратимся к функции getPairNumber …которая находит номер элемента в массиве pairs[]. В цикле функция проходится по всем элементам массива pairs[].

За возврат целого числового значения отвечает параметр int, который стоит перед объявлением функции int getPairNumber string pair. Функция start Функция start совсем небольшая. Функция проверки условий criteria Советник на каждом новом тике должен форекс mql4 цикл while новый ли бар и принять решение об открытии форекс mql4 цикл while. Функция checkOpenPrices как и все содержимое функции criteria запускается с приходом форекс mql4 цикл while тика. Проверка всех валютных пар на образование новой свечи довольно натянута: в принципе можно было проверить лишь цену открытия текущего инструмента.

Функция советники на форекс возвращает логический ответ return trueна что указывает префикс bool checkOpenPrices перед названием функции при объявлении. Если же количество открытых ордеров count меньше количества ордеров в нашем массиве pairs[] и флаг работы work установлен в false, это означает, что советник уже открыл ордера, но не полностью. Напомню, что советник работает только с текущим сетом.

Но в интернете существуют сотни форумов подобной тематике и на многих из них есть подобные ветки. Но у них есть определённые недостатки - сложно найти нужную информацию и не системность обновления. Кроме того желательно чистить ветку от всех постов, кроме автора ветки и его соавторов. На самом деле мне эта ветка видится чуть иначе, а именно: 1.

Советник определит отсутствие ордера только по номеру сета в переменной openSet, несмотря на то, что могут быть открыты ордера по другому сету. Функция открытия ордеров openOrders Условием для открытия ордера по определенной форекс mql4 цикл while паре является значение элемента массива pairsOpen[]. Если оно равно номеру сета openSet, то ордер не откроется. После открытия ордера элемент pairsOpen[i] получает значение номера сета openSet.

Переменная total, которая увеличивается с каждым новым открытым ордером, сообщит на экран количество открытых ордеров, после завершения работы цикла. Как только ордера открылись, флаг работы work получает значение false, что позволит избежать ошибок. Завершающий этап работы функции — обновить информацию советника о текущем баре.

  • Форекс mql4 цикл while, Стабильный доход в интернете
  • Forex web котировки
  • Разумеется по мере изучения языка и написания кода программ так или иначе создаются какие-то полезные функции, которые можно использовать в последствии, так вот Include файлы как раз и наполняются нашими наработками, чтобы потом в "два клика" написать какой-то специфический скрипт.
  • Как торговать опционы

Функция открытия ордера openOrder Функция bool openOrder int type, int pairNumber получает тип открываемого ордера int type и номер валютной пары int форекс mql4 цикл while в массиве pairs[]. Цикл while работает до тех пор, пока ордер не будет открыт или не сработает оператор return bool …. Главным условием для работы советника при открытии ордера является удаление цены от цены открытия бара.

  • Евгений Ждан - MQL4-программирование: торговый робот за один вечер
  • Палладий форекс
  • Обучение языку MQL4 под MetaTrader 4 - Уголок Программиста - TradeLikeaPro - Форекс форум
  • Скачать форекс индикатор kwan
  • Финансовый брокерский дом
  • MQL4 и MetaTrader 4 - Форум алго-трейдеров MQL4 - Страница

Уровень удаления задан в переменной workLimit. Важным моментом является перевод лимита к текущим условиям, а именно помножение на значение глобальной переменной number, которое было рассчитано в функции init. Если Дилинговый центр предоставляет котировки в MetaTrader 4 с 5-ю или 3-мя знаками после запятой, то значение форекс mql4 цикл while workLimit, которое задается в пунктах, помножается на 10 значение глобальной переменной number.

Так как работа ведется не с финансовым инструментом графика, к которому прикреплен советник, а с любой валютной парой, мы используем функцию MarketInfo … для того, чтобы узнать цену Bid или Ask или размер пункта. Если бы работа велась по финансовому инструменту текущего графика, то мы бы использовали предопределенные переменные Bid, Ask и Point.

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

Уровень проскальзывания, также заданный во внешней переменной slippage, помножается на переменную number, чтобы подстроиться под котировки с 5-ю или 3-мя знаками после запятой. Уровень Стоп-лосса хоть и вынесен в отдельную переменную SL, но все равно равен 0, так как меня он не интересует. В комментарий к ордеру записывается номер сета, переведенный из числового в строковое значение DoubleToStr openSet, 0.

Как раз по этому параметру и происходит отсев ордеров в функции loadOrders. Ордер открывается с магически числом, заданным в глобальной переменной magic. Это форекс mql4 цикл while параметр, по которому происходит отсев ордеров в функции loadOrders.

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

На этом уроке мы закончим с основами программирования.

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

Программирование на MQL 4: Циклы

Как только номер тикета, возвращаемый функцией OrderSend станет положительным числом, функция openOrder завершит работу с положительным ответом return true. Функция обработки ошибок checkError Функция checkError работает с глобальной переменной lastError, содержащей код последней ошибки. Код ошибки передается в оператор-переключатель switch lastError.

При преодолимых ошибках производится обновление данных с помощью функции RefreshRates форекс mql4 цикл while обновление данных после небольшой задержки. Функция Sleep int milliseconds помогает советнику осуществить задержку. Как только предположительно удалось решить возникшую ошибку, функция checkError возвращает результат: положительный или отрицательный.

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

MQL4: изучаем цикл for()

Как видно, советник успешно открыл 1-й сет, дополнил недостающую позицию и открыл 2-й сет после изменения входных параметров. Также я расскажу, как использовать тот же советник для закрытия перекрытых ордеров. Есть что сказать? Пишите на Форуме.

Похожие статьи