이 전략은 사용자가 EMA와 정의된 비율 채널을 선택하는 것을 기반으로합니다. 가격이 상단 이하일 때 길고 가격이 하단 위에있을 때 짧습니다. 가격이 트렌드를 시작하고 채널 밖에서 움직이면 손실을 방지하기 위해 모든 포지션이 폐쇄됩니다.
트렌딩 시장을 위해 자매
200주기 EMA를 기준 EMA로 계산합니다.
사용자 정의 비율을 기준으로 상부 및 하부 대역을 계산합니다. 상단역 = EMA * (1 + %) 하위 범주 = EMA * (1 - %)
채널 범위를 나타내기 위해 20주기 볼링거 밴드를 계산합니다.
닫기 가격이 아래쪽에서 아래쪽 볼링거 밴드를 넘을 때 장거리. 닫기 가격이 위에서 상위 볼링거 밴드를 넘을 때 단거리.
과도한 손실을 피하기 위해 정지 손실을 계산하기 위해 ATR을 사용하십시오.
만약 가격이 정의된 비율 채널 범위를 벗어난다면, 추가 손실을 방지하기 위해 모든 포지션을 닫습니다.
EMA 기본 라인은 트렌드 반전 지점을 더 잘 파악하는 데 도움이 됩니다.
% 채널은 과도한 거래를 피하기 위해 합리적인 거래 범위를 설정합니다.
볼링거 대역은 진입 시기를 돕기 위해 지원 및 저항 수준을 제공합니다.
ATR 트레일링 스톱은 트레이드 리스크별로 효과적으로 제어하기 위해 스톱 로스를 동적으로 설정합니다.
가격이 채널을 넘을 때 모든 포지션을 닫으면 손실을 빠르게 제어할 수 있습니다.
사용자 정의 가능한 매개 변수는 다른 시장 조건에 따라 유연합니다.
너무 넓은 채널 범위는 트렌드를 놓치거나 손실을 멈추는 것을 지연시킬 수 있습니다.
너무 좁은 채널 범위는 과잉 거래로 인해 거래 비용을 증가시킬 수 있습니다.
부적절한 볼링거 밴드 매개 변수 설정으로 인해 거래 기회를 놓칠 수 있습니다.
너무 느슨하게 설정된 스톱 로즈 문턱은 거래당 과도한 손실로 이어질 수 있습니다.
최적의 거래 범위를 찾기 위해 매개 변수를 최적화해야 합니다.
가장 적합한 이동 평균을 찾기 위해 다른 EMA 기간을 테스트하십시오.
최적 채널 범위를 결정하기 위해 % 채널 매개 변수를 최적화합니다.
변동성을 더 잘 파악하기 위해 볼링거 밴드 기간을 조정합니다.
ATR 기간과 멀티플리케이터를 조정하여 스톱 로스 전략을 더 정밀하게 조정합니다.
EMA보다 높거나, EMA보다 낮거나 단축을 테스트해 보세요. 이 승률을 향상시킬 수 있는지 보세요.
추세 지표를 포함해서 조기 퇴출이 필요한지 결정합니다.
이 전략은 이동 평균, 채널, 변동성 및 기타의 장점을 결합하여 비교적 안정적인 범위 거래 시스템을 만듭니다. 핵심은 위험과 보상을 균형 잡기 위해 각 특정 시장에 가장 적합한 매개 변수 설정을 찾는 것입니다. 미래의 개선은 규칙과 매개 변수를 최적화하거나 트렌드 전략과 결합하여 계속 할 수 있습니다.
/*backtest start: 2023-11-05 00:00:00 end: 2023-11-12 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="[mdeacey] EMA% Channel + BB Range Strategy", shorttitle="[mdeacey] EMA% Channel + BB Range Strategy", overlay=true) //EMA 200 len = input(title="EMA Length", type=input.integer, defval=200) srce = input(title="EMA Source", type=input.source, defval=close) ema1= ema(srce,len) percent = input(title="Channel Percentage (%)", type=input.float, defval= 1) valuee = (percent*ema1)/100 upperbande = ema1 + valuee lowerbande = ema1 - valuee plot(ema1, title='EMA200', color=color.gray, linewidth=1, style=plot.style_line ) plot(upperbande, title='EMA Upper Band', color=color.gray, linewidth=1, style=plot.style_line ) plot(lowerbande, title='EMA Lower Band', color=color.gray, linewidth=1, style=plot.style_line ) length = input(20, minval=2) src = input(close, title="Close price") mult = input(2.0, minval=0.001, maxval=50) MA2 = sma(src, length) dev = mult * stdev(src, length) upper = MA2 + dev lower = MA2 - dev signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white barcolor(color=signalColor) upperBand = plot(upper, color=color.gray, linewidth=1) lowerBand = plot(lower, color=color.gray, linewidth=1) fill(upperBand, lowerBand,color=color.gray) strategy.entry("Long",true,when = crossover(close,lower) and close <upperbande and close>lowerbande) strategy.close("Long",when = crossunder(close,lowerbande)) strategy.entry("Short",false,when = crossunder(close,upper) and close <upperbande and close>lowerbande) strategy.close("Short",when = crossover(close,upperbande)) //Inputs atrPeriod = input(defval=14, title="ATR Period",group='ATR Settings', type=input.integer) // Adjust this to change the ATR calculation length multiplierPeriod = input(defval=1.75, title="ATR Multiplier Period",group='ATR Settings', type=input.float)// Adjust this to change the distance between your candles and the line //ATR Calculation pine_rma(x, y) => alpha = y sum = 0.0 sum := (x + (alpha - 1) * nz(sum[1])) / alpha true_range() => max(high - low, max(abs(high - close[1]), abs(low - close[1]))) //Long SL plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1) // Short SL plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1) strategy.exit("Exit Long","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod) ) strategy.exit("eExit Short","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod) )