
이 전략은 부린띠 지표에 기반한 짧은 선 반전 거래 전략이다. 이 전략은 평균선, 표준차와 부린띠 통로를 결합하여, 가격의 비정상적으로 분산된 기회를 찾아 반전 거래를 한다.
평균선과 표준차를 계산한다. sma () 함수를 사용하여 sma 평균선을 계산한다. stdev () 함수를 사용하여 표준차를 계산한다.
평균선과 표준차를 기준으로 브린带上下轨. 上轨线是价格+标准差*1, 하도선은 가격-표준차*1。
가격의 상승과 하락이 불규칙한 경우, 우리는 반전 거래를 결정합니다.
구체적으로, 가격이 하단 라인보다 낮으면, 우리는 다단 거래; 가격이 상단 라인보다 높으면, 우리는 하단 거래한다.
부린 벨트 통로를 이용해서 가격의 비정상을 판단하여 반전 거래의 근거를 제공하였다.
일률적 인 요소와 결합하여 일부 노이즈 거래를 효과적으로 필터링 할 수 있습니다.
표준 차등의 도입은 부린을 더 역동적으로 접근하게 하고, 가격의 비정상을 더 잘 판단할 수 있게 해준다.
이 전략은 소규모의 철수와 일정 수준의 안정성을 가지고 있다.
브린 벨트 지표는 가격의 특이한 상황을 완전히 판단할 수 없으며, 가격이 가짜 돌파구가 발생할 수 있다.
거래 빈도가 너무 높을 수 있으므로 적절한 매개 변수를 조정하여 거래 빈도를 제어하는 것이 좋습니다.
브린 띠를 뚫고 내려오는 신호는 시간이 오래 걸릴 수 있으며, 더 나은 역전 효과를 얻기 위해 파라미터를 적절히 조정해야 한다.
위험을 통제하기 위해 적절하게 스톱을 도입하십시오.
이 전략은 부린 띠 지표에 의해 가격 이상성을 판단하고, 평균선과 표준 차차 파라미터와 함께 역전 거래한다. 어느 정도 안정성이 있다. 우리는 추가로 파라미터 최적화, 보조 요소의 도입, 스톱 로즈 관리 및 포지션 제어 등의 수단으로 전략의 최대 철수를 감소시키고 안정성을 높이는 것이 필요하다.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("BCE Version of EMA, SMA Mean Reversion", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Inputs
st_yr_inp = input(defval=2017, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sma_lookback = input(defval=100, title="Lookback Period For SMA")
ema_lookback = input(defval=10, title="Lookback Period For EMA")
long_diff_perc = input(defval=6, title="Percentage Deviation From SMA to go Long")/100
short_diff_perc = input(defval=20, title="Percentage Deviation From SMA to go Short")/100
ema_filter_bars = input(defval=4, title="The number of bars the EMA must rise/fall")
lng_allwd = input(defval=true, title="Allow Longs?")
srt_allwd = input(defval=true, title="Allow Shorts?")
use_stop = input(defval=true, title="Use Stoploss?")
stop_perc = input(defval=30, title="Stop Loss Percentage")/100
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
can_trade = time >= start and time <= end
// Indicators Setup
sma = sma(close, sma_lookback)
ema = ema(close, ema_lookback)
// Strategy Calcuations
close_stdev = stdev(close, sma_lookback)
sd1_upper = close + (close_stdev * 1)
sd1_lower = close - (close_stdev * 1)
close_diff = (close - sma) / sma
// Entries and Exits
longCondition = close > sma and open > sma
if (time >= start and time <= end)
if (longCondition)
strategy.entry("Long", strategy.long)
if use_stop
stop_price = close * (1 - stop_perc)
strategy.order("Long Stoploss", false, stop=stop_price)
shortCondition = close < sma and open < sma
if (shortCondition)
// strategy.entry("Short", strategy.short)
// if use_stop
// stop_price = close * (1 + stop_perc)
// strategy.order("Short Stoploss", true, stop=stop_price)
//if (time >= start)
strategy.close("Long", when=close < sma and open < sma)
//strategy.cancel("Long Stoploss", when=sma < sma[1])
// strategy.close("Short", when=close > sma and open > sma)
//strategy.cancel("Short Stoploss", when=close_diff<=0)
// Plotting
sma_col = sma > sma[1] ? green : red
ema_fill = close_diff <= -long_diff_perc ? lime : close_diff >= short_diff_perc ? maroon : aqua
p_sma = plot(sma, color=sma_col, linewidth=3)
p_ema = plot(ema, color=black, linewidth=2)
p_sd1 = plot(sd1_upper, color=black, linewidth=1, transp=85)
p_sd2 = plot(sd1_lower, color=black, linewidth=1, transp=85)
fill(p_sd1, p_sd2, title='STDEV Fill', color=silver, transp=80)
fill(p_sma, p_ema, title='EMA > Mean Percentage', color=ema_fill, transp=80)