다단계 비재도장 렌코 시뮬레이션 추세 반전 양적 거래 전략

RENKO RSI SMA EMA VOL BRICK BACKTESTING REPAINTING
생성 날짜: 2025-03-04 10:26:05 마지막으로 수정됨: 2025-03-04 10:26:05
복사: 0 클릭수: 547
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다단계 비재도장 렌코 시뮬레이션 추세 반전 양적 거래 전략 다단계 비재도장 렌코 시뮬레이션 추세 반전 양적 거래 전략

전략 개요

이 전략은 렌코 차트를 모방한 재배치되지 않은 양적 거래 시스템으로, 표준 시간 차트에 렌코 블록의 행동을 모방하여 전통적인 렌코 전략의 재배치 문제를 해결합니다. 이 전략은 고정 크기의 가격 블록을 사용하여 시장 소음을 필터링하고, 의미있는 가격 변화에만 집중하며, 역사적 신호를 변경하지 않도록합니다. 이 전략은 특히 트렌드 추적 및 트렌드 역전 거래에 적합하며, 블록의 방향 변화를 여러 단계로 비교하여 거래 결정을 내립니다.

주요 특징:

  • 시간표에서 렌코 효과를 재배치하지 않는다
  • 블록의 방향 변화를 인식하는 트렌드 반전
  • 다단계 인증 메커니즘으로 신호 품질을 향상시킵니다.
  • 덩어리 형성 과정을 보여주는 그래픽
  • 안정적인 피드백 결과와 실시간 거래 성과 일치

전략 원칙

이 전략의 핵심 원칙은 표준 시간표에서 렌코 블록의 기능을 구현하는 동시에 전통적인 렌코 차트에서 다시 그리는 문제를 해결하는 것입니다. 구체적인 작동 원리는 다음과 같습니다:

  1. 매개 변수 구성 및 초기화:

    • brickSize덩어리 크기를 정의하고, 가격이 얼마나 움직여야 새로운 덩어리가 형성되는지를 결정합니다.
    • renkoPrice이 글은 RENKO 블록의 마지막 종결값을 저장하는 것입니다.
    • prevRenkoPrice다음의 레코 블록의 가격 수준을 저장합니다.
    • brickDir: 블록의 방향을 추적하라 ((1= 상승, -1= 하락)
    • newBrick펄 로그: 새로운 덩어리가 형성되는지 표시하는 덩어리
    • brickStart: 현재 블록의 시작을 저장하는 기둥 인덱스
  2. 렌코 블록을 재배치하지 않는 식별:

    • 시스템에서는 확인 기둥에서만 계산을 수행하여 역사 데이터가 재 계산되지 않도록합니다.
    • 현재 가격과 이전 렌코 블록 레벨의 차이를 계산합니다.
    • 가격 차이는 블록의 크기에 도달하거나 그 크기를 초과하면 새로운 렌코 블록이 형성됩니다.
    • 가격변동이 수용할 수 있는 블록의 수에 따라 블록 가격 수준을 업데이트합니다.
    • 새로운 벽돌이 형성되는 것을 표시하기 위해 방향을 업데이트하고 로그인을 설정합니다.
  3. 시간 차트 상의 렌코 시각화:

    • 그래픽 요소를 사용하여 표준 차트에 Renko 스타일의 블록을 그리기
    • 녹색 상자는 덩어리를 나타냅니다.
    • 빨간색 칸은 하락세를 나타냅니다.
    • 덩어리들은 결코 변하거나 사라지지 않습니다.
  4. 다단계 추세 전환 판단:

    • 전략은 현재 블록의 방향을 확인하는 것뿐만 아니라 여러 개의 역사 블록을 비교합니다.
    • 연속적인 블록의 방향 변화를 검증하여 실제 트렌드 반전을 확인합니다.

전략적 이점

코드의 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 보여준다:

  1. 다시 그리는 문제 해결:

    • 전통적인 렌코 (Renko) 전략은 재검토에서 좋은 성적을 거두지만, 실판에서는 실패하는 경우가 많으며, 이는 재화 문제 때문이라고 한다.
    • 이 전략은 표준 시간표에서 Renko의 행동을 모의하여 블록이 생성되면 변경되지 않도록합니다.
    • 이것은 리드 디스크의 성능과 더 가까운 신뢰성 있는 결과를 제공합니다.
  2. 노이즈 필터링과 명확한 트렌드 식별:

    • 렌코 차트는 자체적으로 작은 변동을 필터링하는 특성을 가지고 있으며, 가격이 기본 금액을 이동할 때만 새로운 블록이 형성됩니다.
    • 이것은 명확한 가격 동향을 식별하고 가짜 신호를 줄이는 데 도움이 됩니다.
    • 높은 변동성 시장에서 의미있는 가격 변화를 찾는 데 적합합니다.
  3. 다단계 신호 확인:

    • 전략은 단일 방향의 변화를 확인하는 것뿐만 아니라 여러 개의 연속 블록의 방향을 확인합니다.
    • 비교해서brickDir[brickSize]현재와brickDir그리고 역사적인 가격 수준 관계
    • 다단계 검증 메커니즘은 오류 신호를 크게 줄였습니다.
  4. 거래 기반을 시각화:

    • 가격 구조를 직관적으로 보여주기 위해 차트에 색상 블록을 그리기
    • 녹색과 빨간색 상자는 시장의 방향을 명확하게 표시합니다.
    • 시각적 도움말은 거래자가 시장 행동을 더 잘 이해할 수 있도록 도와줍니다.
  5. 유연성과 사용자 정의:

    • 블록 크기는 사용자에 의해 조정 될 수 있으며, 다른 시장과 시간 프레임에 따라 최적화 전략을 허용합니다.
    • 더 작은 블록 크기는 더 자주 거래 신호를 생성하여 단기 거래에 적합합니다.
    • 더 큰 덩어리 크기는 더 많은 소음을 필터링하여 중기 및 장기 트렌드 추적에 적합합니다.

전략적 위험

이 전략은 재배치 문제를 해결했지만, 다음과 같은 위험 요소들이 여전히 존재합니다.

  1. 신호 지연 위험:

    • 전략은 확인 기둥에서만 계산을 수행하기 때문에 트레이드 실행은 전통적인 렌코 차트보다 조금 늦을 수 있습니다.
    • 빠르게 움직이는 시장에서, 입점점에서는 최고의 가격을 놓칠 수 있습니다.
    • 해결 방법: 다른 확인 지표와 함께 고려할 수 있습니다. 또는 시점과 정확성을 균형을 맞추기 위해 블록 크기를 조정할 수 있습니다.
  2. 덩어리 크기와 선택의 위험:

    • 너무 작은 블록은 거래 신호를 너무 많이 생성하여 거래 비용을 증가시키고 과도한 거래로 이어질 수 있습니다.
    • 너무 큰 블록은 중요한 시장 전환점을 놓칠 수 있습니다.
    • 해결 방법: 목표 자산의 변동성과 거래 시간 프레임에 따라 블록 크기를 최적화하십시오.
  3. 트렌드 반전, 가짜 신호 위험:

    • 다단계 검증을 사용함에도 불구하고 급격한 변동 시장에서 가짜 브레이크가 발생할 수 있습니다.
    • 가격이 실제 트렌드가 형성되기 전에 블록 경계를 여러 번 넘을 수 있습니다.
    • 해결 방법: 추가 필터를 추가하는 것을 고려하십시오. 예를 들어, 거래량 확인 또는 동력 지표
  4. 탈퇴 위험:

    • 트렌드 반전 전략은 강세를 보이는 시장에서 지속적인 손실을 초래할 수 있습니다.
    • 반전 신호가 조기 발생하여 역전 거래가 발생할 수 있습니다.
    • 해결 방법: 적절한 스포드 메커니즘과 포지션 관리 전략을 구현
  5. 리소스 리스크 계산:

    • 많은 덩어리를 그리는 것은 특히 긴 시간 프레임과 대용량 데이터 세트에서 많은 자원을 소모할 수 있습니다.
    • 코드는 최대 500개의 상자를 제한하고, 이는 어떤 경우에는 충분하지 않을 수 있습니다.
    • 해결 방법: 코드 효율성을 최적화하거나 N 블록만 표시하는 것을 고려하십시오.

전략 최적화 방향

코드 분석을 바탕으로 이 전략의 몇 가지 주요 최적화 방향은 다음과 같습니다.

  1. 동적 블록 크기를 최적화:

    • 현재 전략은 고정된 블록 크기를 사용하지만 시장의 변동성에 기반한 동적 블록 크기로 개선할 수 있습니다.
    • 낮은 변동 동안 작은 블록을 사용 하 고 높은 변동 동안 큰 블록을 사용
    • 이것은 다양한 시장 조건에 대한 전략의 적응력을 향상시킬 것입니다.
    • 구현 방법: ATR를 사용하여 블록 크기를 동적으로 조정할 수 있습니다.
  2. 트랜잭션 필터 추가:

    • 트렌드 반전 신호를 확인하기 위해 트랜스량 또는 다른 운동 지표를 결합
    • 낮은 유동성 또는 극심한 변동성 조건에서 거래를 피하십시오.
    • 구현 방법: RSI, 거래량 돌파구 또는 MACD에 기반한 추가 확인 조건을 추가
  3. 제약 및 수익 제도의 개선:

    • 현 전략은 지각 중지 및 목표 수익률을 높일 수 있는 지각 반전 시만 평준화됩니다.
    • 블록 크기의 배수에 따라 동적 스톱 로즈 설정
    • 구현 방법: 추가strategy.exit()명령어, ATR 또는 블록 크기에 기반한 스톱포인트 설정
  4. 다단계 검증을 최적화:

    • 현재 정책은 고정된 사용brickSize역사의 조각들을 비교하기 위한 배수
    • 최적의 역사 비교 단계의 수
    • 다른 시장과 시간 프레임에 대한 회귀를 통해 최적의 배치를 찾아내는 것
    • 구현 방법: 단계 수를 파라미탈화하여 사용자 정의 검증 깊이를 허용합니다.
  5. 가시화 및 알림 시스템 개선:

    • 트렌드 라인과 핵심 레벨을 추가합니다.
    • 블록 형성 및 거래 신호에 대한 경고 기능을 추가합니다.
    • 현재 트렌드의 강도와 지속시간을 표시합니다.
    • 구현 방법: 사용label.new()그리고alert()사용자 경험을 향상시키는 기능

요약하다

다단계 비 재배치 렌코 시뮬레이션 트렌드 역전화 거래 전략은 전통적인 렌코 전략의 재배치 문제를 성공적으로 해결하여 거래자가 표준 시간 차트에 렌코 논리를 적용할 수 있게 하면서도 역사적 신호의 안정성을 유지할 수 있습니다. 이 전략은 다단계 검증 메커니즘을 통해 트렌드 역전을 인식하여 신호 품질을 향상시키고 시장 구조를 그래픽 방식으로 직관적으로 보여줍니다.

전략의 주요 장점은 재배치 문제를 해결하고, 시장 소음을 필터링하고, 다단계 신호 검증 및 직관적인 그래픽 표현에 있다. 그러나, 신호 지연, 블록 크기 선택 및 가짜 신호 등의 위험은 여전히 존재한다. 향후에는 동적 블록 크기를 구현하고, 거래 필터를 추가하고, 손실 차단 장치를 개선하고, 검증 단계를 최적화하고, 시각 시스템을 강화하여 더욱 최적화할 수 있다.

이 방식은 렌코 차트의 장점을 결합하고 단점을 피하며, 트렌드 추적 및 트렌드 역전 거래 전략에 특히 적합하며, 트레이더에게 신뢰할 수있는 기술 분석 도구를 제공하며, 재측정 정확성을 유지하면서 안정적인 실적 실적을 제공합니다.

전략 소스 코드
//@version=5
strategy("Non-Repainting Renko Emulation Strategy [PineIndicators]", overlay=true, calc_on_every_tick=false, max_boxes_count = 500, max_labels_count = 500, max_lines_count = 500, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.01, slippage = 2)

// Parameter: Brick-Größe (z.B. 10 Punkte)
brickSize = input.float(3.0, "Brick Size", step=0.1)

// Persistente Variablen
var float renkoPrice     = na    // Aktueller Renko-Level (Schlusswert des letzten Bricks)
var float prevRenkoPrice = na    // Vorheriger Renko-Level (für Box-Berechnung)
var int   brickDir       = 0     // 1 = Aufwärts, -1 = Abwärts
var bool  newBrick       = false // Signalisiert, dass ein neuer Brick abgeschlossen wurde
var int   brickStart     = bar_index  // Beginn des aktuellen Bricks (x-Achse)

// Berechnungen nur auf abgeschlossenen Candles
if barstate.isconfirmed
    newBrick := false
    // Initialisierung: Beim ersten Candle setzen wir den Renko-Level
    if na(renkoPrice)
        renkoPrice := close
        brickStart := bar_index
    // Berechne die Differenz zum letzten Renko-Level
    diff = close - renkoPrice
    // Prüfen, ob der Unterschied mindestens der Brick-Größe entspricht
    if math.abs(diff) >= brickSize
        // Anzahl kompletter Bricks (kann > 1 sein)
        numBricks = math.floor(math.abs(diff) / brickSize)
        prevRenkoPrice := renkoPrice
        // Aktualisieren des Renko-Levels
        renkoPrice := renkoPrice + numBricks * brickSize * math.sign(diff)
        // Brick-Richtung (konvertiere math.sign-Ergebnis in int)
        brickDir := int(math.sign(diff))
        newBrick := true

        // Bestimme die obere und untere Grenze des abgeschlossenen Bricks:
        lowLevel  = brickDir == 1 ? prevRenkoPrice : renkoPrice
        highLevel = brickDir == 1 ? renkoPrice     : prevRenkoPrice

        // Setze den Start für den nächsten Brick
        brickStart := bar_index


// Handelslogik: Einstieg/Ausstieg nur, wenn ein neuer Brick abgeschlossen wurde
if barstate.isconfirmed and newBrick
    // Bei Aufwärts-Brick: Long-Signal
    if brickDir[brickSize] < brickDir and renkoPrice[brickSize] < renkoPrice[brickSize*2] and renkoPrice < renkoPrice[brickSize] and renkoPrice[brickSize*2] < renkoPrice[brickSize*3] and strategy.position_size <= 0
        // Bestehende Short-Position schließen, falls vorhanden
        strategy.entry("Long", strategy.long)

    // Bei Abwärts-Brick: Short-Signal
    else if brickDir[brickSize] > brickDir and renkoPrice[brickSize] > renkoPrice[brickSize*2] and renkoPrice > renkoPrice[brickSize] and renkoPrice[brickSize*2] > renkoPrice[brickSize*3] and strategy.position_size >= 0
        // Bestehende Long-Position schließen, falls vorhanden
        strategy.entry("Short", strategy.short)

if barstate.isconfirmed and newBrick
    if brickDir[brickSize] < brickDir
        strategy.close("Short")

    else if brickDir[brickSize] > brickDir
        strategy.close("Long")