##평론
이 전략은
##전략 원칙
이 전략은 4가지 다른 기술적 지표를 사용하여 입점과 출점을 결정합니다. 구체적인 논리는 다음과 같습니다.
긴 진입 조건: 5일 EMA는 21일 EMA를 넘고, 50일 EMA는 200일 EMA를 넘고, BB %B는 설정된 과잉 매수 라인보다 크며, AO는 설정된 양성 값보다 크며, ADX는 설정된 값보다 크다.
짧은 입시 조건: 5일 EMA는 21일 EMA를 넘고, 50일 EMA는 200일 EMA를 넘고, BB %B는 설정된 과잉판매 라인보다 작고, AO는 설정된 마이너스 값보다 작고, ADX는 설정된 값보다 크다.
##우익 분석 이 전략은 트렌드 방향과 주식의 상대적 강도를 결정하기 위해 여러 지표를 결합하여 잘못된 파장을 효과적으로 필터 할 수 있습니다. 구체적인 장점은 다음과 같습니다.
ADX 지표는 쇼크 시장에서 빈번하게 열리는 것을 피하여 트렌드의 존재와 강도를 효과적으로 결정할 수 있습니다.
BB %B 지표는 개별 주가가 높은 수준이나 낮은 수준에 있는지 판단하여 높은 수준을 추구하고 낮은 판매 수준을 효과적으로 피할 수 있습니다.
AO 지표는 파업의 효과를 보장하기 위해 구매 중에 상대적으로 강한 추진력 지원이 있는지 여부를 결정합니다.
EMA 지표의 황금 십자/죽은 십자, 시장의 주요 방향 판단과 결합하여 트렌드에 반하는 포지션을 개설하는 것을 피합니다.
요약하자면, 이 전략은 거래 위험을 효과적으로 통제하고 시장에서 강한 주식을 추적할 수 있습니다.
##위험 분석 이 전략은 위험을 통제하기 위해 여러 지표를 사용하지만 여전히 특정 위험이 있습니다.
여러 지수 지표의 조합은 매개 변수 조정에 민감합니다. 부적절한 매개 변수 조합은 원하는 효과를 얻지 못할 수 있습니다.
과도하게 추진력을 추구하면 시장의 진정한 전환점을 놓칠 수 있습니다. 이익과 손실은 적시에 통제되어야합니다.
EMA와 같은 지표는 지연성이 있고 갑작스러운 사건의 영향을 시간적으로 반영할 수 없을 수 있습니다. MA 기간은 적절하게 단축되거나 다른 지표와 함께 사용해야합니다.
큰 갑작스러운 사건은 지표의 오차를 유발할 수 있습니다. 근본 분석이 결합되어야하며 필요한 경우 전략을 일시적으로 종료 할 수 있습니다.
## 최적화 방향 이 전략은 또한 몇 가지 측면에서 최적화 될 수 있습니다.
최적의 매개 변수 조합을 찾기 위해 기계 학습을 사용하세요.
CCI와 MACD와 같은 추세를 결정하는 다른 지표를 추가하여 판단의 정확성을 향상시키기 위해
단일 손실을 통제하기 위해 스톱 로스 전략을 추가합니다.
과도한 탐욕을 피하기 위해 대기 시간을 설정하십시오.
##결과
이 전략은
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //ADX + BB %B + AO + EMA strategy("ADX + BB %B + AO + EMA", overlay=true, initial_capital=10000) take_profit_perc = input(title="Take Profit %", type=input.integer, defval=10, minval=1, maxval=100) stop_loss_perc = input(title="Stop Loss %", type=input.integer, defval=5, minval=1, maxval=100) bb_overbought = input(title="BB %B Overbought", type=input.integer, defval=75, minval=1, maxval=100) bb_oversold = input(title="BB %B Oversold", type=input.integer, defval=25, minval=1, maxval=100) ao_value = input(title="Awesome Oscillator", type=input.integer, defval=2) adx_value = input(title="ADX", type=input.integer, defval=15) startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31) startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12) startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200) inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) ema5 = ema(close, 5) ema21 = ema(close, 21) ema50 = ema(close, 50) ema200 = ema(close, 200) //BB %B length = input(20, minval=1) src = input(close, title="Source") mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev bbr = (src - lower)/(upper - lower) //Awesome Oscillator ao = sma(hl2,5) - sma(hl2,34) // ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) long_strategy = ema5>ema21 and ema50>ema200 and bbr>(bb_overbought/100) and ao>ao_value and sig>adx_value short_strategy = ema5<ema21 and ema50<ema200 and bbr<(bb_oversold/100) and ao<-ao_value and sig>adx_value plot(ema5, color=color.blue) plot(ema21, color=color.aqua) plot(ema50, color=color.purple) plot(ema200, color=color.red) bgcolor(color=long_strategy ? color.green : na, transp=80) bgcolor(color=short_strategy ? color.purple : na, transp=80) if inDateRange and long_strategy strategy.entry("long", strategy.long) strategy.exit("exit", "long", stop=close*(100-stop_loss_perc)/100, limit=close*(100+take_profit_perc)/100) if inDateRange and short_strategy strategy.entry("short", strategy.short) strategy.exit("exit", "short", stop=close*(100+stop_loss_perc)/100, limit=close*(100-take_profit_perc)/100)