PIVOTの高値と安値に基づく暗号通貨のトレンド反転戦略


作成日: 2024-01-12 14:13:36 最終変更日: 2024-01-12 14:13:36
コピー: 0 クリック数: 691
1
フォロー
1617
フォロワー

PIVOTの高値と安値に基づく暗号通貨のトレンド反転戦略

概要

この戦略は,PIVOT高低点と突破点に基づいて暗号通貨のトレンド反転を判断する.これは,突破反転戦略のカテゴリーに属します.戦略は,最初に標識された物品の最近の最高価格と最低価格のPIVOTポイントを計算し,次に,価格がこれらのキーポイントの位を越えた後に反転したかどうかを判断し,大きなトレンド変化を捕捉します.

戦略原則

  1. PIVOT高低点を計算する

ta.pivothigh ((() とta.pivotlow ((() の関数を用いて,最近一定数のバーの最高値と最低値をキーPIVOTポイントとして計算する.

  1. 突破を判断する

価格がPIVOT LOWを上方へ突破した場合,またはPIVOT HIGHを下方へ突破した場合,トレンドが逆転したと考えられます.

  1. フィルタリング条件を設定する

PIVOTポイントより一定幅のブレイクが必要で, 150barの閉盘価格を突破して,套入を避ける.

  1. 入場と出場

購入条件を触発した後に多入場し,販売条件を触発した後に多入場を平らげる。空券の入場と出場を判断すると同様。

優位分析

  1. PIVOTで判断し,大きなトレンドの変化に敏感になる
  2. 効果的フィルターが振動トレンドに組み込まれ,トレンドが逆転した後に入場を保証します.
  3. PIVOTポイントの突破を判断し,逆転の機会を把握する

リスク分析

  1. 大周期性波動は戦略を誤りやすくする
  2. PIVOTポイントの長さとフィルタリング条件は,異なる標識に適合するように調整する必要があります
  3. 取引所の手数料がゼロに近いことを保証する必要があります.

最適化の方向

  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)