하이킨-아시 비리페인팅 트렌드 확인 전략

HA NRTS TCS EQTY MGMT
생성 날짜: 2025-03-28 17:35:26 마지막으로 수정됨: 2025-03-28 17:35:26
복사: 2 클릭수: 416
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

하이킨-아시 비리페인팅 트렌드 확인 전략 하이킨-아시 비리페인팅 트렌드 확인 전략

개요

이것은 하이칸아시 (Heikin-Ashi) 비 재배열 트렌드 확인 전략으로, 전통적인 거래 시각 (TradingView) 에서 하이칸아시 전략이 존재하는 재배열 문제를 해결하기 위한 것이다. 하이칸아시 (Heikin-Ashi) 와 여러 가지 트렌드 확인 메커니즘을 수동으로 계산함으로써, 이 전략은 보다 신뢰할 수 있고 투명한 거래 방법을 제공한다.

전략 원칙

이 전략의 핵심은 다음과 같은 세 가지 핵심 단계로 이루어져 있습니다.

  1. 수작업으로 하인카시을 다시 그리지 않는 계산:

    • 독특한 수식을 사용하여 종료 가격, 개시 가격, 최고 가격 및 최저 가격을 계산합니다.
    • 다음 K 라인 업데이트에서 역사적 가격 데이터가 안정적으로 유지되도록 보장합니다.
    • 전통적인 하이칸아시 전략에서 흔히 볼 수 있는 문제점들을 피하는 것
  2. 다중 추세는 다음과 같이 확인됩니다:

    • 트렌드 방향을 확인하기 위한 연속적인 다곤 을 요구합니다.
    • “오래오래 들어오는 신호: 을 X 뿌리로 다”
    • 공허 입구 신호: X-뿌리 상향이 필요함
    • 복수의 확인을 통해 가짜 신호를 필터링하여 전략의 신뢰도를 높여라
  3. 유연한 거래 방식:

    • 전통적 트렌드 모델에 대한 지지
    • 트렌드 리버스 옵션 제공
    • 맞춤형 거래 모드 (모든, 단지 더, 단지 빈)

전략적 이점

  1. 재배치 문제를 제거: 역사 데이터는 안정적으로 유지되고, 재검토 결과는 실 디스크 실행과 매우 일치합니다.
  2. 다수의 트렌드 확인: 가짜 신호를 연속적으로 필터링하여 불필요한 거래를 줄입니다.
  3. 높이는 사용자 정의:
    • 유연한 출입 및 출입 값 설정
    • 트렌드 따라와 반전 거래를 지원합니다.
    • 가시화 가능한 표준 K선, 명확한 가시성을 제공합니다
  4. 중기 및 장기 거래에 적합하다: 특히 스윙 거래와 트렌드 추적에 적합하다.

전략적 위험

  1. 성능 제한:

    • 높은 주파수 스칼핑 거래에 적합하지 않습니다.
    • 추세가 보이지 않는 동요 시장에서 더 나쁜 성과가 발생할 수 있습니다.
    • 다른 시간 프레임에 대한 변수를 조정해야 합니다.
  2. 잠재적인 위험 통제:

    • 적당한 제약 장치의 설정
    • 다양한 시장 조건에서 지속적인 최적화 매개 변수
    • 다른 기술 지표와 함께 상호 검증

전략 최적화 방향

  1. 변수 동적 조정:

    • 적응형 입출장 마이너스 알고리즘 개발
    • 시장의 변동성에 따라 실시간으로 연쇄 수를 조정
    • 매개변수 선택을 최적화하기 위한 머신 러닝 알고리즘 소개
  2. 위험 관리 강화:

    • 통합 동적 위치 관리
    • 연관성 필터를 추가합니다.
    • 더 똑똑한 손해 방지 장치 개발
  3. 지표 조합:

    • 다른 기술 지표와 함께 (RSI, MACD 등)
    • 다중 지표 확인 시스템 개발
    • 신호의 정확성과 신뢰성을 높이기 위해

요약하다

하이칸아시피아 트렌드 재배치 확인 전략은 혁신적인 계산과 다중 트렌드 확인 방법을 통해 거래자에게 더 신뢰할 수 있고 투명한 거래 도구를 제공합니다. 이 전략은 재배치 문제를 제거하고, 가짜 신호를 필터링하고, 유연한 거래 모드를 제공함으로써, 양적 거래의 기술 혁신 잠재력을 보여줍니다.

전략 소스 코드
/*backtest
start: 2025-03-15 00:00:00
end: 2025-03-27 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
//© PineIndicators

strategy("Heikin-Ashi Non-Repainting Strategy [PineIndicators]", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_boxes_count=500, max_labels_count=500, max_lines_count=500, commission_value=0.01, process_orders_on_close=true, slippage= 2, behind_chart=false)

//====================================
// INPUTS
//====================================
// Number of consecutive candles required for entry and exit
openThreshold = input.int(title="Number of Candles for Entry", defval=2, minval=1)
exitThreshold = input.int(title="Number of Candles for Exit", defval=2, minval=1)
// Trade mode selection: "Long & Short", "Only Long", or "Only Short"
tradeMode = input.string(title="Trade Mode", defval="Only Long", options=["Long & Short", "Only Long", "Only Short"])
// Option to invert the trading logic (bullish signals become short signals, and vice versa)
invertTrades = input.bool(title="Invert Trading Logic (Long ↔ Short)", defval=false)
// Option to hide the standard candles (bodies only)
hideStandard = input.bool(title="Hide Standard Candles", defval=true)
// Heikin-Ashi transparency is fixed (0 = fully opaque)
heikinTransparency = 0

//====================================
// HIDE STANDARD CANDLES
//====================================
// Hide the body of the standard candles by setting them to 100% transparent.
// Note: The wicks of the standard candles cannot be hidden via code.
barcolor(hideStandard ? color.new(color.black, 100) : na)

//====================================
// HEIKIN-ASHI CALCULATION
//====================================
// Calculate Heikin-Ashi values manually
haClose = (open + high + low + close) / 4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(high, math.max(haOpen, haClose))
haLow  = math.min(low, math.min(haOpen, haClose))

// Define colors for Heikin-Ashi candles (using fixed transparency)
bullColor = color.new(#0097a7, heikinTransparency)
bearColor = color.new(#ff195f, heikinTransparency)

//====================================
// PLOT HEIKIN-ASHI CANDLES
//====================================
// Plot the manually calculated Heikin-Ashi candles over the chart.
// The candle body, wicks, and borders will be colored based on whether the candle is bullish or bearish.
plotcandle(haOpen, haHigh, haLow, haClose, title="Heikin-Ashi", 
     color       = haClose >= haOpen ? bullColor : bearColor,
     wickcolor   = haClose >= haOpen ? bullColor : bearColor,
     bordercolor = haClose >= haOpen ? bullColor : bearColor,
     force_overlay = true)

//====================================
// COUNT CONSECUTIVE TREND CANDLES
//====================================
// Count the number of consecutive bullish or bearish Heikin-Ashi candles.
var int bullishCount = 0
var int bearishCount = 0

if haClose > haOpen
    bullishCount := bullishCount + 1
    bearishCount := 0
else if haClose < haOpen
    bearishCount := bearishCount + 1
    bullishCount := 0
else
    bullishCount := 0
    bearishCount := 0

//====================================
// DEFINE ENTRY & EXIT SIGNALS
//====================================
// The signals are based on the number of consecutive trend candles.
// In normal logic: bullish candles trigger a long entry and bearish candles trigger a short entry.
// If invertTrades is enabled, the signals are swapped.
var bool longEntrySignal  = false
var bool shortEntrySignal = false
var bool exitLongSignal   = false
var bool exitShortSignal  = false

if not invertTrades
    longEntrySignal  := bullishCount >= openThreshold
    shortEntrySignal := bearishCount >= openThreshold
    exitLongSignal   := bearishCount >= exitThreshold
    exitShortSignal  := bullishCount >= exitThreshold
else
    // Inverted logic: bullish candles trigger short entries and bearish candles trigger long entries.
    longEntrySignal  := bearishCount >= openThreshold
    shortEntrySignal := bullishCount >= openThreshold
    exitLongSignal   := bullishCount >= exitThreshold
    exitShortSignal  := bearishCount >= exitThreshold

//====================================
// APPLY TRADE MODE RESTRICTIONS
//====================================
// If the user selects "Only Long", disable short signals (and vice versa).
if tradeMode == "Only Long"
    shortEntrySignal := false
    exitShortSignal  := false
else if tradeMode == "Only Short"
    longEntrySignal  := false
    exitLongSignal   := false

//====================================
// TRADING STRATEGY LOGIC
//====================================
// Execute trades based on the calculated signals.

// If a long position is open:
if strategy.position_size > 0
    if shortEntrySignal
        strategy.close("Long", comment="Reverse Long")
        strategy.entry("Short", strategy.short, comment="Enter Short")
    else if exitLongSignal
        strategy.close("Long", comment="Exit Long")

// If a short position is open:
if strategy.position_size < 0
    if longEntrySignal
        strategy.close("Short", comment="Reverse Short")
        strategy.entry("Long", strategy.long, comment="Enter Long")
    else if exitShortSignal
        strategy.close("Short", comment="Exit Short")

// If no position is open:
if strategy.position_size == 0
    if longEntrySignal
        strategy.entry("Long", strategy.long, comment="Enter Long")
    else if shortEntrySignal
        strategy.entry("Short", strategy.short, comment="Enter Short")