Это стратегия, основанная на Блинн-бейн-панеле. Она использует нижний канал Блинн-бейн-панеля в качестве определения тренда и ищет возможности для реверсии, когда цена приближается к границе канала.
Стратегия использует индикаторы Блинн-Белда в качестве основных технических показателей. Блинн-Белд состоит из n-дневных движущихся средних и их верхнего и нижнего диапазонов колебаний, где на траектории Блинн-Белда = n-дневные движущиеся средние + m × n-дневные стандартные отклонения, а на траектории Блинн-Белда = n-дневные движущиеся средние - m × n-дневные стандартные отклонения, где n и m являются параметрами.
Когда цена приближается к траектории, это означает, что она находится в тренде на подъем, но может достичь максимума; когда цена приближается к траектории, это означает, что она находится в тренде на падение, но может достичь минимума.
Конкретные правила торговли в этой стратегии следуют:
Когда цена закрытия больше, чем Блинн-Бэнд на трассе, сделать больше вход; когда цена закрытия меньше, чем Блинн-Бэнд на трассе, сделать пустой вход.
Стоп-потери сигнализируются движущейся средней на n днях. Стоп-потери выходят, когда цена нескольких операций закрытия превышает среднюю среднюю среднюю; стоп-потери выходят, когда цена закрытия пустых операций превышает среднюю среднюю среднюю среднюю среднюю среднюю среднюю.
В этом случае, если вы используете фиксированный объем сделок, то каждый транзакция будет иметь фиксированное значение.
Применение фиксированного коэффициента управления капиталом, устанавливающее фиксированный коэффициент прибыли и убытка и размер корректировки ордеров. При достижении фиксированного коэффициента прибыли увеличивать позиции по фиксированной величине, а при убытке уменьшать позиции.
В частности, в частности:
Используя Блин-диапазон для определения направления тренда, применяя контрреволюционную торговую стратегию, вход в позицию в то время, когда цена может перевернуться, избегает большинства колебаний и повышает шансы на выигрыш.
Движущаяся средняя является более надежным сигналом для остановки и блокировки большинства прибыли.
Стратегия фиксированного объема торговли проста и не требует сложных вычислений.
Фиксированная стратегия управления капиталом позволяет увеличить прибыль и контролировать риск путем корректировки позиций.
В то же время, эта стратегия сопряжена с определенными рисками:
Существует вероятность того, что ошибочные сигналы будут выражены в результате ошибочных суждений, которые могут привести к однократному убытку в обратном направлении тренда.
Задержка движущегося среднего может привести к недостаточному сдерживанию.
Фиксированные объемы торговли не могут регулировать позиции в соответствии с рыночными условиями.
Фиксированный процентный метод управления капиталом увеличивает размер позиций, что может привести к увеличению убытков.
Контрацепции: оптимизация параметров Блинн-бенда, повышение точности сигналов; совмещение с другими показателями для определения тенденций; адекватное уменьшение размера фиксированных позиций; снижение масштаба корректировки позиций в управлении фиксированными ставками.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизировать параметры ленты Блинна, такие как корректировка n- и m-значений, чтобы улучшить точность определения каналов ленты Блинна.
Добавьте другие показатели, такие как MACD, KD и т. д., чтобы избежать ошибочных сигналов с Брингом.
Приспосабливать фиксированный объем к динамическому и гибко корректировать позиции в зависимости от рыночных условий.
Снижение размера корректировки позиций фиксированного коэффициента управления капиталом, оптимизация кривой капитала.
Добавление стратегий остановки, таких как мобильные остановки, промежуточные остановки, позволяет еще больше контролировать риск.
Оптимизируйте параметры, автоматически оптимизируйте комбинации параметров, ищите оптимальные параметры для оптимизации стратегии.
Стратегия в целом является более типичной стратегией реверсии Блинн-бенда. Она использует точки реверсии тренда Блинн-бенда, в сочетании с установкой движущейся средней для остановки и удержания убытков, фиксированным объемом торговли и фиксированным уровнем управления рисками. В отличие от традиционной стратегии Блинн-бенда, эта стратегия является реверсией, которая в теории позволяет избежать частичного колебания и повысить вероятность прибыли.
/*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))