単純なピボット逆転アルゴリズム取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-17 15時37分33秒
タグ:

img

概要

この戦略は,ピボットポイントブレイクアウトに基づいて逆転取引を行います.ピボットレベルを決定するために,特定の期間中にピボット高とピボット低を計算します.価格がピボット高を超えるとショートになり,価格がピボット低を下回るとロングになります.これは典型的な短期平均リバース戦略です.

戦略の論理

この戦略の基本的な論理は,ピボットの高点と低点を計算することです.公式は:

Pivot High = 過去のN1バーの最高高の合計 / N1

ピボットロー = 過去のN2バー/N2における最低ローの合計

N1 と N2 は,ピボットポイントを計算するために使用される棒の数を定義するパラメータである.

取引規則は,ピボットの高値/低値を得ると,次のとおりです.

  1. 価格がピボット高値を超えるとショート
  2. 価格がピボット低値を下回るときのロング
  3. 入力後にストップ損失を設定する

短期的な逆転戦略を 実現します

利点分析

この簡単な戦略の利点は以下の通りです

  1. シンプルな論理,理解し実行しやすい
  2. 高周波の短期取引に適している
  3. ピボットブレイク後の逆転を記録する
  4. パラメータチューニングによって最適化可能

リスク分析

いくつかのリスクがあります:

  1. 逆転リスクは,ピボットブレイク後の逆転が失敗し,トレンドが継続する可能性があります.
  2. ストップ・ロスのリスク - 既定のストップ・ロスは大きな損失を招く可能性があります.
  3. パラメータリスク - 不適切なパラメータは結果に大きな影響を与える

パラメータ調整,退出規則の適用などによってこれらのリスクを管理できます

オプティマイゼーションの方向性

最適化する余地があります.

  1. 他の技術指標と組み合わせて,エントリータイミングを改善する
  2. トレイリングストップ損失,利益取得など,退出ルールを追加
  3. 適応性を向上させるためのパラメータの動的調整
  4. 最適なパラメータ組み合わせを見つけるためのパラメータ最適化

概要

概要すると,これは非常にシンプルな短期的なピボット逆転戦略です.その利点は単純性と逆転を捕捉する能力です.しかし,最適化によって対処する必要があるいくつかのリスクがあります.全体的にこれは初心者にとって良い実践戦略として機能し,高度な戦略の基礎を築きます.


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

//@version=4
strategy("Pivot Reversal Strategy - FIGS & DATES 2.0", overlay=true, pyramiding=0, initial_capital=10000, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, commission_value=0.075)

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

// backtesting date range
from_day = input(defval=1, title="From Day", minval=1, maxval=31)
from_month = input(defval=1, title="From Month", minval=1, maxval=12)
from_year = input(defval=2018, title="From Year", minval=1900)

to_day = input(defval=1, title="To Day", minval=1, maxval=31)
to_month = input(defval=1, title="To Month", minval=1, maxval=12)
to_year = input(defval=9999, title="To Year", minval=1900)

time_cond = true

swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)

middle = (swh+swl)/2

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]

if le and time_cond
    strategy.entry("LONG", strategy.long, comment="LONG", stop=hprice + syminfo.mintick)

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]

if se and time_cond
    strategy.entry("SHORT", strategy.short, comment="SHORT", stop=lprice - syminfo.mintick)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


もっと