상품에 대한 CCI의 확장된 적응형 하부 어업 거래 전략

저자:차오장, 날짜: 2023-12-21 14:30:03
태그:

img

전반적인 설명

이 전략은 재화 채널 지표 (CCI) 를 기반으로 하며, 트렌드 반전 시기를 결정하기 위해 동적 적응적 진입 수준을 사용하며, 수익을 차단하기 위해 후속 스톱 손실을 사용한다. 전략 이름인 '상품에 대한 확장된 적응적 CCI 바닥 낚시 거래 전략'은 이 전략의 주요 측면을 포착한다.

전략 논리

핵심 지표는 CCI이며, 과잉판매 구역을 발견하기 위해 사용되며, 따라서 트렌드 역전 기회를 암시합니다. 또한, CCI 과잉판매 구역의 범위는 다른 도구와 시장 환경에 따라 다릅니다. 따라서이 전략은 CCI 구매 입시 수준을 동적으로 설정하기 위해 특정 룩백 기간 동안 가장 낮은 CCI 수준을 조사하는 "장거리" 접근 방식을 취합니다. 지난 40 일 동안 가장 낮은 CCI가 -90 이상이라면 -90이 새로운 과잉판매 구역 문턱이됩니다. 이러한 적응성 설계는 다른 시장 조건에 동적으로 적합하도록 허용하며, 강력한 하향 추세 동안보다 보수적인 입시를 추구하고 범위 제한 시장에서 더 공격적인 입시를 추구합니다.

특히, 기본 CCI 구매 신호 수준은 -145이다. 전략은 다음 40 일, 50 일 등 다양한 룩백 날에 가장 낮은 CCI 판독을 검사합니다. 가장 낮은 CCI가 -90과 같은 다음 레벨보다 높다면 -90이 새로운 엔트리 레벨이됩니다. 그리고 계속, 엔트리 레벨은 -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70 사이에 동적으로 전환 할 수 있습니다. CCI가 해당 수준 이하로 떨어지면 긴 엔트리 신호가 유발됩니다.

또한, 후속 스톱 손실은 수익을 잠금하기 위해 사용되며, 스톱 레벨은 가격과 함께 상승합니다.

이점 분석

  • CCI를 이용해서 과잉 판매 지역을 파악하는 명확하고 신뢰할 수 있는 접근법
  • 엔트리 레벨의 적응성 설계는 전략이 자동으로 다른 시장 환경에 적응 할 수 있도록합니다.
  • 후속 스톱 손실은 수익을 효과적으로 차단하는 데 도움이됩니다.

고정 엔트리 레벨에 비해 이러한 동적 디자인은 최적화된 엔트리 타이밍을 가능하게 한다. 강한 하락 추세 동안 더 보수적인 엔트리를 추구하면 위험을 줄이고, 범위 제한 시장에서 더 낮은 엔트리는 더 많은 기회를 포착 할 수 있다. 이는 전략의 적응력을 향상시킨다.

CCI 자체는 과잉 구매/ 과잉 판매 수준을 식별하는 명확하고 신뢰할 수 있는 지표입니다. CCI를 기반으로 트렌드 반전을 판단하는 논리가 입증되었습니다. 동적인 입시 디자인과 결합하여이 전략의 전반적인 이점은 중요합니다.

위험 분석

  • CCI는 완벽하지 않으며 몇 가지 지체 속성을 가지고 있습니다. 가격이 CCI 판독에서 빠르게 벗어날 때 판단이 실패 할 수 있습니다.
  • 진입 수준의 동적 조정 또한 시장 환경의 변화에 완벽하게 대응할 수 없습니다. 조정의 지연은 최적의 진입 시기를 놓치는 결과를 초래할 수 있습니다.
  • 상품 시장의 높은 변동성. 잘못된 스톱 로스 설정은 엄청난 손실로 이어질 수 있습니다.

트렌드 역전 지점을 탐지하는 논리는 몇 가지 지연 속성을 가지고 있습니다. 갑작스러운 가격 급증이나 붕괴 시 엔트리 타이밍이 정확하지 않을 수 있습니다. 또한 적응 메커니즘은 현재 시장 환경에 완벽하게 맞지 않을 수 있으며 최적의 엔트리가 될 수 없습니다. 마지막으로, 상품 시장의 높은 변동은 정지 손실 매개 변수를 올바르게 설정하지 않으면 큰 손실을 초래할 수 있습니다.

개선 방향

  • CCI 매개 변수 및 평형 기간을 최적화하고 다른 CCI 길이의 테스트 효과
  • 입력 레벨의 더 많은 유형을 테스트, 더 나은 기본 값 또는 적응 디자인을 찾아
  • 다른 스톱 로스 매개 변수를 테스트하고, 상품 시장의 높은 변동성 특성에 맞게 스톱 로스 범위를 적절히 높입니다.

주로 CCI 자체, 입시 수준의 설계 및 스톱 로스 매개 변수를 개선 할 수 있습니다. 특정 도구에 대한 최적 매개 변수를 정확하게 찾는 것은 전략 성과를 향상시킬 수 있습니다.

요약

이 전략은 과잉 구매/ 과잉 판매 구역을 발견하기 위해 CCI를 사용하는 논리와 트렌드 반전을 포착하기 위해 동적 적응력 엔트리 레벨 디자인을 결합합니다. 고정 매개 변수와 비교하면 동적 엔트리 레벨은 적응력을 크게 향상시킵니다. 후속 스톱 손실과 함께 이 엔트리 반전 캡처 모델은 강력한 추진력으로 기회를 포착하고 적시에 손실을 줄일 수 있습니다. 올바르게 구성된 매개 변수와 함께이 전략은 지속가능성과 견고함을 보여줍니다. 더 높은 안정성과 수익성을 달성하기 위해 CCI 매개 변수 및 엔트리 레벨 규칙을 지속적으로 최적화함으로써 추가 개선이 가능합니다.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true)

// Inputs
cciLength = input(20, title="CCI Period")
defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level")
adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days")
adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days")
adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days")
adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days")
adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days")
adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days")
adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days")
adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days")
lookback40 = input(40, title="Lookback Period for -90 Level")
lookback50 = input(50, title="Lookback Period for -70 Level")
lookback60 = input(60, title="Lookback Period for -50 Level")
lookback90 = input(90, title="Lookback Period for -4 Level")
lookback120 = input(120, title="Lookback Period for 0 Level")
lookback140 = input(140, title="Lookback Period for +25 Level")
lookback160 = input(160, title="Lookback Period for +50 Level")
lookback180 = input(180, title="Lookback Period for +70 Level")

// Indicator Calculation
cci = ta.cci(close, cciLength)

// Determine adaptive entry level based on lookback periods
var float entryLevel = defaultCCIEntryOversold // Initialize with the default level
if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90
    entryLevel := adaptiveCCIEntryLevel90
if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days
    entryLevel := adaptiveCCIEntryLevel70_50Days
if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50
    entryLevel := adaptiveCCIEntryLevel50
if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4
    entryLevel := adaptiveCCIEntryLevel4
if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0
    entryLevel := adaptiveCCIEntryLevel0
if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25
    entryLevel := adaptiveCCIEntryLevel25
if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days
    entryLevel := adaptiveCCIEntryLevel50_160Days
if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days
    entryLevel := adaptiveCCIEntryLevel70_180Days

// Entry Condition
longCondition = cci < entryLevel

// Entry and Exit
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1)
    alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar)

trailOffset = input(10.0, title="Trailing Stop Offset in USD")
strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close)
if (close < entryLevel - trailOffset)
    alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar)

// Plotting
plot(series=cci, color=color.purple, title="CCI")
hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level")
hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)")
hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)")
hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)")
hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)")
hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)")
hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)")
hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)")
hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")


더 많은