하이킨-아시 역전략

저자:차오장, 날짜: 2023-11-16 15:44:14
태그:

img

전반적인 설명

이 전략은 주로 개선된 하이킨-아시 촛불을 사용하여 가격의 반전 지점을 식별하고 중요한 트렌드 변화를 감지합니다. 단기 거래 전략에 속합니다. 전략은 HA를 사용하여 촛불의 개방, 높은, 낮은 및 폐쇄 가격을 계산하고 가격 관계에 따라 최종 색상을 결정합니다. 녹색 촛불은 상승하는 가격을 나타내고 빨간 촛불은 하락하는 가격을 나타냅니다. 전략은 녹색에서 빨간색으로 변경하고 빨간색에서 녹색으로 변경하는 동안 짧은 거래 신호로 HA 촛불 색의 변화를 사용합니다. 이것은 전형적인 반전 전략입니다.

전략 논리

전략의 핵심 논리는 가격 반전을 결정하기 위해 HA 촛불의 색상 변화를 감지하는 것입니다.

먼저, HA 데이터 또는 입력 매개 변수에 기반한 원본 데이터에서 오픈, 하위, 하위 및 폐쇄 가격을 얻습니다.

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close

haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open  

haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high

haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

그 다음 공식에 따라 현재 HA를 열고 닫습니다.

haclose = (haOpen + haHigh + haLow + haClose) / 4  

haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2

더 나아가 가장 높은 가격과 가장 낮은 가격을 얻습니다.

hahigh = max(haHigh, max(haopen, haclose))

halow = min(haLow, min(haopen, haclose))  

HA 촛불의 색을 공개/접근 관계에 따라 결정합니다.

hacolor = haclose > haopen ? color.green : color.red

반전 신호를 표시합니다. 막대기 사이의 HA 색의 변화에 따라요.

turnGreen = haclose > haopen and haclose[1] <= haopen[1]  

turnRed = haclose <= haopen and haclose[1] > haopen[1] 

신호가 발사되면 긴/단순 포지션을 개척합니다.

strategy.entry("long", 1, when=turnGreen)
  
strategy.entry("short", 0, when=turnRed) 

반대 신호에 따라 포지션을 닫습니다.

strategy.close("long", when=turnRed)

HA 촛불 색상의 변화를 감지함으로써 전략은 환전 거래를 위해 가격 반전 지점을 캡처합니다.

장점

이 전략의 주요 장점은 다음과 같습니다.

  1. 개선된 HA 촛불을 사용하면 소음을 필터하고 반전을 더 명확하게 식별합니다.

  2. HA 색상 변경에 기반한 간단한 논리, 이해하기 쉽고 구현하기 쉽습니다.

  3. 리버스 트레이딩은 수익을 위해 트렌드 변화를 빠르게 포착합니다.

  4. 다른 시장에 HA 촛불을 사용하거나 사용하지 않도록 사용자 정의 할 수 있습니다.

  5. 촛불의 화살표는 시각적으로 반전을 나타냅니다.

  6. 시간 프레임과 같은 매개 변수는 다양한 제품에 최적화 될 수 있습니다.

위험성

또한 몇 가지 위험 요소가 있습니다.

  1. 리버스 트레이딩은 함정에 취약할 수 있습니다. 신호는 안정성이 필요합니다.

  2. 다양한 시장에서 빈번한 위프사우가 발생할 수 있습니다.

  3. 트렌드 지속 기간을 결정할 수 없습니다. 트렌드를 뒤집고 계속할 수 있습니다.

  4. 단 하나의 신호가 잘못된 신호로 인해 다른 신호와 결합해야 합니다.

  5. 최적화를 통해 과도한 부착을 피해야 합니다.

해결책:

  1. 신뢰할 수 있는 신호를 위해 매개 변수를 최적화합니다.

  2. 유행 필터를 추가하여 시장의 범위를 피합니다.

  3. 트레이드당 손실을 제어하기 위해 스톱 로스를 사용합니다.

  4. 거짓 신호를 피하기 위해 신호를 다른 표시기와 확인합니다.

  5. 매개 변수를 최적화하고 과도한 부착을 방지하기 위해 철저한 백테스트.

개선

이 전략은 다음과 같은 방법으로 개선될 수 있습니다.

  1. 다양한 제품에 대한 시간 프레임을 최적화합니다.

  2. 제품 특성에 따라 HA 촛불 사용량을 테스트합니다.

  3. 트렌드 필터를 추가해서 시장의 변화율을 줄일 수 있습니다.

  4. 시장의 변동성에 따라 동적 정지를 구현합니다.

  5. 신호를 추가 지표로 확인해

  6. 리스크 관리에 기반한 포지션 크기를 포함합니다.

  7. 다품질 중재 거래로 확장

  8. 재검사 결과를 바탕으로 파라미터를 조정하여 과장착치를 방지합니다.

결론

이 전략은 향상된 HA 촛불의 장점을 활용하여 HA 색상의 변화를 통해 잠재적 인 반전 지점을 발견합니다. 일반 촛불과 비교하면 HA는 더 깨끗한 신호를 위해 잡음을 필터합니다. 이 전략은 라이브 트레이딩에 사용하기 쉬운 간단하고 직관적인 방식으로 반전 거래 논리를 구현합니다. 그러나 반전 거래는 포획 위험에 직면하고 더 높은 신호 정확성을 위해 최적화되어야합니다. 트렌드 분석 및 기타 요소와 결합하여 더 완전한 시스템을 형성 할 수 있습니다. 전반적으로이 전략은 HA 데이터를 사용하여 반전을 식별하는 접근 방식을 제공하며 강력한 반전 거래 전략을 위해 확장 할 수 있습니다.


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

//@version=4
strategy("Heikin-Ashi Change Strategy", overlay=true)

UseHAcandles    = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

// Calculation HA Values 
haopen = 0.0
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))

// HA colors
hacolor = haclose > haopen ? color.green : color.red

// Signals
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]

// Plotting
bgcolor(hacolor)

plotshape(turnGreen, style=shape.arrowup, location=location.belowbar, color=color.green)
plotshape(turnRed, style=shape.arrowdown, location=location.abovebar, color=color.red)

// Alerts
alertcondition(turnGreen, "ha_green", "ha_green")
alertcondition(turnRed, "ha_red", "ha_red")

strategy.entry("long", 1, when=turnGreen)
//strategy.entry("short", 0, when=turnRed)
strategy.close("long", when=turnRed)


더 많은