암호화 트렌드 역전 전략 (Crypto Trend Reversal Strategy)

저자:차오장, 날짜: 2024-01-12 14:13:36
태그:

img

전반적인 설명

이 전략은 PIVOT 스윙 하이/로 포인트 및 브레이크아웃 신호를 기반으로 암호화 자산의 트렌드 역전을 식별합니다. 브레이크아웃 역전 전략 범주에 속합니다. 이 전략은 먼저 최근 최고 및 최저 가격 포인트를 PIVOT 수준으로 계산하고, 그 다음 가격이 이러한 핵심 수준을 깨는 경우를 감지하여 주요 트렌드 변화를 신호합니다.

전략 이 어떻게 작동 하는가

  1. PIVOT 최고/하위 점 계산

    ta.pivothigh (() 및 ta.pivotlow (() 를 사용하여 사용자 정의 바 룩백 기간 동안 최고 최고 및 최저 낮은 가격을 찾아 PIVOT 포인트를 그래프화합니다.

  2. 침투 신호 를 식별 한다

    만약 가격이 PIVOT 하위점 이상으로 돌파하거나, PIVOT 높은 지점 아래로 돌파한다면, 전략은 그것을 트렌드 역전 신호로 간주합니다.

  3. 필터 조건을 설정합니다

    PIVOT 레벨을 의미있는 거리로 돌파하는 가격이 필요하고, 닫는 가격은 150 바 닫는 가격을 경신하기 위해 닫습니다.

  4. 출입 및 출입

    긴 조건에서 구매 신호를 트리거하고, 출구 조건에서 긴 포지션을 닫습니다. 짧은 설정 규칙에도 마찬가지입니다.

장점

  1. PIVOT 포인트는 주요 트렌드 변동에 민감합니다.
  2. 필터로 통합 추세에 whipssaws를 피합니다
  3. 스윙 높은 / 낮은 브레이크와 함께 일찍 반전을 캡처

위험성

  1. 더 큰 사이클은 전략에 수 있습니다.
  2. PIVOT 포인트와 필터는 각 자산에 대한 조정이 필요합니다.
  3. 교환 수수료 영향 결과, 거의 0 수수료 구조를 필요로

더 나은 기회

  1. 다른 PIVOT 룩백 기간을 테스트합니다.
  2. 거래당 제어 손실에 이동 스톱 손실을 추가합니다.
  3. 필터에 대한 다른 지표와 결합

결론

이 전략은 큰 반전을 포착하기 위해 전반적으로 강력하지만 자산별 맞춤형 매개 변수 및 위험 통제가 필요합니다. 추가 최적화 및 보호 경로로 암호화 시장에서 잘 수행 할 수 있습니다.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nkrastins95

//@version=5
strategy("Swing Hi Lo", overlay=true, margin_long=100, margin_short=100)

//-----------------------------------------------------------------------------------------------------------------------//

tf = input.timeframe(title="Timeframe", defval="")

gr="LENGTH LEFT / RIGHT"
leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr)
rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr)
colorH = input(title="", defval=color.red, inline="Pivot High",group=gr)

leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr)
rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr)
colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr)

//-----------------------------------------------------------------------------------------------------------------------//

pivotHigh(ll, rl) =>
    maxLen = 1000
    float ph = ta.pivothigh(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(ph[offset])
            break 
        offset := offset + 1
    ph[offset]

pivotLow(ll, rl) =>
    maxLen = 1000
    float pl = ta.pivotlow(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(pl[offset])
            break 
        offset := offset + 1
    pl[offset]


//-----------------------------------------------------------------------------------------------------------------------//

ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on)

drawLabel(_offset, _pivot, _style, _color) =>
    if not na(_pivot)
        label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722)

//-----------------------------------------------------------------------------------------------------------------------//

VWAP = ta.vwap(ohlc4)

longcondition = ta.crossunder(close,pl) and close > close[150]
exitcondition = close > ph

shortcondition = ta.crossover(close,ph) and close < close[150]
covercondition = close < pl

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = exitcondition)

strategy.entry("Short", strategy.short, when = shortcondition)
strategy.close("Short", when = covercondition)

더 많은