РУКОВОДСТВО ПО ОСНОВАМ MQL5 - 40 ПРОСТОЙ ПОКУПКИ ПЕРЕРЫВ С ОСТАНОВКОЙ
Автор: MQL5 Tutorial
Загружено: 2019-10-19
Просмотров: 6804
https://mql5tutorial.com/?s=stop+лосс
С помощью MQL5 и Metatrader5 мы создаем автоматический советник Break Even Stop Loss, который будет устанавливать стоп-лосс выше цены покупки, когда цена идет в нашу сторону...
В этом видео мы будем создавать безубыточные стопы для сделок на покупку, это начальный стоп-лосс для этой сделки, и когда цена вырастет, как только она пройдет цену покупки, вы увидите, как на графике появится маленькая красная линия, так что давайте узнаем, как это сделать с помощью mql5.
Начнем с нажатия на эту маленькую иконку здесь или мы можем также нажать F4 на клавиатуре, теперь вы должны увидеть окно Metaeditor и здесь вы можете нажать на файл, новый файл, советник из шаблона, продолжить, я назову этот файл простой покупкой безубыточного стопа, нажмите на продолжить, продолжить и закончить.
Теперь вы можете удалить все, что находится выше функции on tick и две строки комментариев, мы начнем с включения файла trade dot mqh, который поставляется с mql5, и мы будем использовать экземпляр ctrade под названием trade для открытия тестовой позиции. Вы не будете делать этого на реальном счете, но нам нужно открыть тестовую позицию, чтобы мы могли установить безубыточную остановку.
Для позиции на покупку нам нужно узнать цену спроса, что делается с помощью symbol info double для текущего символа на графике, мы используем symbol underscore ask - все заглавными буквами - и с помощью normalize double и underscore digits мы автоматически вычисляем нужное количество цифр за точкой.
Мне нужна только одна тестовая позиция, поэтому я проверяю, равно ли возвращаемое значение для функции positions total нулю, и если это так, мы используем trade dot buy для открытия тестовой позиции на десять микро-лотов.
Здесь же мы устанавливаем значение стоп-лосса и тейк-профита, а в конце функции on tick мы хотим вызвать другую функцию, которая будет называться check buy break-even stop, в качестве параметра мы передали цену спроса, а этой функции пока не существует, поэтому нам нужно ее закодировать.
Наша пользовательская функция не имеет возвращаемого значения и будет принимать цену спроса в качестве параметра, мы будем использовать цикл for, наш счетчик - целое число для номера позиции, и мы будем вести обратный отсчет от общего количества позиций, пока не останется ни одной.
Для каждой позиции нам нужно получить номер билета, что делается с помощью position get integer, position underscore ticket, это значение будет храниться в переменной под названием position ticket, это беззнаковая длинная переменная, и это немного странно, потому что мы используем position get integer, поэтому вы ожидаете целое значение здесь, но когда вы отметите position ticket и нажмете F1, вы увидите, что на самом деле здесь возвращается длинное значение.
Нам также нужно получить цену покупки позиции или, возможно, я должен сказать цену открытия позиции, что делается с помощью position get double и мы используем position underscore price, underscore open, давайте повторим это еще два раза, потому что мы также хотим знать стоп-лосс позиции и значение тейк-профита позиции, оба значения могут быть рассчитаны с помощью position get double и для получения направления позиции мы используем position get integer для position underscore type, это даст нам направление, потому что нам нужно знать, является ли это позиция покупкой или продажей.
Чтобы убедиться, что позиция принадлежит текущему графику, мы используем position get symbol для номера текущей позиции, и теперь мы можем проверить условия, мы хотим передвинуть стоп-лосс, только если текущий символ на графике равен символу позиции, мы также хотим убедиться, что тип позиции равен position underscore type, underscore buy, это тот случай, когда у нас сделка на покупку, мы хотим передвинуть безубыточный стоп, только если стоп-лосс текущей позиции ниже цены покупки позиции.
И, наконец, я хочу знать, если текущая цена спроса выше цены покупки позиции плюс тридцать пунктов, тогда я хочу установить безубыточный стоп.
Если все эти условия верны, я использую trade dot position modify для изменения текущей позиции для текущего тикета позиции и хочу переместить текущий стоп-лосс на четыре пункта выше цены покупки позиции, это цена, которую мы заплатили, когда открыли позицию на покупку, и в этом случае я оставляю значение тейк-профита позиции без изменений. Давайте переформатируем код, нам нужно закрыть цикл for и завершить функцию, на этом все.
Ну, если вы не знаете, что делает весь этот код, или если это было слишком быстро для вас, возможно, вы хотите сначала посмотреть другие видео в этой серии базовых видео или, возможно, даже премиум-курс на сайте может быть интересен для вас, а пока,
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: