Это средняя стратегия реверсии, основанная на канале Болинджеровских полос. Она длинна, когда цена проходит ниже нижней полосы Болинджеровских полос. Стоп-лосс устанавливается на нижней границе полосы прорыва. Целью прибыли является верхняя полоса Болинджеровских полос.
Стратегия использует 20-периодный канал полос Боллинджера, который состоит из средней полосы, верхней полосы и нижней полосы. Средняя полоса - это 20-периодная простая скользящая средняя. Верхняя полоса - это средняя полоса плюс 2 стандартных отклонения. Нижняя полоса - это средняя полоса минус 2 стандартных отклонения.
Когда цена проходит ниже нижней полосы, это указывает на то, что цена вступила в состояние перепродажи. Стратегия будет длинной в этот момент. После входа в позицию, стоп-лосс устанавливается на нижней границе входа, а цель прибыли - верхняя полоса. Таким образом, стратегия направлена на захват процесса реверсии от перепродажи до средней, чтобы получить прибыль.
Преимущества этой стратегии:
Риски этой стратегии включают:
Стратегия может быть улучшена в следующих аспектах:
Стратегия имеет четкую логику и в некоторой степени торгуется. Однако ее эффективность в суждении о перекупленности / перепродаже с помощью полос Боллинджера ограничена, и она не может совершенно определить тенденцию. Кроме того, механизм остановки потерь и получения прибыли нуждается в улучшении. В будущем его можно оптимизировать, выбрав более точные индикаторы, настраивая параметры и улучшая логику выхода для повышения прибыльности.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h 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/ // © Ronsword //@version=5 strategy("bb 2ND target", overlay=true) // STEP 1. Create inputs that configure the backtest's date range useDateFilter = input.bool(true, title="Filter Date Range of Backtest", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 1997"), 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("1 Sept 2023"), 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.") // STEP 2. See if the current bar falls inside the date range inTradeWindow = true // Bollinger Bands inputs length = input.int(20, title="Bollinger Bands Length") mult = input.float(2.0, title="Multiplier") src = input(close, title="Source") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // EMA Settings ema20 = ta.ema(close, 20) plot(ema20, color=color.blue, title="20 EMA") // Entry condition longEntryCondition = ta.crossover(close, lower) // Define stop loss level as the low of the entry bar var float stopLossPrice = na if longEntryCondition stopLossPrice := low // Top Bollinger Band itself is set as the target topBandTarget = upper // Enter long position when conditions are met if inTradeWindow and longEntryCondition strategy.entry("Long", strategy.long, qty=1) // Set profit targets strategy.exit("ProfitTarget2", from_entry="Long", limit=topBandTarget) // Set stop loss strategy.exit("StopLoss", stop=stopLossPrice) // Plot Bollinger Bands with the same gray color plot(upper, color=color.gray, title="Upper Bollinger Band") plot(lower, color=color.gray, title="Lower Bollinger Band")