가격 패턴에 기반한 더블 바텀 및 더블 탑 자동 거래 전략


생성 날짜: 2024-12-12 17:29:41 마지막으로 수정됨: 2024-12-12 17:29:41
복사: 0 클릭수: 383
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

가격 패턴에 기반한 더블 바텀 및 더블 탑 자동 거래 전략

개요

이것은 차트 가격 형태를 인식하는 것에 기반한 자동화 거래 전략이다. 이 전략은 주로 시장에서 쌍보단과 쌍탑 형태를 식별하여 거래 결정을 내리고, 특정 시간 주기 설정하여 가격 움직임을 모니터링하고, 조건형 형태가 나타나면 자동으로 거래 지시를 실행한다. 이 전략은 지그자그 지표를 사용하여 이러한 중요한 가격 형태를 시각적으로 표시하여 거래자가 시장 움직임을 직관적으로 이해할 수 있도록 돕는다.

전략 원칙

이 전략의 핵심 논리는 기술 분석 방법을 통해 시장의 양쪽 바닥과 양쪽 꼭대기 형태를 식별하는 것입니다. 구체적으로 구현하는 데는 다음과 같은 몇 가지 중요한 단계가 포함됩니다:

  1. 매개 변수 설정으로 모니터링 사이클 (기본 100 사이클) 및 회귀 사이클 (기본 100 사이클)
  2. 기술 분석 함수를 이용한 계산주기의 최고 가격과 최저 가격
  3. 현재 가격과 역사 가격을 비교하여 쌍 바닥 또는 쌍 꼭대기 형태가 형성되는지 판단합니다.
  4. 형태를 확인한 후, 시스템은 자동으로 해당 거래 지시를 실행합니다.
  5. 가격 돌파에 기반한 평점 조건이 설정되어 적시적으로 상쇄 또는 수익을 보장합니다.

전략적 이점

  1. 높은 수준의 자동화: 전략은 자동으로 시장 형태를 인식하고 거래를 수행하며 인간의 개입을 줄일 수 있습니다.
  2. 시각화 효과: 시장을 분석하고 확인하는 데 도움이 되는 지그자그 라인을 통해 시장 형태를 명확하게 보여줍니다.
  3. 매개 변수 유연성: 다른 시장 조건에 따라 모니터링 주기와 회귀 기간을 조정할 수 있습니다.
  4. 리스크 관리가 완성된: 명확한 출입 및 출입 조건이 포함되어 리스크 관리를 돕습니다.
  5. 적응력: 특히 짧은 주기를 가진 시장에서 작동하기 적합하다.

전략적 위험

  1. 가짜 돌파구 위험: 시장에서 잘못된 거래 신호로 이어지는 가짜 쌍둥이 형태가 발생할 수 있습니다.
  2. 슬라이드 리스크: 빠른 시장에서 큰 슬라이드 손실이 발생할 수 있습니다.
  3. 매개 변수 의존성: 정책의 성능은 매개 변수 설정의 타당성에 크게 의존한다
  4. 시장 환경 의존성: 흔들리는 시장에서 잘 작동하지만 추세 시장에서 자주 잘못된 신호를 일으킬 수 있습니다.
  5. 기술적인 제한: 기술적인 지표의 뒤처짐으로 인해 최고의 진출 기회를 놓칠 수 있다.

전략 최적화 방향

  1. 추가 기술 지표 도입: RSI, MACD 등과 결합하여 가짜 신호를 필터링 할 수 있습니다.
  2. 최적화 변수 선택: 모니터링 사이클과 회귀 기간 동안의 변수 설정을 최적화하기 위해 회귀 데이터를 권장합니다.
  3. 풍력 조절을 개선: 동적 손해 중지 기능과 이동 차단 기능을 추가하고, 재무 관리 능력을 향상
  4. 시장 환경 인식: 트렌드 인식 기능을 추가하여 다양한 시장 환경에 따라 전략 매개 변수를 조정합니다.
  5. 거래량 관리를 최적화: 시장의 변동성에 따라 거래 규모를 조정

요약하다

이것은 합리적이고 실용적으로 설계된 자동화 거래 전략이다. 시장의 쌍방향 형태를 정확하게 식별하여, 유연한 파라미터 설정과 완벽한 풍력 제어 메커니즘과 결합하여, 시장의 단기 반전 기회를 효과적으로 포착할 수 있다. 약간의 위험이 있지만, 지속적인 최적화와 개선으로, 이 전략은 신뢰할 수 있는 거래 도구가 될 전망이다.

전략 소스 코드
/*backtest
start: 2024-12-04 00:00:00
end: 2024-12-11 00:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Double Bottom and Top Hunter", overlay=true)

// Parametreler
length = input.int(100, title="Dönem Uzunluğu", defval=100)
lookback = input.int(100, title="Geriye Dönük Kontrol Süresi", defval=100)

// İkili Dip ve Tepe Bulma
low1 = ta.lowest(low, length)
high1 = ta.highest(high, length)

low2 = ta.valuewhen(low == low1, low, 1)
high2 = ta.valuewhen(high == high1, high, 1)

doubleBottom = (low == low1 and ta.lowest(low, lookback) == low1 and low == low2)
doubleTop = (high == high1 and ta.highest(high, lookback) == high1 and high == high2)

// İşlem Açma Koşulları
longCondition = doubleBottom
shortCondition = doubleTop

// İşlem Kapatma Koşulları
closeLongCondition = ta.highest(high, length) > high1 and low < low1
closeShortCondition = ta.lowest(low, length) < low1 and high > high1

// İşlem Açma
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=1)

// İşlem Kapatma
if (closeLongCondition)
    strategy.close("Long")

if (closeShortCondition)
    strategy.close("Short")

// Grafik Üzerinde Göstergeler ve ZigZag Çizimi
plotshape(series=longCondition, title="İkili Dip Bulundu", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(series=shortCondition, title="İkili Tepe Bulundu", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")

// var line zigzagLine = na
// if (doubleBottom or doubleTop)
//     zigzagLine := line.new(x1=bar_index[1], y1=na, x2=bar_index, y2=doubleBottom ? low : high, color=doubleBottom ? color.green : color.red, width=2)

// Zigzag çizgisini sürekli güncelleme
// line.set_xy1(zigzagLine, bar_index[1], na)
// line.set_xy2(zigzagLine, bar_index, doubleBottom ? low : high)