Простая стратегия, основанная на трейлинг-стопе и трейлинг-покупке


Дата создания: 2024-01-19 14:30:59 Последнее изменение: 2024-01-19 14:30:59
Копировать: 4 Количество просмотров: 554
1
Подписаться
1617
Подписчики

Простая стратегия, основанная на трейлинг-стопе и трейлинг-покупке

Обзор

Стратегия реализует простое, основанное на процентах, сочетание стоп-лосс и покупок-покупок. Попытки различных сочетаний процентов на разных временных рамках и на разных графиках позволяют оптимизировать параметры стратегии.

Стратегический принцип

Эта стратегия основана на двух показателях:

  1. Trailing Stop Line (TSL): переходный средний, рассчитанный на основе процента отклонения стоп-убытков, установленного пользователем, и основанный на закрытии цены на ближайшей N-корневой линии K. Стоп-убыток на позиции, когда цена ниже этой линии.
  2. Trailing Buy Line (TBL): Процентная смена покупок, установленная пользователем, рассчитывается на основе перемещающегося среднего значения наивысшей цены на последней N-корневой K-линии.

Сравнение цены с этими двумя показателями позволяет реализовать правила остановки и выкупа.

Стратегические преимущества

Эта стратегия имеет следующие преимущества:

  1. Простые, интуитивные, легко понятные и реализуемые;
  2. Эластичность приостановки и выкупа может быть достигнута путем корректировки параметров;
  3. Возможность адаптации к различным рынкам и различным временным периодам;
  4. Это позволяет отслеживать тенденции и своевременно останавливать убытки.

Стратегический риск

Также существуют следующие риски:

  1. Неправильная настройка параметров может привести к чрезмерно радикальным стоп-локам или выкупам;
  2. Частые сделки и потери в скользких рынках;
  3. Необходимо правильно оптимизировать параметры для адаптации к особенностям различных рынков.

Направление оптимизации стратегии

Эта стратегия может быть оптимизирована в следующих аспектах:

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Developed from ©Finnbo code
strategy("Simple Trailing Buy & Stop Strategy", overlay=true)
offset = input(defval=1.5, title="Stop Offset %", type=float, minval=0.1, maxval=100, step=0.1)
buyoffset = input(defval=1.9, title="Trailing Buy Offset %", type=float, minval=0.1, maxval=100, step=0.1)

sumbars = input(defval=6, title="Use last x bars for calculation",  minval=1)
srcts = input(title="Source Trailing Stop calculation",  defval=close)
srctb = input(title="Source Trailing Buy calculation",  defval=close)
srctrigger = input(title="Source Stop Trigger",  defval=low)
srctriggerbuy = input(title="Source Buy Trigger",  defval=high)
tsl = rma(srcts, sumbars)*(1-(offset/100))// = (sum(srcts,sumbars)/sumbars)*(1-(offset/100))
tbuy = rma(srctb, sumbars)*(1+(buyoffset/100))
plot(tsl, color=(srctrigger<tsl)?red:green)
plot(tbuy, color=(srctriggerbuy>tbuy)?red:green)
//plotshape(crossunder(srctrigger,tsl), text="Long Stop", style=shape.circle, color=red)
alertcondition(crossunder(srctrigger,tsl), "Long Stop alert", "SELL")
//plotshape(crossover(srctriggerbuy,tbuy), text="Long", style=shape.circle, color=green)
alertcondition(crossover(srctriggerbuy,tbuy), "Long alert", "BUY")

longCondition =  crossover(srctriggerbuy,tbuy)
if (longCondition)
    strategy.entry("Long", strategy.long)
closeCondition = crossunder(srctrigger,tsl)
if (closeCondition)
    strategy.close("Long")