이 전략은 볼링거 밴드와 이동 평균을 결합하여 트레이딩 시스템을 따르는 트렌드를 설계합니다. 가격이 볼링거 밴드의 상단 밴드를 통과하고 하단 밴드가 SMA200보다 높을 때 길게 이동하고, 가격이 하단 밴드를 통과 할 때 부분 포지션을 닫고, 가격이 SMA200 이하로 넘어가면 모두 빠져 나갑니다. 전략은 트렌드를 따라 트렌드가 변할 때 시간적으로 손실을 줄입니다.
트렌드를 식별하는 이 전략의 전제는 볼링거 밴드가 SMA200보다 완전히 높아야 하며, 명확한 상승 추세가 나타날 때만 장기화되어야 한다는 것입니다. 하락 추세가 올 때, 위험은 부분적 스톱 손실과 완전한 스톱 손실에 의해 제어됩니다.
이러한 위험은 볼링거 밴드 매개 변수를 신중하게 테스트하고, 부분 스톱 로스 전략을 최적화하고, SMA 기간을 조정하고, 보다 과학적인 위험 관리 방법을 도입함으로써 감소될 수 있습니다.
이 전략은 볼링거 밴드와 SMA를 통합하여 비교적 완전한 트렌드 추적 시스템을 설계합니다. 트렌드 존재를 식별하는 데 신뢰할 수 있으며 강력한 트렌드 추적 기능을 가지고 있습니다. 지속적으로 스톱 로스 전략을 최적화하고 신호 오류를 줄이고 과학적 리스크 관리 기술을 도입함으로써 이 전략은 라이브 거래에서 추적 할 수있는 가치있는 시스템이 될 수 있습니다. 양적 거래 전략 설계에 여러 지표를 결합하는 접근 방식을 제공합니다.
/*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