
Эта стратегия является количественной стратегией торговли, основанной на индикаторе Bollinger Bands и индикаторе Relative Strength Index (RSI). Эта стратегия использует методы машинного обучения, используя язык Python для обратной оптимизации исторических данных за последние 1 год, чтобы найти оптимальную комбинацию параметров.
Торговые сигналы для этой стратегии получены из комбинированного суждения о двойных полосах Bollinger Bands и RSI. При этом индикатор Bollinger Bands представляет собой канал колебаний, рассчитанный на основе стандартных диапазонов цен. Торговые сигналы появляются, когда цена приближается или касается каналов колебаний.
В частности, когда конечная цена находится ниже 1.0 стандартного отклонения, а RSI выше 42, создается сигнал покупки. Когда конечная цена находится выше 1.0 стандартного отклонения, а RSI выше 70, создается сигнал продажи. Кроме того, в стратегии также установлены параметры BB и RSI для входа и остановки убыточных позиций.
Наибольшее преимущество этой стратегии заключается в точности параметров. С помощью методов машинного обучения каждый параметр получает оптимальный коэффициент Шарпа после полного отсчета. Это обеспечивает как прибыль от стратегии, так и контроль риска. Кроме того, комбинация двойных показателей также повышает точность и выигрыш сигналов.
Риск в этой стратегии в основном исходит из установки точки остановки. Если точка остановки установлена слишком высоко, то потеря не может быть эффективно контролирована. Кроме того, риск увеличивается, если точка остановки неправильно рассчитана с другими торговыми расходами, такими как комиссионные, торговые скольжения и т. Д. Для снижения риска рекомендуется изменить параметры размера остановки, снизить частоту торгов, а также рассчитать разумное положение остановки.
Существует еще много возможностей для дальнейшей оптимизации этой стратегии. Например, можно попытаться изменить параметры длины Bollinger Bands или скорректировать предел RSI. Кроме того, можно попытаться ввести другие показатели и создать многопоказательную комбинацию. Это может повысить прибыльность и стабильность стратегии.
Стратегия, объединяющая двойные показатели BB и RSI, получает оптимальные параметры с помощью методов машинного обучения, обеспечивает высокую доходность и контролируемый уровень риска. Она обладает преимуществами как в суждении по портфелю показателей, так и в оптимизации параметров.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2020
strategy(overlay=true, shorttitle="Flawless Victory Strategy" )
// Stoploss and Profits Inputs
v1 = input(true, title="Version 1 - Doesn't Use SL/TP")
v2 = input(false, title="Version 2 - Uses SL/TP")
stoploss_input = input(6.604, title='Stop Loss %', type=input.float, minval=0.01)/100
takeprofit_input = input(2.328, title='Take Profit %', type=input.float, minval=0.01)/100
stoploss_level = strategy.position_avg_price * (1 - stoploss_input)
takeprofit_level = strategy.position_avg_price * (1 + takeprofit_input)
//SL & TP Chart Plots
plot(v2 and stoploss_input and stoploss_level ? stoploss_level: na, color=color.red, style=plot.style_linebr, linewidth=2, title="Stoploss")
plot(v2 and takeprofit_input ? takeprofit_level: na, color=color.green, style=plot.style_linebr, linewidth=2, title="Profit")
// Bollinger Bands 1
length = 20
src1 = close
mult = 1.0
basis = sma(src1, length)
dev = mult * stdev(src1, length)
upper = basis + dev
lower = basis - dev
// Bollinger Bands 2
length2 = 17
src2 = close
mult2 = 1.0
basis2 = sma(src1, length2)
dev2 = mult2 * stdev(src2, length2)
upper2 = basis2 + dev2
lower2 = basis2 - dev2
// RSI
len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
// Strategy Parameters
RSILL= 42
RSIUL= 70
RSILL2= 42
RSIUL2= 76
rsiBuySignal = rsi > RSILL
rsiSellSignal = rsi > RSIUL
rsiBuySignal2 = rsi > RSILL2
rsiSellSignal2 = rsi > RSIUL2
BBBuySignal = src < lower
BBSellSignal = src > upper
BBBuySignal2 = src2 < lower2
BBSellSignal2 = src2 > upper2
// Strategy Long Signals
Buy = rsiBuySignal and BBBuySignal
Sell = rsiSellSignal and BBSellSignal
Buy2 = rsiBuySignal2 and BBBuySignal2
Sell2 = rsiSellSignal2 and BBSellSignal2
if v1 == true
strategy.entry("Long", strategy.long, when = Buy, alert_message = "v1 - Buy Signal!")
strategy.close("Long", when = Sell, alert_message = "v1 - Sell Signal!")
if v2 == true
strategy.entry("Long", strategy.long, when = Buy2, alert_message = "v2 - Buy Signal!")
strategy.close("Long", when = Sell2, alert_message = "v2 - Sell Signal!")
strategy.exit("Stoploss/TP", "Long", stop = stoploss_level, limit = takeprofit_level)