BB21_SMA200 Тенденция после стратегии

Автор:Чао Чжан, Дата: 2023-11-16 11:04:42
Тэги:

img


Обзор

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

Логика стратегии

  1. Вычислить SMA200 как экспоненциальную скользящую среднюю для определения основного тренда
  2. Вычислить полосы Боллинджера, включая верхнюю полосу, среднюю полосу и нижнюю полосу, и заполнить цвет в виде диапазона прибыли.
  3. Если верхняя и нижняя полосы выше SMA200, это указывает на рост.
  4. Когда цена пробивается через среднюю полосу полос Боллинджера вверх, идти долго
  5. Когда цена проходит через нижнюю полосу вниз, закрыть частичную позицию
  6. Когда цена пересекает порог ниже SMA200, это указывает на изменение основного тренда, закрыть все позиции
  7. Установите точку остановки потери для предотвращения чрезмерных потерь
  8. Расчет размера сделки на основе капитала счета и допустимого риска

Предпосылка этой стратегии для определения тренда заключается в том, что полосы Боллинджера должны быть полностью выше SMA200, и длиться только при наличии четкого восходящего тренда.

Анализ преимуществ

  1. Используйте полосы Боллинджера вместо одного индикатора для определения четкой тенденции
  2. SMA200 определяет направление основного тренда, избегает ненужной торговли на рынке с диапазоном
  3. Частичная остановка потерь вследствие трендовых ходов
  4. Своевременное прекращение потерь в ключевых точках для минимизации потерь
  5. Расчет размера сделки вводит управление рисками для предотвращения чрезмерных потерь на одной сделке

Анализ рисков

  1. Сигналы прорыва, генерируемые из полос Боллинджера, могут иметь относительно высокие ложные сигналы.
  2. Необходимо оптимизировать точки частичной остановки для предотвращения преждевременной остановки.
  3. Если точка остановки потерь слишком плоская, то остановка потерь может быть задействована слишком часто.
  4. Период SMA необходимо протестировать и оптимизировать для сбалансирования отставания и чувствительности
  5. Метод расчета размера сделки может потребоваться оптимизировать для предотвращения чрезмерного размера на одних сделках

Эти риски могут быть уменьшены путем тщательного тестирования параметров полос Боллинджера, оптимизации стратегии частичного стоп-лосса, корректировки периода SMA и внедрения более научных методов управления рисками.

Руководство по оптимизации

  1. Тестировать и оптимизировать параметры Bollinger Bands для снижения ложных сигналов
  2. Исследование, как установить правильные частичные точки остановки потери
  3. Испытать оптимальный период SMA
  4. Подумайте об адаптивных остановках вместо фиксированных точек остановки потери
  5. Исследование с использованием размеров позиций на основе волатильности для более научного расчета размера торгов
  6. Бактэсты с затратами на торговлю для моделирования реальной торговли
  7. Подумайте о сочетании с другими показателями для повышения надежности стратегии

Заключение

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


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © mohanee

//@version=4
strategy(title="BB9_MA200_Strategy", overlay=true, pyramiding=1,     default_qty_type=strategy.cash,  initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 


var stopLossVal=0.00

//variables BEGIN
smaLength=input(200,title="MA Length")
bbLength=input(21,title="BB Length")  

bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")


stopLoss = input(title="Stop Loss%", defval=5, minval=1)

riskCapital = input(title="Risk % of capital  == Based on this trade size is claculated    numberOfShares = (AvailableCapital*risk/100) / stopLossPoints", defval=10, minval=1)


sma200=ema(close,smaLength)

plot(sma200, title="SMA 200", color=color.orange)


//bollinger calculation
basis = sma(bbsrc, bbLength)
dev = mult * stdev(bbsrc, bbLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=color.teal, transp=95)


strategy.initial_capital = 50000

//Entry---

strategy.entry(id="LE", comment="LE capital="+tostring(strategy.initial_capital + strategy.netprofit ,"######.##"), qty=( (strategy.initial_capital + strategy.netprofit ) * riskCapital / 100)/(close*stopLoss/100) , long=true,  when=strategy.position_size<1 and upperBand>sma200 and lowerBand > sma200 and crossover(close, basis) )     //  // aroonOsc<0  //(strategy.initial_capital * 0.10)/close


barcolor(color=strategy.position_size>=1? color.blue: na)

//partial Exit
tpVal=strategy.position_size>1 ? strategy.position_avg_price * (1+(stopLoss/100) ) : 0.00
strategy.close(id="LE", comment="Partial points="+tostring(close - strategy.position_avg_price, "####.##"),  qty_percent=30 , when=abs(strategy.position_size)>=1 and close>tpVal and crossunder(lowerBand, sma200)   )   //close<ema55 and rsi5Val<20 //ema34<ema55


//close All on stop loss
//stoploss
stopLossVal:=   strategy.position_size>1 ? strategy.position_avg_price * (1-(stopLoss/100) ) : 0.00

strategy.close_all( comment="SL Exit points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and close < stopLossVal  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89//

strategy.close_all( comment="BB9 X SMA200 points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and  crossunder(basis, sma200)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89
    

Больше