В этой публикации мы исследуем, как устроена механика работы отложенных приказов в OsEngine. Мы рассмотрим способы установки стопов и профитов для уже открытых позиций. Сначала мы рассмотрим, как это можно сделать через визуальный интерфейс, а затем рассмотрим, как это реализуется в исходном коде.
Есть позиция Long, купили BtcUsdt по 52 тысячи долларов.
Опасность в том, что цена может резко пойти на 40 тысяч, как это ранее бывало. Нужно обезопасить свою позицию на случай, если цена пойдёт вниз и пойти спать.
Для этого нам нужно выставить стоп-ордер, который закроет позицию, если цена пойдёт вниз.
Жмём ПКМ на позицию, которую хотим обезопасить, и во всплывающем меню выбираем смену цены стоп-ордера:
Откроется окно закрытия позиции:
1. Выбираем цену активации стоп-ордера.
2. Выбираем цену ордера, который будет выставлен для закрытия позиции. Закладываем 100 долларов проскальзывания, чтобы точно сработало, и жмём «принять».
После этого на графике увидим уровень, по которому будет закрыта позиция. И в таблице позиций тоже увидим изменения:
Когда цена опуститься до 51200, в рынок будет выставлен ордер на продажу по цене 51150, и позиция закроется.
Например, мы оптимистично купили Биткойн по 52 тысячи и ждём повышения цены:
Никак нельзя идти спать, пока мы не убедимся, что наша прибыль будет зафиксирована, когда биток уйдёт на 53 тысячи.
Жмём по позиции ПКМ, выбираем «Swap profit order»:
Откроется окно закрытия позиции по профиту:
1. Вводим цену активации.
2. Вводим цену ордера, который будет после активации выставлен.
3. Жмём кнопку «Close at profit».
Теперь можно идти спать, а робот видит где нужно зафиксировать прибыль:
Когда цена поднимется до 53000, в рынок будет выставлен ордер на продажу по цене 52950. И позиция закроется.
Например, мы почти уверены, что Биткойн от 52 тысяч должен пойти вниз, поэтому вшортили (рассчитывая заработать на понижении) его:
Возможно, цена начнёт расти и обнулит наш депозит. Нельзя этого допускать. И на случай повышения мы решили поставить стоп-ордер за предыдущим хаем. По 52500. И если цена туда дойдёт, мы хотим, чтобы наша позиция закрылась с небольшим убытком.
Жмём правой кнопкой мыши на позицию:
Откроется окно закрытия позиции по стопу:
Вводим нужные цифры и принимаем:
Когда цена поднимется до 52500, в рынок будет выставлен ордер на покупку по цене 52550. И позиция закроется.
Например, мы точно знаем, что цена биткойна должна рухнуть от 52 тысяч минимум до 49 тысяч. Поэтому продали 1 контракт по 52 тысячи и ждём прибыли, когда цена уйдёт вниз:
Но мы должны убедиться, что пока выгуливаем собаку, наша прибыль зафиксируется на уровне 39 тысяч. Для этого нам понадобится выставить стоп приказ для данной шорт позиции.
Жмём ПКМ на позицию:
Появится окно закрытия позиции по профиту:
1. Выставляем цену активации. Для шорт позиции цена профита должна быть внизу рынка.
2. Выставляем цену ордера, который будет выставлен после активации заявки. Ордер будет на покупку, поэтому делаем его чуть выше, чем цена активации, чтобы он точно исполнился.
3. Нажимаем кнопку выставить.
Когда цена на рынке дойдёт до 49 тысяч, шортовая позиция закроется ордером, который будет с ценой 49200.
На начало 2024 года все виды стоп-приказов в OsEngine внутренние. То есть на рынок в итоге уходят только ордера после достижения цен активации.
В качестве примера можете взять робота «PriceChannelBreak» из встроенных в OsEngine:
Здесь мы видим:
1. Робот подписан на событие открытия позиции.
2. Логика выставления стопов и профитов разделена на BUY и SELL так, как и нужно.
3. Выставление стоп и профит заявок с проскальзыванием в шагах цены инструмента.
Это общая практика торговых платформ для создания роботов. По крайней мере в Wealth-Lab тоже так.
Стопы и Профиты в тестере исполняются строго по цене активации без проскальзываний. И проскальзывание в тестере выставлять не надо… А если оно выставлено в коде, вы его всё равно не увидите в интерфейсе.
Это связано с тем, что исполнять такие ордера нужно по касанию в тестере. А если после касания активируется ордер с другой ценой, то его тоже обязательно надо исполнить. Что приводило к тому, что пользователи себе таким не хитрым способом «Рисовали» прибыль в тестере. Что и было пофикшено\ уже более года назад.
Поэтому, выставляя в тестере стопы и профиты, не пугайтесь, если в графе цена активации/цена ордера будут одни и те же значения. Это абсолютно нормально.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php