Настраиваемая стратегия BB+RSI+Aroon


Дата создания: 2023-09-21 15:05:38 Последнее изменение: 2023-09-21 15:05:38
Копировать: 0 Количество просмотров: 495
1
Подписаться
1237
Подписчики

Обзор

Эта стратегия сочетает в себе зоны Бринга (BB), относительно сильный индекс (RSI) и индикатор Aroon, чтобы использовать преимущества различных индикаторов и обеспечить эффективные сигналы входа и выхода для торговли.

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

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

  2. Когда RSI пересекает линию перекупа, показывается многоголовый сигнал подтверждения.

  3. Когда Aroon наносит повязку, он показывает многоголовый сигнал подтверждения.

  4. Когда все три условия выполнены одновременно, делайте больше.

  5. Когда цена пробивает границу Бринского пояса, показывается сигнал о пустоте.

  6. Когда RSI пересекает линию перепродажи, показывается сигнал подтверждения.

  7. Когда Aroon наденет на себя одежду, он покажет сигнал подтверждения.

  8. Когда вышеперечисленные три условия выполняются одновременно, пустует место.

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

  • Настраиваемые параметры, оптимизированные для оптимального сочетания
  • Подтверждение различных показателей, повышение точности сигнала
  • Применимость к различным рыночным условиям
  • Простая логика сделки, легко реализуемая

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

  • Неправильная оптимизация параметров, может вызвать слишком много ошибочных сигналов
  • Задержка в многочисленных показателях может привести к немедленному реверсу
  • Обратная операция увеличивает частоту и стоимость сделок

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

  • Многорыночная многоразовая обратная отсчетная работа по поиску оптимальных параметров
  • Оценить эффективность каждого показателя и убрать, если это необходимо
  • Попытка оптимизации параметров на основе машинного обучения
  • Оптимизация кода стратегии, уменьшение вычислений
  • Тестирование различных параметров времени удержания позиции

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

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

Исходный код стратегии
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
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/
// Developed by Marco Jarquin as part of Arkansas 22 Project for Binary Options
// CBRA for binary options (Configurable Bollinger Bands, RSI and Aroon)

//@version=4
// ====================================================================================

//strategy("A22.CBRA.Strat", overlay=true, initial_capital=10000, currency="USD", calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=4000, commission_type=strategy.commission.cash_per_order, commission_value=0)

// Aroonish Parameters
// ====================================================================================

Aroonish_length = input(4, minval=1, title="Aroonish Lenght")
Aroonish_ConfVal = input(50, minval=0, maxval=100, step=25, title="Aroonish Confirmation Value")
Aroonish_upper = 100 * (-highestbars(high, Aroonish_length+1) + Aroonish_length)/Aroonish_length
Aroonish_lower = 100 * (-lowestbars(low, Aroonish_length+1) + Aroonish_length)/Aroonish_length

// Aroonish confirmations
// ====================================================================================
Aroonish_ConfLong = (Aroonish_lower >= Aroonish_ConfVal) and (Aroonish_upper < Aroonish_lower)
Aroonish_ConfShrt = (Aroonish_upper >= Aroonish_ConfVal) and (Aroonish_upper > Aroonish_lower)

plotshape(crossover(Aroonish_lower, Aroonish_upper), color = color.red, style = shape.triangledown, location = location.abovebar, size = size.auto, title = "Ar-B")
plotshape(crossover(Aroonish_upper, Aroonish_lower), color = color.green, style = shape.triangleup, location = location.belowbar, size = size.auto, transp = 0, title = "Ar-S")

// RSI Parameters
// ====================================================================================
RSI_length = input(4, title="RSI Lenght")
RSI_overSold = input(20, title="RSI Oversold Limit")
RSI_overBought = input(80, title="RSI Overbought Limit" )

RSI = rsi(close, RSI_length)

plotshape(crossover(RSI, RSI_overSold), color = color.orange, style = shape.square, location = location.belowbar, size = size.auto, title = "RSI-B")
plotshape(crossunder(RSI, RSI_overBought), color = color.orange, style = shape.square, location = location.abovebar, size = size.auto, transp = 0, title = "RSI-S")

// Bollinger Parameters
// ====================================================================================
BB_length = input(20, minval=1, title="Bollinger Lenght")
BB_mult = input(2.5, minval=0.1, maxval=50, step=0.1, title="Bollinger Std Dev")
// BB_bars = input(3, minval=1, maxval=5, title="Check bars after crossing")

BB_basis = sma(close, BB_length)
BB_dev = BB_mult * stdev(close, BB_length)

BB_upper = BB_basis + BB_dev
BB_lower = BB_basis - BB_dev

p1 = plot(BB_upper, color=color.blue)
p2 = plot(BB_lower, color=color.blue)

// Bars to have the operation open
// ====================================================================================
nBars = input(3, minval=1, maxval=30, title="Bars to keep the operation open")

// Strategy condition short or long
// ====================================================================================
ConditionShrt = ((crossunder(close, BB_upper) or crossunder(close[1], BB_upper[1])) and Aroonish_ConfShrt) and (crossunder(RSI, RSI_overBought) or crossunder(RSI[1], RSI_overBought[1]))
ConditionLong = ((crossover(close, BB_lower) or crossover(close[1], BB_lower[1])) and Aroonish_ConfLong) and (crossover(RSI, RSI_overSold) or crossover(RSI[1], RSI_overSold[1]))

plotshape(crossover(close, BB_lower), color = color.blue, style = shape.circle, location = location.belowbar, size = size.auto, title = "BB-B")
plotshape(crossunder(close, BB_upper), color = color.blue, style = shape.circle, location = location.abovebar, size = size.auto, transp = 0, title = "BB-S")


// Make input options that configure backtest date range
// ====================================================================================
iMo = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
iDy = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
iYr = input(title="Start Year", type=input.integer, defval=(2020), minval=1800, maxval=2100)

eMo = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12)
eDy = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31)
eYr = input(title="End Year", type=input.integer, defval=(2021), minval=1800, maxval=2100)

// Look if the close time of the current bar falls inside the date range
// ====================================================================================
inDateRange = true


// Evaluates conditions to enter short or long
// ====================================================================================
if (inDateRange and ConditionLong)
    strategy.entry("A22.L", strategy.long)

if (inDateRange and ConditionLong[nBars])
    strategy.close("A22.L", comment="A22.L Exit")
    
if (inDateRange and ConditionShrt)
    strategy.entry("A22.S", strategy.short)

if (inDateRange and ConditionShrt[nBars])
    strategy.close("A22.S", comment="A22.S Exit")

if (not inDateRange)
    strategy.close_all()