Стратегия реверсификации Бринского коридора

Автор:Чао Чжан, Дата: 2023-10-31 14:30:45
Тэги:

反转型布林带通道震荡趋势策略

Обзор

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

Принципы стратегии

Стратегия использует индикаторы Блинн-Белда в качестве основных технических показателей. Блинн-Белд состоит из n-дневных движущихся средних и их верхнего и нижнего диапазонов колебаний, где на траектории Блинн-Белда = n-дневные движущиеся средние + m × n-дневные стандартные отклонения, а на траектории Блинн-Белда = n-дневные движущиеся средние - m × n-дневные стандартные отклонения, где n и m являются параметрами.

Когда цена приближается к траектории, это означает, что она находится в тренде на подъем, но может достичь максимума; когда цена приближается к траектории, это означает, что она находится в тренде на падение, но может достичь минимума.

Конкретные правила торговли в этой стратегии следуют:

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

  2. Стоп-потери сигнализируются движущейся средней на n днях. Стоп-потери выходят, когда цена нескольких операций закрытия превышает среднюю среднюю среднюю; стоп-потери выходят, когда цена закрытия пустых операций превышает среднюю среднюю среднюю среднюю среднюю среднюю среднюю.

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

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

Анализ преимуществ

В частности, в частности:

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

  2. Движущаяся средняя является более надежным сигналом для остановки и блокировки большинства прибыли.

  3. Стратегия фиксированного объема торговли проста и не требует сложных вычислений.

  4. Фиксированная стратегия управления капиталом позволяет увеличить прибыль и контролировать риск путем корректировки позиций.

Анализ рисков

В то же время, эта стратегия сопряжена с определенными рисками:

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

  2. Задержка движущегося среднего может привести к недостаточному сдерживанию.

  3. Фиксированные объемы торговли не могут регулировать позиции в соответствии с рыночными условиями.

  4. Фиксированный процентный метод управления капиталом увеличивает размер позиций, что может привести к увеличению убытков.

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

Оптимизация

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

  1. Оптимизировать параметры ленты Блинна, такие как корректировка n- и m-значений, чтобы улучшить точность определения каналов ленты Блинна.

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

  3. Приспосабливать фиксированный объем к динамическому и гибко корректировать позиции в зависимости от рыночных условий.

  4. Снижение размера корректировки позиций фиксированного коэффициента управления капиталом, оптимизация кривой капитала.

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

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

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

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


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
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/
// © gsanson66


//This strategy uses the well-known Bollinger Bands Indicator
//@version=5
strategy("BOLLINGER BANDS BACKTESTING", shorttitle="BB BACKTESTING", overlay=true, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=950, commission_type=strategy.commission.percent, commission_value=0.18)


//----------------------------------------FUNCTIONS---------------------------------------//

//@function Displays text passed to `txt` when called.
debugLabel(txt, color) =>
    label.new(bar_index, high, text = txt, color=color, style = label.style_label_lower_right, textcolor = color.black, size = size.small)

//@function which looks if the close date of the current bar falls inside the date range
inBacktestPeriod(start, end) => (time >= start) and (time <= end)


//---------------------------------------USER INPUTS--------------------------------------//

//Technical parameters
bbLength = input.int(defval=20, minval=1, title="BB Length", group="Technical Parameters")
mult = input.float(defval=2, minval=0.1, title="Standard Deviation Multipler", group="Technical Parameters")
smaLength = input.int(defval=20, minval=1, title="SMA Exit Signal Length", group="Technical Parameters")
//Money Management
fixedRatio = input.int(defval=400, minval=1, title="Fixed Ratio Value ($)", group="Money Management")
increasingOrderAmount = input.int(defval=200, minval=1, title="Increasing Order Amount ($)", group="Money Management")
//Backtesting period
startDate = input(title="Start Date", defval=timestamp("1 Jan 2020 00:00:00"), group="Backtesting Period")
endDate = input(title="End Date", defval=timestamp("1 July 2024 00:00:00"), group="Backtesting Period")


//----------------------------------VARIABLES INITIALISATION-----------------------------//
strategy.initial_capital = 50000
//Exit SMA
smaExit = ta.sma(close, smaLength)
//BB Calculation
basis = ta.sma(close, bbLength)
dev = mult * ta.stdev(close, bbLength)
upperBB = basis + dev
lowerBB = basis - dev
//Money management
equity = strategy.equity - strategy.openprofit
var float capital_ref = strategy.initial_capital
var float cashOrder = strategy.initial_capital * 0.95
//Backtesting period
bool inRange = na


//------------------------------CHECKING SOME CONDITIONS ON EACH SCRIPT EXECUTION-------------------------------//

//Checking if the date belong to the range
inRange := true

//Checking performances of the strategy
if equity > capital_ref + fixedRatio
    spread = (equity - capital_ref)/fixedRatio
    nb_level = int(spread)
    increasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder + increasingOrder
    capital_ref := capital_ref + nb_level*fixedRatio
if equity < capital_ref - fixedRatio
    spread = (capital_ref - equity)/fixedRatio
    nb_level = int(spread)
    decreasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder - decreasingOrder
    capital_ref := capital_ref - nb_level*fixedRatio

//Checking if we close all trades in case where we exit the backtesting period
if strategy.position_size!=0 and not inRange
    strategy.close_all()
    debugLabel("END OF BACKTESTING PERIOD : we close the trade", color=color.rgb(116, 116, 116))


//-----------------------------------EXIT SIGNAL------------------------------//

if strategy.position_size > 0 and close < smaExit
    strategy.close("Long")
if strategy.position_size < 0 and close > smaExit
    strategy.close("Short")


//----------------------------------LONG/SHORT CONDITION---------------------------//

//Long Condition
if close > upperBB and inRange
    qty = cashOrder/close
    strategy.entry("Long", strategy.long, qty)
//Short Condition
if close < lowerBB and inRange
    qty = cashOrder/close
    strategy.entry("Short", strategy.short, qty)


//---------------------------------PLOTTING ELEMENT----------------------------------//

plot(smaExit, color=color.orange)
upperBBPlot = plot(upperBB, color=color.blue)
lowerBBPlot = plot(lowerBB, color=color.blue)
fill(upperBBPlot, lowerBBPlot, title = "Background", color=strategy.position_size>0 ? color.rgb(0, 255, 0, 90) : strategy.position_size<0 ? color.rgb(255, 0, 0, 90) : color.rgb(33, 150, 243, 95))


Больше информации