Эта стратегия генерирует торговые сигналы, основанные на полосах Боллинджера и двойных скользящих средних, с фильтрацией тренда для достижения высокого уровня выигрыша и хорошего соотношения прибыли и убытка.
Используйте верхние, средние и нижние полосы Болинджеровского диапазона для генерации длинного / короткого сигнала. Продайте, когда цена касается верхней полосы, покупайте, когда касается нижней полосы.
Для определения направления тренда используйте 20-периодные среднесрочные и 60-периодные долгосрочные скользящие средние.
Динамически настраивайте позицию стоп-лосса на основе ширины полосы Боллинджера. Когда ширина больше 0,5%, остановите потерю на нижней полосе. Когда меньше 0,5%, уменьшите стоп-лосс до половины нижнего диапазона полосы.
Условия входа: нарушение нижней полосы в качестве сигнала покупки во время восходящего тренда.
Условия выхода: получение прибыли при достижении верхней полосы или короткой MA на длинных.
Условия стоп-лосса: Стоп-аут, когда цена превышает динамический диапазон нижней полосы на длинных. Стоп-аут, когда цена превышает динамический диапазон верхней полосы на коротких.
Использование двойных МА для определения тренда помогает отфильтровать шум от рынков, не связанных с трендом или диапазоном.
Средняя полоса BB обеспечивает поддержку/сопротивление, верхняя/нижняя полоса служит динамическим уровнем стоп-лосса для контроля риска.
Регулирование диапазона остановки по размеру BB снижает вероятность остановки, сохраняя при этом разумную остановку.
Торговля в направлении тренда приводит к более высокому уровню выигрыша.
Двойные МА могут часто приводить к ложным прорывам, упуская поворотные моменты тренда.
ББ могут быть обескуражены на нестабильных рынках, могут уменьшить частоту торговли.
Стоп-лосс вблизи уровня поддержки/сопротивления, склонный к выводу.
Не в состоянии эффективно использовать краткосрочные отзывы, может сократить период хранения.
Оптимизировать периоды MA, чтобы найти наиболее подходящие условия на рынке.
Оптимизируйте параметр мультипликатора BB, чтобы сбалансировать стоп-лосс.
Добавить другие показатели для многофакторного подтверждения для улучшения качества сигнала.
Включить объем/импульс для подтверждения тенденции, избегать расхождений.
Оптимизация управления деньгами, например, фиксированная дробная, фиксированная стоп-лосс для контроля риска одной сделки.
Управление ценовым шоком, например, большие пробелы за одну ночь.
Это общая надежная стратегия, использующая двойные MAs для направления тренда и BB для поддержки / сопротивления и динамических остановок. Существуют ограничения, такие как ложные сигналы тренда и остановки слишком близко. Дальнейшие оптимизации могут быть сделаны по системе MA, стратегии остановки потери, управлению деньгами и т. Д., Чтобы увеличить надежность в различных рыночных условиях. В целом отличная стратегия для начинающих с ее высоким показателем выигрыша, хорошим профилем риска-вознаграждения и простой, но эффективной логикой.
/*backtest start: 2022-10-18 00:00:00 end: 2023-10-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="yuthavithi BB Scalper 2 strategy", overlay=true) len = input(20, minval=1, title="Length") multiplier = input(4, minval=1, title="multiplier") trendTimeFrame = input(60, minval=1, title="Trend Time Frame") useTrendFilter = input(true, type=bool, title = "Use Trend Filter") src = input(close, title="Source") out = sma(src, len) //plot(out, title="SMA", color=blue) stdOut = stdev(close, len) bbUpper = out + stdOut * multiplier bbLower = out - stdOut * multiplier bbUpper2 = out + stdOut * (multiplier / 2) bbLower2 = out - stdOut * (multiplier / 2) bbUpperX2 = out + stdOut * multiplier * 2 bbLowerX2 = out - stdOut * multiplier * 2 bbWidth = (bbUpper - bbLower) / out closeLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), close) smaLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), sma(close,20)) //plot(smaLongTerm, color=red) trendUp = useTrendFilter ? (closeLongTerm > smaLongTerm) : true trendDown = useTrendFilter? (closeLongTerm < smaLongTerm) : true bearish = ((cross(close,bbUpper2) == 1) or (cross(close,out) == 1)) and (close[1] > close) and trendDown bullish = ((cross(close,bbLower2) == 1) or (cross(close,out) == 1)) and (close[1] < close) and trendUp closeBuy = (high[1] > bbUpper[1]) and (close < bbUpper) and (close < open) and trendUp closeSell = (((low[1] < bbLower[1]) and (close > bbLower)) or ((low[2] < bbLower[2]) and (close[1] > bbLower[1]))) and (close > open) and trendDown cutLossBuy = iff(bbWidth > 0.005, (low < bbLower) and (low[1] > bbLower[1]) and trendUp, (low < bbLowerX2) and (low[1] > bbLowerX2[1]) and trendUp) cutLossSell = iff(bbWidth > 0.005, (high > bbUpper) and (high[1] < bbUpper[1]) and trendDown, (high > bbUpperX2) and (high[1] < bbUpperX2[1]) and trendDown) if (bullish) strategy.entry("Buy", strategy.long, comment="Buy") if (bearish) strategy.entry("Sell", strategy.short, comment="Sell") strategy.close("Buy", closeBuy or cutLossBuy) strategy.close("Sell", closeSell or cutLossSell)