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

移動平均フィルターとウィリアム %Rクロスオーバー戦略

作者: リン・ハーンチャオチャン,日付: 2023-09-19 21:57:46
タグ:

概要

この戦略は,Williams %Rクロスオーバー信号を利用し,移動平均フィルターを追加し,柔軟な短期取引システムを作成します. 過剰購入と過剰販売状況を明確に把握できます. MAフィルターはより高い安定性のために市場の騒音を避けます.

戦略の論理

  1. ウィリアムズ %Rと200期間の単純な移動平均 (MA) を計算する.

  2. %R が -50 値を超えて,閉じる値が MA 値を超えるとロングに.

  3. %R が -50 値を下回る 値を超え,閉じる 値を下回る 値を超えるとショート します.

  4. ロングの場合, Close Reach の場合は,Profit (エントリー価格+Profit Pips) または Stop Loss (エントリー価格 - Stop Loss Pips) のレベルを設定します.

  5. ショートの場合,近値で利益を得る (エントリー価格 - 利益ピップ) またはストップ損失レベル (エントリー価格 + ストップ損失ピップ) のとき,クローズポジションです.

この戦略は,Williams %Rの過剰購入/過剰売却性質を活用し,より信頼性の高いシグナルのためにMAトレンドフィルターを組み合わせます.ストップ・ロスト/テイク・プロフィートロジックはシンプルで明確です.全体的には,完全な短期システムです.

利点分析

  1. ウィリアムズ %R は,明瞭な信号で過剰購入/過剰販売レベルを効果的に識別します.

  2. MAフィルタは 傾向バイアスを加え ショットソーを避けます

  3. 柔軟性のために設定可能なパラメータ

  4. ストップ・ロスはほとんどの利益に 鍵をかけます

  5. シンプルで明確な論理で 簡単に理解し実行できます 短期取引に適しています

  6. 柔軟性のある複数の製品に適用できます

リスク分析

  1. ウィリアムズ%Rは遅延効果があり,いくつかの機会を逃す可能性があります.

  2. MAフィルターも遅延がある

  3. 厳格な買い過ぎ/売り過ぎの規則は,いくつかの傾向を見逃す可能性があります.

  4. ストップ・ロスは ストップ・ロスは ストップ・ロスは

  5. ストップ・ロスは幅が大きすぎると利益が制限される.

  6. パラメーターは異なる市場環境に合わせて調整する必要があります

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

  1. パラメータを最適化して 勝率を上げる

  2. MACD,KDJなどの他のフィルターを追加します.

  3. 試すことができます.

  4. トレンドバイアスを加え トレンド方向で取引するだけです

  5. ダイナミックストップ,チェンデリア出口などストップ・ロスの戦略を最適化します

  6. 固定分数,マルティンゲールなど

  7. マシン学習を利用して パラメータを最適化します

結論

この戦略は,Williams %Rオーバー買い/オーバーセールシグナルとMAトレンドフィルタをシンプルな短期システムに組み合わせます.明確なエントリーシグナルとストップ損失/利益のロジックがあります.より堅牢なパラメータチューニング,インジケーター選択,ストップ損失管理などによりさらなる改善が可能です. 実行し拡大しやすいため,この戦略は短期トレーダーに適しています.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Williams %R Cross Strategy with MA Filter", overlay=true)

// User Inputs
wrLength = input(14, title="Williams %R Length")
crossPips = input(10, title="Cross Threshold (Pips)")
takeProfitPips = input(30, title="Take Profit (Pips)")
stopLossPips = input(20, title="Stop Loss (Pips)")

// Calculate Williams %R
wrHigh = ta.highest(high, wrLength)
wrLow = ta.lowest(low, wrLength)
wr = (wrHigh - close) / (wrHigh - wrLow) * -100

// Calculate 200-period Simple Moving Average
ma200 = ta.sma(close, 200)

// Entry Conditions
enterLong = ta.crossover(wr, -50 - crossPips) and close > ma200
enterShort = ta.crossunder(wr, -50 + crossPips) and close < ma200

// Exit Conditions
exitLong = close >= (strategy.position_avg_price + (takeProfitPips / syminfo.mintick)) or close <= (strategy.position_avg_price - (stopLossPips / syminfo.mintick))
exitShort = close <= (strategy.position_avg_price - (takeProfitPips / syminfo.mintick)) or close >= (strategy.position_avg_price + (stopLossPips / syminfo.mintick))

// Order Management
if enterLong
    strategy.entry("Long", strategy.long)
    
if enterShort
    strategy.entry("Short", strategy.short)

if exitLong
    strategy.close("Long")

if exitShort
    strategy.close("Short")


もっと