
이 전략은 ATR을 계산하고 ATR 필터링 인자를 설정하여 무의미한 지점을 필터링하여 실제로 중요한 지점을 거래하는 전통적인 지점 역전 전략에 기반하여 최적화됩니다.
이 전략의 핵심 논리는 중요한 고점 지지를 계산하는 것입니다. 고점 지지를 계산하는 주요 단계는 다음과 같습니다.
낮은 지점 지점을 계산하는 논리는 이와 비슷하다.
중요한 지지를 얻은 후, 가격이 중요한 고지지를 뚫었을 때, 하락; 가격이 중요한 낮은 지지를 뚫었을 때, 더 많이 한다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략의 주요 위험은 다음과 같습니다.
위와 같은 위험을 통제하기 위해, 다음과 같은 측면에서 최적화할 수 있습니다:
이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.
다른 지표와 결합하여 시장의 트렌드 상태를 판단하여 역거래가 트렌드 상황에서 나타나지 않도록하십시오. MACD, KDJ 등의 지표를 추가하는 것을 고려할 수 있습니다.
기계 학습 알고리즘을 추가하고, 자동으로 최적화 파라미터를 . 유전 알고리즘, 랜덤 포레스트 등의 방법을 사용하여 최적의 파라미트 조합을 찾을 수 있다.
양적 데이터를 추가하여 훈련하여 최적의 ATR 범위를 찾습니다. 역사 데이터를 추가하면 파라미터 선택의 정확도가 향상됩니다.
다른 전략 조합과 함께 사용하는 것을 고려할 수 있으며, 다양한 유형의 전략과 결합하여 장점을 얻을 수 있습니다. 예를 들어, 트렌드 추적 전략 조합과 함께, 정리에서 반전, 트렌드에서 진행.
이 중요한 지점 역전 전략은 ATR을 계산하고 필터 인자를 설정하는 방법을 통해 무의미한 작은 변동성을 필터링하여 중요한 지점에서만 역전 거래를 할 수 있으며 전략의 수익 수준을 효과적으로 향상시킬 수 있습니다. 또한 특정 파라미터 최적화 난이도를 증가시킵니다. ATR 범위, 스톱 스톱 비율 등 여러 가지 측면을 종합적으로 고려하여 최적의 파라미터를 찾는 것이 필요합니다. 파라미터가 최적화되면 이 전략은 효율적이고 안정적인 단선 거래 전략이 될 수 있습니다.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)
// Inputs
leftBars = input(4, title = 'PP Left Bars')
rightBars = input(2, title = 'PP Right Bars')
atr_length = input(14, title = 'ATR Length')
atr_mult = input(0.1, title = 'ATR Mult')
// Pivot High Significant Function
pivotHighSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (high[right] < high[right+i] + atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (high[right] < high[i] + atr * atr_mult)
pp_ok := false
pp_ok ? high[right] : na
// Pivot Low Significant Function
pivotLowSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (low[right] > low[right+i] - atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (low[right] > low[i] - atr * atr_mult)
pp_ok := false
pp_ok ? low[right] : na
swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
if (le)
strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
if (se)
strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)