極端な逆転追跡戦略

作者: リン・ハーンチャオチャン開催日:2024年2月20日 (月) 15:17:41
タグ:

img

概要

エクストリーム・リバーション・トラッキング戦略は,価格変動範囲の極点を追跡し,トレンドを追跡するために極点でリバーサル・ロング・ショート・ポジションを作成します.

戦略原則

この戦略は主に以下の原則に基づいています.

  1. セキュリティ機能を使用して,異なるサイクルKラインの高値と低値を得て,以前の値と同等かどうかを検知し,新しい極点に達したかどうかを判断します.

  2. 新しい極点が検出された場合,現在牛市場であればショートポジションを,現在熊市場であればロングポジションをします.

  3. ストップ・ロスのポイントを,ストップ・ロスのトレンドを追跡するために,ロング/ショートポジションが形成された新しい極点として設定します.

  4. 戦略の有効時間帯を設定し,開始年,月,日付を設定して異なる時間帯に調整します.

利点

この戦略の主な利点は以下の通りです.

  1. 価格変化の極点を効果的に把握し,トレンドを追跡するために反転ポジションを設定します.

  2. リスク削減のための戦略の利用時間と資本を制御するために時間とリスク管理を設定します.

  3. 新しい極点をストップ・ロスのポイントとして利用し,新しい価格変動範囲に基づいてストップ・ロスのポジションを動的に調整します.

  4. シンプルで明快な戦略ロジックで 分かりやすくデバッグして最適化できます

リスク

この戦略にはいくつかのリスクもあります:

  1. エクストリームポイントの決定に誤判があり,ロング/ショートポジションのエラーを引き起こす可能性があります.論理は最適化できます.

  2. ストップ損失ポジションはエントリーポイントに近いので,ストップ損失が発生する確率が高まります.浮遊ストップ損失を使用できます.

  3. トレンドに沿ったピラミッドポジションと逆向きのポジションは考慮されません. トレンド市場では利益が少なくなります.関連する論理を追加することができます.

  4. 通貨と時間帯の構成はかなり硬いので,動的調整を行うことはできません.パラメータ最適化システムを導入できます.

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

戦略は以下の側面で最適化できます.

  1. エクストリームポイントロジックを フィルターで最適化して 誤った判断を避ける

  2. ストップ・ロスの距離を調整するために,価格と波動性の変化に基づいて浮動ストップ・ロスのメカニズムを追加します.

  3. 収益性の向上のために 傾向と変動をベースにピラミディングとリバースポジションモジュールを導入する.

  4. 自動テストとパラメータ調整のためのパラメータ最適化メカニズムを確立する.

  5. 戦略的な意思決定を支援するために機械学習モデルを組み込む.

概要

エクストリームリバーショントラッキング戦略は,価格の極値とトレンドを追跡し,適応可能で利益を得ることで機能します. エクストリーム判断,ストップロスのメカニズム,ポジション開設規則などに対するさらなる最適化は,それを堅牢な定量的な取引戦略に形作ることができます.


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

//Noro
//2018

//@version=2
strategy(title = "Noro's Extremum Strategy v1.0", shorttitle = "Extremum str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = 'Timeframe for extremums')
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Levels
highm = request.security(syminfo.tickerid, tf, high[1])
lowm = request.security(syminfo.tickerid, tf, low[1])
upcolorm = highm == highm[1] ? lime : na
dncolorm = lowm == lowm[1] ? red : na
plot(highm, color = upcolorm, linewidth = 3)
plot(lowm, color = dncolorm, linewidth = 3)

//Signals
size = strategy.position_size
up = size > 0 ? highm * 1000000 : highm != highm[1] ? highm : up[1]
dn = size < 0 ? 0 : lowm != lowm[1] ? lowm : dn[1]
exit = true

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if highm > 0 and high[1] < highm and highm == highm[1]
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = up)
    
if lowm > 0 and low[1] > lowm and lowm == lowm[1]
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dn)

if exit
    strategy.close_all()

もっと