資源の読み込みに... 荷物...

ピボット・エグジットによるピボット・リバース戦略

作者: リン・ハーンチャオチャン開催日:2024年4月30日 15:57:54
タグ:

img

概要

この戦略は,ピボットポイントを使用して市場の逆転点を特定し,そのに基づいて取引決定を行います.左側の最後の4個のキャンドル内にピボットハイが形成されると,戦略はロングポジションに入ります.左側の最後の4個のキャンドル内にピボットローが形成されると,戦略はショートポジションに入ります.ストップロスはエントリー価格の上または下の1つのティックサイズ (syminfo.mintick) に設定されます.次の反対のピボットポイントが表示されたときに出口;浮動損失が30%に達したときに出口.

戦略の原則

  1. ta.pivothigh (()) と ta.pivotlow (()) 関数を使って,左側の4個と右側の2個のキャンドルの範囲内のピボットハイ (swh) とピボットロー (swl) を計算します.
  2. ピボット・ハイ (swh_cond) が存在する場合,最高価格 (hprice) を更新し,現在のハイが前のハイより高い場合,ロングエントリー条件 (le) を有効にする.
  3. ロングエントリー条件 (le) が満たされると,Pivot High の上の1つのティックサイズ (syminfo.mintick) でロングポジションを入力します.
  4. 同様に,Pivot Low が存在する場合 (swl_cond),最低価格 (lprice) を更新し,現在の低値が前の低値より低い場合,ショートエントリー条件 (se) を有効にする.
  5. ショートエントリー条件 (se) が満たされた場合,ピボット・ロー以下に1つのティックサイズ (syminfo.mintick) でショートポジションを入力します.
  6. exitAtNextPivot() 関数では,ロングポジションを保持する場合は,ストップ・ロスを次のピボット・ロー以下1つのティックサイズに設定し,ショートポジションを保持する場合は,ストップ・ロスを次のピボット・ハイ以上1つのティックサイズに設定します.
  7. exitIfProfitLessThirtyPercent() 関数で,ロングとショートポジションの利益と損失の割合を計算し,損失が30%を超えるとポジションを閉じる.

戦略 の 利点

  1. ピボットポイントは市場のサポートとレジスタンスレベルをよく反映し,ある程度の市場認識を持つ一般的に使用される技術分析指標です.
  2. ピボットポイントのブレイクで入ると 市場の逆転の機会を掴むことができます
  3. 2つの退出条件が設定される.一つは技術退出の次の反対のピボットポイント,もう一つはリスクコントロール退出の損失パーセントに基づいており,これはある程度戦略の引き下げを制御することができます.

戦略リスク

  1. ピボットポイント指標自体には一定の遅れがあり,信号の問題は頻繁に起きており,変動する市場ではうまく機能しない可能性があります.
  2. 4個のキャンドルと2個のキャンドルの固定計算パラメータは,一定の適応性と柔軟性がないため,すべての市場条件に適用できない可能性があります.
  3. ストップロスはエントリー価格 (1つのティックのサイズ) に近い値で設定され,激しい市場変動時に捨てられる.
  4. 30%の損失停止設定が太りすぎたり,引き下げ幅が大きい場合もあります.

戦略の最適化方向

  1. 他のタイプのピボットポイント指標,例えばファクターピボットポイント,重度のピボットポイントなどを使用してみて,指標の敏感性とタイミングを向上させる.
  2. 左と右のキャンドルの数は入力パラメータとして使用され,パラメータ最適化によって最適な値が求められます.
  3. ストップロスのポジションは,ATRまたは百分比ストップロスの最適化が可能である.前者は市場の変動の変化に適応的に調整することができ,後者は制御可能な範囲内でリスクを制限することができます.
  4. 戦略の引き下げを減らすために30%の損失停止条件を厳しくすることができる.また,浮動利益と損失の両方を管理するために利益パーセント停止条件を追加することができます.
  5. 他のフィルタリング条件,例えばトレンドフィルタリングと波動性フィルタリングは,ピボットポイントのブレイクアウトに基づいて,信号品質を改善するために上乗せすることができます.

概要

この戦略は,ピボットポイント指標に基づいた二方向取引システムを構築し,ピボット・ハイでロング,ピボット・ローでショートすることで市場の逆転機会を把握する.この戦略には一定の理論的根拠と実践的な価値がありますが,ピボット・ポイント指標そのものの限界により,戦略は実際の運用でいくつかのリスクと課題に直面することがあります.ピボット・ポイント指標の種類,パラメータ,フィルタリング条件,ストップ・ロスト,利益採取などの最適化により,戦略の堅牢性と収益性をさらに向上させることが期待されています.


/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)

leftBars = input(4)
rightBars = input(2)

var float dailyEquity = na

// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
    dailyEquity := 10000

// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)

// Define long entry condition
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

// Enter long position if long entry condition is met
if (le)
    strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)

// Define short entry condition
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

// Enter short position if short entry condition is met
if (se)
    strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)

// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Exiting long position at next pivot low
            if not na(swl)
                strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
        else
            // Exiting short position at next pivot high
            if not na(swh)
                strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)

// Call exitAtNextPivot function
exitAtNextPivot()

// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Calculate profit percentage for long position
            profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
            // Exiting long position if profit is less than 30%
            if profit_percentage_long < -30
                strategy.close("PivRevLE")
        else
            // Calculate profit percentage for short position
            profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
            // Exiting short position if profit is less than 30%
            if profit_percentage_short < -30
                strategy.close("PivRevSE")

// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()


もっと