
이 전략은 부린 띠와 이동 평균을 결합하여 트렌드를 추적하는 거래 시스템을 설계했습니다. 가격이 부린 띠를 뚫고 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