ピート・ウェーブ・トレーディング・システム戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-25 15:36:16
タグ:

img

ピート・ウェーブ・トレーディング・システムの戦略概要

ピート・ウェーブ (Pete Wave) 取引システム戦略は,トレード信号を構築するために,迅速かつ緩やかな移動平均線を使用し,さらに最適化するために追加のフィルターとストップ損失メカニズムを使用する.この戦略は,価格平均線クロスオーバーから購入および販売信号を生成することによって中期トレンドを捕捉することを目的としている.コードには,ブレイクアウト確認フィルター,キャンドルボディフィルター,ATRフィルター,プルバックフィルターおよび他のメカニズムも含まれ,偽ブレイクを避ける.全体として,この戦略は,トレンドフォローとブレイクアウトのトレンドの方向性を効果的に捕捉するためにトレンドフォローの利点を組み合わせている.

ピート・ウェーブ・トレーディング・システムの戦略原則

この戦略は,高速移動平均線 (長さ9) と遅い移動平均線 (長さ22) を用いて,ゴールデンクロスオーバー (低速度線を下から突破する高速線) とデスクロスオーバー (低速度線を上から突破する高速線) の取引信号を構築する.高速線がスローラインを突破すると買い信号が生成され,高速線がスローラインを下から突破すると売り信号が生成される.

価格変動によって引き起こされる偽のブレイクを避けるため,コードに追加のフィルタメカニズムが追加されています.これらのフィルタには,信号を生成する前にキャンドルボディの割合変動が0.5%以上である必要があるキャンドルボディフィルター,シグナルを生成するために十分な変動を証明するために十分な変動を必要とするATR値フィルター,トレンドを確認するために高速ラインと価格ラインが交差するときに価格が一定の幅を引っ張ったかどうかをチェックするプルバックフィルターが含まれます.

シグナルが生成された後,ブレイクアウト確認フィルタが有効になっている場合,現在の閉じる価格がブレイクアウトを確認するために以前のNキャンドルストイックの最高または最低価格を突破するかどうかを決定します.最後に,戦略は,平均保有価格の一定のパーセントに基づいてストップ損失ポジションを移動するトライリングストップ損失メカニズムを通じて利益をロックします.

ピート・ウェーブ・トレーディング・システムの戦略の利点分析

この戦略は,移動平均取引とトレンドトラッキングの利点を統合し,中期価格動向の方向性を効果的に特定することができます.単一の移動平均クロスオーバーシステムと比較して,追加のフィルターを組み合わせることで,誤った信号の確率が大幅に減少できます.具体的な利点は以下のとおりです.

  1. 移動平均のクロスオーバーとトレンドトラッキングの組み合わせは 不安定な市場に引っかかることを避けます

  2. 引き戻しフィルターと 突破確認メカニズムは 偽の突破を防ぐ

  3. ATR値とキャンドルボディフィルターは 本当の変動を特定するのに役立ちます

  4. トレーリングストップ・ロスのメカニズムは,単一の取引損失を効果的に制御することができます.

ピート・ウェーブ・トレーディング・システム 戦略 リスク分析

この戦略が直面する主なリスクは以下のとおりです.

  1. 突発的な市場の出来事がストップ・ロスの出口を誘発する可能性があります.ストップ・ロスの距離は適切に緩和することができます.

  2. 適時利益を得ることなく ポジションを長く保持し 移動平均周期を短縮する

  3. 静かな市場環境は,取引信号を減少させる.フィルター基準は適切に低下させることができる.

  4. パラメータの最適化が不適切である場合,取引が頻繁すぎたり,少なすぎたりします. パラメータは繰り返しテストする必要があります.

ピート・ウェーブ・トレーディング・システムの戦略最適化方向

戦略は以下の方向で最適化できる:

  1. 異なる取引品種でパラメータを個別にテストし,移動平均期間の最適化および他のパラメータを最適化します.

  2. 傾向の方向性を決定するために,ボリンジャー帯,RSIなどのより多くの指標を追加してみてください.

  3. 停止損失メカニズムパラメータをテストして,最適な停止損失比を見つけます.

  4. 自動で買い・売る信号を生成する機械学習方法を試してみてください

  5. 異なるタイムフレーム判断を組み合わせることで より多くの取引機会を特定する.

ピート・ウェーブ・トレーディング・システムの戦略概要


/*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"}]
*/

//@version=5
strategy("9:22 5 MIN 15 MIN BANKNIFTY", overlay=true)

fastLength = input(9, title="Fast MA Length")
slowLength = input(22, title="Slow MA Length")
atrLength = input(14, title="ATR Length")
atrFilter = input(0.5, title="ATR Filter")
trailingStop = input(1.5, title="Trailing Stop Percentage")
pullbackThreshold = input(0.5, title="Pullback Threshold")
minCandleBody = input(0.5, title="Minimum Candle Body Percentage")
breakoutConfirmation = input(true, title="Use Breakout Confirmation")

price = close
mafast = ta.sma(price, fastLength)
maslow = ta.sma(price, slowLength)

atrValue = ta.atr(atrLength)

long_entry = ta.crossover(mafast, maslow) and atrValue > atrFilter
short_entry = ta.crossunder(mafast, maslow) and atrValue > atrFilter

// Pullback Filter
pullbackLong = ta.crossover(price, mafast) and ta.change(price) <= -pullbackThreshold
pullbackShort = ta.crossunder(price, mafast) and ta.change(price) >= pullbackThreshold

// Include pullback condition only if a valid entry signal is present
long_entry := long_entry and (pullbackLong or not ta.crossover(price, mafast))
short_entry := short_entry and (pullbackShort or not ta.crossunder(price, mafast))

// Filter based on candle body size
validLongEntry = long_entry and ta.change(price) > 0 and ta.change(price) >= minCandleBody
validShortEntry = short_entry and ta.change(price) < 0 and ta.change(price) <= -minCandleBody

// Breakout confirmation filter
breakoutLong = breakoutConfirmation ? (close > ta.highest(high, fastLength)[1]) : true
breakoutShort = breakoutConfirmation ? (close < ta.lowest(low, fastLength)[1]) : true

long_entry := validLongEntry and breakoutLong
short_entry := validShortEntry and breakoutShort

if (long_entry)
    strategy.entry("Long", strategy.long)
    strategy.close("Short")
    alert("Long trade iniated")
    
if (short_entry)
    strategy.entry("Short", strategy.short)
    strategy.close("Long")
    alert("Short trade initated")

// Trailing Stop-Loss
long_stop = strategy.position_avg_price * (1 - trailingStop / 100)
short_stop = strategy.position_avg_price * (1 + trailingStop / 100)
strategy.exit("Exit Long", "Long", stop = long_stop)
strategy.exit("Exit Short", "Short", stop = short_stop)

plot(mafast, color=color.green, linewidth=2, title="Fast MA")
plot(maslow, color=color.red, linewidth=2, title="Slow MA")


もっと