Закрыть прибыльные позиции

Закрыть все позицииДобрый день, уважаемы читатели форекс блога 4exlab.ru . Сегодня мы опять окунемся в язык программирования MQL4. На этот раз мы напишем довольно полезный скрип, который будет закрывать все прибыльные сделки, и оставлять те, которые должны «подрасти в прибыли»

Это необходимо в том случае, если у вас открыто множество ордеров и вы находитесь перед большой коррекцией! По крайней мере, Вы в этом должны быть уверенны!

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

Согласитесь, идея задумки неплохая – «Закрываем все сделки, прибыль по которым больше нуля». В ранее описанных уроках по программированию на языку MQL4, у нас уже был немного схожий скрипт, суть которого была такая – «Закрыть все сделки».

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


Открываем MetaEditor и в мастере создания советников выбираем «пользовательский скрипт». Теперь вписываем в следующее окно название скрипта и все необходимые данные о себе, если считаете таковое нужным. Далее MetaEditor направит вас непосредственно в редактор кода, в котором мы и будем проводить отладку кода скрипта по закрытию всех прибыльных сделок.

Выше блока int start() нам необходимо будет добавить #include <WinUser32.mqh> для того, чтобы была возможность обработки диалогового окна, чтобы избежать несчастного случая человеческого фактора, и вы точно осознавали, что сейчас будет делать скрипт. Это удобно!

Если еще у кого-то есть сомнение, что же обозначает эта часть кода, то советую почитать предыдущие статьи. В принципе мы можем и убрать эти строки. Компилятор «съест» такой трюк.

Эту строчку приписываем за необходимостью «понимания» торговым терминалом диалогового окна. Ни в коем случае эта строка не отвечает за вывод диалогового окна. Она только предписывает, что диалоговое окно будет.

Затем перейдем к основному блоку нашего скрипта по закрытию всех прибыльных сделок int star() .

Создадим условие : «Если при открытие диалогового окна «Закрыть все прибыльные сделки?» Вы выбираете «Да», то скрипт продолжит свое действие, в противном случае скрипт по закрытию прибыльных сделок прекращает свое действие». Выглядеть это будет следующим образом:

Прочитать эту строчку можно так: «Если в открывшемся диалоговом окне пользователь нажмет ДА, то скрипт будет выполняться далее, в противном случае, скрипт сделает return – выход из специальной функции int start()».

Затем пропишем необходимые нам переменные

Следующим нашим шагом будет постановка условия while. Лично мне подобное условие больше нравится. Вы же можете поставить условие for.

В условии while пропишем еще одно важное условие

Не буду его объяснять, но скажу Вам, как его читать, чтобы у вас исчезли вопросы. «Если не существует ордера для дальнейшей работы, то необходимо прервать выполнение скрипта». По сути, эта строчка прописывается, чтобы лишний раз не загружать компьютер и не тратить его параметры.



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

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

Проверим скрипт на наличие ошибок. Скомпилируем скрипт, нажав клавишу F5. Если Вы все правильно сделали и код «понравился» компилятору, то в папке scripts создался одноименный файл с расширением .ex4 . Затем открываем торговую платформу MetaTrader и на демо счете открываем множество разнонаправленных сделок, ждем некоторое время, чтобы эти сделки набрали пункты. Затем перетаскиваем скрипт на график рабочего инструмента (скрипт находится в навигаторе торгового терминала MetaTrader).

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


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

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

Скачать скрипт Закрыть все прибыльные позиции

30.11.2010 · Группа авторов · комментариев 5
Метки: , , , ,  · Рубрика: Скрипты

комментариев 5

  1. баблоруб - 29.03.2011

    я превый!!!!
    долго искал подобный скрипт, нашел таки. Авторы, пешите больше и чаще!

  2. Группа авторов - 30.03.2011

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

  3. vov - 05.04.2011

    Скипт не срабатывает. Profit 1.
    Стандартное в поставке Close срабатывает без проблем.
    В чем дело??

  4. Группа авторов - 06.04.2011

    У меня все работает.
    Может быть ваш ДЦ не дает совершать сделки с пределах +-5 пипсов от нуля? такое бывает.

  5. Boond - 06.03.2013

    Здравствуйте. Хотел спросить, можно ли как нибудь сделать так что бы он не спрашивал, а один раз поставить и что бы он всегда закрывал прибыльные?

Комментировать