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

2次インパクト ツーパーインディケーター タイミング戦略

作者: リン・ハーンチャオチャン, 日付: 2024-02-04 15:53:48
タグ:

img

概要

この戦略は,スーパートレンド指標とエリオット・ウェーブ理論を融合させ,強力な技術的な取引ツールを構築する.これは,潜在的なトレンド逆転と重要な価格変動を早期に把握できるより包括的な市場視点を提供するために,多レベルのトレンド分析を使用する.

戦略原則

基本的な考え方は 多層次アプローチにあります

  1. 短期から長期間のトレンドを判断するために,それぞれ異なるATR長さと倍数を持つ4つのスーパートレンド指標を使用します.
  2. インディケーターの収束によって 強力な長期と短期の信号を特定する
  3. トレードシグナルを確認するために,類似した市場行動を識別するために Elliott Waveのパターン認識方法を参照してください.

複数の指標を利用し パターン認識を加えることで 戦略をより堅牢にします

利点分析

  1. 複数の指標による設計は,包括的な判断を可能にします
  2. 波理論のインスピレーションはパターン認識を通じて安定性を高めます
  3. 市場変化に適応するリアルタイム方向調整
  4. 設定可能なパラメータは,異なる製品と時間枠に適しています.

リスク分析

  1. パラメータ設定は経験に依存し,最適なパラメータ組み合わせを決定するために調整が必要です
  2. 多指標設計は複雑で 計算負荷が増加する
  3. 誤った信号生成を完全に回避できない

パラメータを最適化して 徐々に最適を決定できます クラウドコンピューティングは計算性能を向上させ ストップ損失はリスクを制御できます

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

最適化はいくつかの側面から行われることがあります.

  1. 市場状況に基づいてパラメータを動的に調整する適応パラメータ調整モジュールを追加する
  2. 信号の信頼性を判断するのに役立つ機械学習モデルを組み込む
  3. 市場体制を決定するために,感情指標,ニュースイベントなどを組み合わせる.
  4. テストワークロードを減らすために複数の製品パラメータテンプレートをサポートする

戦略のパラメータがより賢く 判断がより正確で 実践的な応用がより便利になります

概要

この戦略は,傾向とパターンの両方の次元を包括的に考慮し,柔軟性を高めながら判断の強さを保証する.マルチインジケーターとパラメータ設定は,完全な市場適用性を保証する.インテリジェントと自動化された方法のさらなる組み込みにより,戦略の実用性は大幅に向上することができる.技術取引の進歩のための貴重なインスピレーションと参照を提供します.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true )

// Inputs for selecting trading direction
tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])


// SuperTrend Function
supertrend(src, atrLength, multiplier) =>
    atr = ta.atr(atrLength)
    up = hl2 - (multiplier * atr)
    dn = hl2 + (multiplier * atr)
    trend = 1
    trend := nz(trend[1], 1)
    up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ?   math.max(up, nz(up[1], 0)) : up
    dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn
    trend := src > nz(dn[1], 0) ?  1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1)
    [up, dn, trend]

// Inputs for SuperTrend settings
atrLength1 = input(7, title="ATR Length for SuperTrend 1")
multiplier1 = input(4.0, title="Multiplier for SuperTrend 1")
atrLength2 = input(14, title="ATR Length for SuperTrend 2")
multiplier2 = input(3.618, title="Multiplier for SuperTrend 2")
atrLength3 = input(21, title="ATR Length for SuperTrend 3")
multiplier3 = input(3.5, title="Multiplier for SuperTrend 3")
atrLength4 = input(28, title="ATR Length for SuperTrend 3")
multiplier4 = input(3.382, title="Multiplier for SuperTrend 3")

// Calculate SuperTrend
[up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1)
[up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2)
[up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3)
[up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4)


// Entry Conditions based on SuperTrend and Elliott Wave-like patterns
longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1
shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1

// Strategy Entry logic based on selected trading direction
if tradingDirection == "Long" or tradingDirection == "Both"
    if longCondition
        strategy.entry("Long", strategy.long)
        // [Any additional logic for long entry]

if tradingDirection == "Short" or tradingDirection == "Both"
    if shortCondition
        strategy.entry("Short", strategy.short)
        // [Any additional logic for short entry]


// Exit conditions - Define your own exit strategy
// Example: Exit when any SuperTrend flips
if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1] 
    strategy.close_all()

// Function to apply gradient effect
gradientColor(baseColor, length, currentBar) =>
    var color res = color.new(baseColor, 100)
    if currentBar <= length
        res := color.new(baseColor, int(100 * currentBar / length))
    res

// Apply gradient effect
color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1)
color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3)


// Plot SuperTrend with gradient for upward trend
plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up")
plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up")

// Plot SuperTrend with gradient for downward trend
plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down")
plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down")

// Filling the area between the first and third SuperTrend lines for upward trend
fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band")

// Filling the area between the first and third SuperTrend lines for downward trend
fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")



もっと