
꿀벌 트렌드 ATR 수평 돌파 전략은 ATR 지표와 브린 띠를 기반으로 거래 신호를 생성하는 중간 단선 돌파 전략이다. 그것은 주로 일정 폭의 상하 ATR 통로 내의 동향 변화를 모니터링하고, 하하 트레일 또는 상하 트레일 때 트렌드 필터와 함께 거래 결정을 내린다.
이 전략은 크게 세 부분으로 구성됩니다.
ATR 통로: ATR 지표를 통해 주가 변동의 범위를 계산하고 그 범위에 따라 통로를 형성한다. 통로 폭은 ATR 룩백 주기 및 ATR 디바이저 인자에 의해 제어된다.
꿀벌선: 주가 중심선을 기준선으로 한다. 중심선은 계산 방법: 어제의 높은 낮은 수확의 평균이다.
트렌드 필터: 오차 동향 지표로 가격 트렌드를 계산하고 pricesig ‘>’: pricesig[3] 상승 추세로, pricesig ‘<’ pricesig[3] 시간이 흐르면 아래로 니다.
특정 거래 신호 생성 논리는 다음과 같습니다.
다중 신호: pricesig > pricesig[3] 가격이 하락할 때 더 많이 하는 것;
빈 머리 신호: pricesig < pricesig[3] 그리고 가격이 궤도에 올랐을 때 공백을 다.
다른 경우에는 거래가 없습니다.
이 전략은 동시에 거래 위험을 제어하기 위해 스톱 스톱 손실 조건을 설정합니다.
꿀벌 트렌드 ATR 돌파 전략은 다음과 같은 장점이 있습니다.
ATR 지표를 사용하여 주가 변동의 범위를 계산하여 시장 변화를 동적으로 포착합니다.
중앙선과 함께 주가가 가로로 올라가는 것을 평가하고, 통로로 돌파점을 설정하여 상하를 쫓는 것을 피하십시오.
동향을 판단하기 위해 동향이 다른 동향을 판단하기 위해 동향이 다른 동향을 판단하기 위해 동향이 다른 동향을 판단하기 위해 동향이 다른 동향을 판단하기 위해 동향이 다른 동향을 판단하기 위해
단위 리스크를 제어하기 위해 스톱 로즈 조건을 설정합니다.
정책 매개 변수 설정은 유연하며, 통로 폭, ATR 주기 등의 요인을 최적화하는 전략을 조정할 수 있다.
이 전략에는 위험도 있습니다.
중단계 거래는 변동성이 많고, 위험성이 상대적으로 높으며, 신중한 자금 관리가 필요합니다.
ATR 통로의 범위 계산은 주가가 급격하게 변동할 때 정확하지 않을 수 있으며, 이는 잘못된 거래로 이어질 수 있습니다.
오차 운동 지표는 트렌드 판단에도 오류를 범할 수 있으며, 이는 거래 신호의 정확성에 영향을 미칩니다.
위와 같은 위험에는 ATR 통로 매개 변수를 적절하게 조정하고 트렌드 필터링 신호 주기를 증가시키는 등의 방법으로 최적화 및 개선할 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
ATR 채널의 폭을 조정하고, 파라미터atrDivisor를 낮추거나 높이고, 채널 범위를 압축하거나 확대한다.
ATR 룩백 사이클 파라미터를 조정하여 채널의 최근 변동에 대한 민감도를 변경한다.
트렌드 신호 주기 변수를 조정하여 다공간 트렌드 판단의 정확도를 향상시킵니다.
다른 지표와 결합하여 다중 인자 검증을 통해 거래 신호의 질을 향상시킵니다.
스티드포드 손실 알고리즘을 최적화하고, 위험 관리를 개선한다.
꿀벌 트렌드 ATR 돌파 전략은 주식 가격 변동 범위 분석과 트렌드 판단 지표를 통합하여 시장의 핫 포인트를 포착하는 동시에 거래 위험을 제어하는 유연성이 높고 적응력이 강한 수치화 전략입니다. 이 전략은 매개 변수 조정과 신호 최적화를 통해 계속 개선 할 수 있으며 광범위한 사용 전망을 가지고 있습니다.
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000)
// === STRATEGY RELATED INPUTS AND LOGIC ===
PivottimeFrame = input(title="Pivot Timeframe", defval="D")
ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)", defval="D")
len = input(title="ATR lookback (Lower = bands more responsive to recent price action)", defval=13)
myatr = atr(len)
dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1])
atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2)
pivot0 = (high[1] + low[1] + close[1]) / 3
pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0)
upperband1 = (dailyatr / atrdiv) + pivot
lowerband1 = pivot - (dailyatr / atrdiv)
middleband = pivot
// == TREND CALC ===
i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually
i2=input(20, "Slow Period", minval=1)
i3=input(5, "Fast Period", minval=1)
i4=input(3, "Smoothing Period", minval=1)
i5=input(4, "Signal Period", minval=1)
i6=input(50, "Extreme Value", minval=1)
hiDif = high - high[1]
loDif = low[1] - low
uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0
dDM = loDif > hiDif and loDif > 0 ? loDif : 0
ATR = rma(tr(true), i1)
DIu = 100 * rma(uDM, i1) / ATR
DId = 100 * rma(dDM, i1) / ATR
HLM2 = DIu - DId
DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4)
signal = ema(DTI, i5)
// === RISK MANAGEMENT INPUTS ===
inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0)
inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3])
exitLong = (high > middleband)
strategy.entry(id = "Long", long = true, when = enterLong)
strategy.close(id = "Long", when = exitLong)
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3])
exitShort = (low < middleband)
strategy.entry(id = "Short", long = false, when = enterShort)
strategy.close(id = "Short", when = exitShort)
// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss)
// === CHART OVERLAY ===
plot(upperband1, color=#C10C00, linewidth=3)
plot(lowerband1, color=#23E019, linewidth=3)
plot(middleband, color=#00E2E2, linewidth=3)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)