Стратегия скользящего стоп-лосса, сочетающая цикл Паробеля и полосы Боллинджера


Дата создания: 2024-02-02 11:05:57 Последнее изменение: 2024-02-02 11:05:57
Копировать: 2 Количество просмотров: 424
1
Подписаться
1166
Подписчики

Стратегия скользящего стоп-лосса, сочетающая цикл Паробеля и полосы Боллинджера

Обзор

В данной статье будет рассказано о количественной торговой стратегии, которая объединяет паробельные циклические индикаторы с индикаторами Бринского пояса и устанавливает стратегию подвижного остановки. Эта стратегия определяет направление рыночных тенденций, рассчитывая паробельные циклические линии, а затем использует динамику пояса Бринского пояса, чтобы установить стоп-позиции, что позволяет реализовать подвижные остановки для блокировки прибыли.

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

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

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

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

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

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

Риски и решения

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

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

Оптимизация стратегии

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

  1. Оптимизация параметров парабельного показателя, регулирование скорости изменения параметров показателя, снижение вероятности ошибочного суждения

  2. Добавление фильтров на другие технические показатели, например, добавление MACD, KD и т. д. для определения типа рынка, чтобы избежать арбитража в волатильных рынках

  3. Оптимизировать параметры ленты Бурин, корректировать параметры полосы пропускания, чтобы сделать ленту Бурин ближе к изменениям цены

  4. Повышение количественных показателей, таких как объем торгов, объем позиций и другие вспомогательные суждения, чтобы избежать ложных прорывов

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

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © maxencetajet

//@version=5
strategy("HA_RSI", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=0.5, slippage=25)

closeHA = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

useDateFilter = input.bool(true, title="Filter Date Range of Backtest",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("5 June 2022"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("5 July 2022"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

swingHighV = input.int(10, title="Swing High", group="number of past candles")
swingLowV = input.int(10, title="Swing Low", group="number of past candles")

emaV = input.int(200, title="Ema Period", group="EMA")

rsiV = input.int(14, title="RSI Period", group="RSI")

start = input(0.02, group="Parabolic SAR")
increment = input(0.02, group="Parabolic SAR")
maximum = input(0.2, "Max Value", group="Parabolic SAR")

ema = ta.ema(closeHA, emaV)
rsi = ta.rsi(closeHA, rsiV)
SAR = ta.sar(start, increment, maximum)

myColor = SAR < low?color.green:color.red

longcondition = closeHA > ema and rsi > 50 and closeHA[1] > SAR and closeHA[1] < SAR[1] 
shortcondition = closeHA < ema and rsi < 50 and closeHA[1] < SAR and closeHA[1] > SAR[1]

float risk_long = na
float risk_short = na
float stopLoss = na
float entry_price = na
float takeProfit = na

risk_long := risk_long[1]
risk_short := risk_short[1]

swingHigh = ta.highest(closeHA, swingHighV)
swingLow = ta.lowest(closeHA, swingLowV)

if strategy.position_size == 0 and longcondition and inTradeWindow
    risk_long := (close - swingLow) / close
    strategy.entry("long", strategy.long, comment="Buy")
    
if strategy.position_size == 0 and shortcondition and inTradeWindow
    risk_short := (swingHigh - close) / close       
    strategy.entry("short", strategy.short, comment="Sell")
    
if strategy.position_size > 0

    stopLoss := strategy.position_avg_price * (1 - risk_long)
    entry_price := strategy.position_avg_price
    strategy.exit("long exit", "long", stop = stopLoss)
    
if strategy.position_size < 0 

    stopLoss := strategy.position_avg_price * (1 + risk_short)
    entry_price := strategy.position_avg_price
    strategy.exit("short exit", "short", stop = stopLoss)

if closeHA[1] < SAR and close > strategy.position_avg_price
    strategy.close("long", comment="Exit Long")
    
if closeHA[1] > SAR and close < strategy.position_avg_price
    strategy.close("short", comment="Exit Short")

p_ep = plot(entry_price, color=color.new(color.white, 0), linewidth=2, style=plot.style_linebr, title='entry price')
p_sl = plot(stopLoss, color=color.new(color.red, 0), linewidth=2, style=plot.style_linebr, title='stopLoss')
fill(p_sl, p_ep, color.new(color.red, transp=85))

plot(SAR, "ParabolicSAR", style=plot.style_circles, color=myColor, linewidth=1)
plot(ema, color=color.white, linewidth=2, title="EMA")