Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement scenario: simple trailing stop #50

Open
Tim55667757 opened this issue Aug 19, 2022 · 0 comments
Open

Implement scenario: simple trailing stop #50

Tim55667757 opened this issue Aug 19, 2022 · 0 comments
Assignees
Labels
Feature New feature, request or an idea
Milestone

Comments

@Tim55667757
Copy link
Owner

Tim55667757 commented Aug 19, 2022

A trailing stop is a tool that allows you to automatically place an order (limit or SL/TP stop-order) at the required level from the current price, as a percentage or in the currency of the traded instrument. It is perfect to use when the market moves strongly in one direction, and the trader does not have the opportunity to follow the price change.

A trailing stop order is placed for the first time when the price crosses the breakeven level (open price, plus all commissions, plus a small floating step) and goes further than this level by the trailing amount. In the future, the trailing stop moves along with the price when it moves in a favorable direction and remains unchanged during reversals, which guarantees profit maximization. There is no need to manually place any SL/TP orders.

Trailing stop tracking directions can be "short" (for sell positions) and "long" (for buy positions). If the price has changed again and it is required to move the trailing stop order, then the previous one is canceled at the beginning and then a new order with a new level is placed.

In this task, you need to add a new script to the python api examples that implements a "simple" trailing stop. The user is allowed to specify:

  • fixed trailing level from the current price, in percentage or in the currency of the traded instrument;
  • a list of instrument tickers (except for currencies) for which you want to create a trailing stop;
    • either specify keywords (case insensitive): TS-ALL, TRAILING-STOP-ALL to create trailing stops for all instruments in the portfolio;
    • or specify the keywords (case insensitive): TS-[SHARES]-[BONDS]-[ETFS]-[FUTURES], TRAILING-STOP-[SHARES]-[BONDS]-[ETFS]-[FUTURES] to set trailing stops only for the specified types of instruments, you can several at once (for example, TS-SHARES-ETFS);
  • the type of orders placed for trailing stops: limit (valid until the end of the trading session) or stop orders (will be valid until canceled, until executed or until the trailing stop is automatically moved);
  • directions for all trailing stop orders: LONG, SHORT, or separately for each instrument.

Setting trailing stops for the list of specified instruments should be carried out in parallel mode using the multiprocessing library.


Описание задачи по-русски:

Трейлинг-стоп (или "скользящий" стоп) – это инструмент, который позволяет автоматически устанавливать ордер (лимитный или SL/TP стоп-ордер) на необходимом уровне от текущей цены, в процентах или в валюте торгуемого инструмента. Он отлично подойдет, когда рынок сильно движется в одном направлении, а у трейдера нет возможности следить за изменением цены.

Ордер для трейлинг-стопа выставляется в первый раз тогда, когда цена пересекает уровень безубыточности (цена открытия, плюс все комиссии, плюс небольшой плавающий шаг) и становится дальше этого уровня на величину трейлинга. В дальнейшем трейлинг-стоп перемещается вслед за ценой, когда она движется в благоприятном направлении и остаётся неизменным при разворотах, что гарантирует максимизацию прибыли. Устанавливать при этом вручную какие-либо SL/TP-ордера не требуется.

Направления для отслеживания трейлинг-стопа могут быть "short" (для позиций продаж) и "long" (для позиций покупок). Если цена в очередной раз изменилась и требуется передвинуть трейлинг-стоп ордер, то в начале отменяется предыдущий и затем выставляется новый ордер с новым уровнем.

В этой задаче требуется добавить в примеры работы с python api новый сценарий, который реализует "простой" трейлинг-стоп. Пользователю разрешено указать:

  • фиксированный уровень трейлинга от текущей цены, в процентах или в валюте торгуемого инструмента;
  • список тикеров инструментов (кроме валют), по которым требуется создать трейлинг-стоп;
    • либо указать ключевые слова (регистронезависимо): TS-ALL, TRAILING-STOP-ALL для создания трейлинг-стопов для всех инструментов в портфеле;
    • либо указать ключевые слова (регистронезависимо): TS-[SHARES]-[BONDS]-[ETFS]-[FUTURES], TRAILING-STOP-[SHARES]-[BONDS]-[ETFS]-[FUTURES] для выставления трейлинг-стопов только по указанным типам инструментов, можно сразу по нескольким (например, TS-SHARES-ETFS);
  • тип выставляемых ордеров для трейлинг-стопов: лимитные (действуют до конца торговой сессии) или стоп-ордера (будут действовать до отмены, до исполнения или до автоматического перемещения трейлинг-стопа);
  • направления для всех трейлинг-стоп ордеров: LONG, SHORT, либо по каждому инструменту отдельно.

Установка трейлинг-стопов по списку указанных инструментов должна осуществляться в параллельном режиме с использованием библиотеки для мультипроцессинга.

@Tim55667757 Tim55667757 added the Feature New feature, request or an idea label Aug 19, 2022
@Tim55667757 Tim55667757 added this to the release-1.5 milestone Aug 19, 2022
@Tim55667757 Tim55667757 self-assigned this Aug 19, 2022
@Tim55667757 Tim55667757 modified the milestones: release-1.5, release-1.6 Nov 19, 2022
@Tim55667757 Tim55667757 modified the milestones: release-1.6, release-1.7 Jan 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature New feature, request or an idea
Projects
None yet
Development

No branches or pull requests

1 participant