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

EMA/SMA トレンドフォロー スウィング・トレーディング戦略 総量フィルターとパーセントのテイク・プロフィート/ストップ・ロース・システム

作者: リン・ハーンチャオチャン開催日:2024年12月11日 15:12:35
タグ:エイマSMA

img

概要

この戦略は,トレンドフォローとスウィング・トレーディング・メソッド,EMAとSMAクロスオーバー,スウィング・ハイ/ロー識別,ボリュームフィルタリング,百分比ベースのテイク・プロフィートとトラッキング・ストップ・ロストメカニズムを組み合わせた包括的な取引システムである.この戦略は,多次元信号確認を強調し,技術指標のシネージを通じて取引精度を向上させる.

戦略の原則

この戦略は,複数の層のシグナルフィルタリングメカニズムを使用し,基本トレンド決定のためにEMA (EMA) (10) とSMA (SMA) (21) クロスオーバーから始まり,入場タイミングのために6バーの左/右ピボットポイントブレイクを使用し,十分な流動性を確保するために200期移動平均値以上のボリュームを必要とする. リスク管理のために2%のテイク・プロフィートと1%のトレリング・ストップ・ロスを使用する. 価格がボリューム確認でスウィング・ハイズの上を突破するとロングポジションが開始され,価格がボリューム確認でスウィング・ローズ以下に突破するとショートポジションが取られる.

戦略 の 利点

  1. 複数の信号の確認は,トレンド,価格ブレイク,およびボリューム拡大の検証を通じて,偽信号を減らす
  2. 利回り率による利回り管理とストップ・ロスの利用
  3. 取引とシグナルを監視するための包括的な視覚化システム
  4. 調整可能なキーパラメータで高度なカスタマイズ可能性
  5. 既定のストップ・ロストとテイク・プロフィートのレベルによる体系的なリスク管理

戦略リスク

  1. 異なる市場における潜在的な誤ったブレイク
  2. ボリュームフィルタリングは,有効な信号を見逃す可能性があります.
  3. 固定利回り率は 強い傾向で 早く退場するかもしれない
  4. 移動平均系は,急速な逆転に固有の遅延を持っています
  5. 戦略収益に対する取引コストの影響を考慮する必要性

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

  1. 波動性調整を導入し,ダイナミックな取利益/ストップ損失の調整を行う
  2. 傾向強度フィルタリングを追加して,弱い傾向での取引を避ける
  3. 相対的なボリューム変化を考慮してボリュームフィルタリングアルゴリズムを最適化
  4. 不利な取引期間を避けるために時間に基づくフィルターを導入する
  5. パラメータ調整のための市場体制分類を検討する

概要

この戦略は,移動平均値,価格ブレイク,およびボリューム検証を通じて完全な取引システムを構築し,中期から長期間のトレンドフォローに適しています.その強みは複数の信号の確認と包括的なリスク管理にあります.しかし,さまざまな市場のパフォーマンスには注意が必要です.提案された最適化,特に適応性によって,戦略は安定性とパフォーマンスの改善に余地があります.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Strategy combining EMA/SMA Crossover, Swing High/Low, Volume Filtering, and Percentage TP & Trailing Stop
strategy("Swing High/Low Strategy with Volume, EMA/SMA Crossovers, Percentage TP and Trailing Stop", overlay=true)

// --- Inputs ---
source = close
TITLE = input(false, title='Enable Alerts & Background Color for EMA/SMA Crossovers')
turnonAlerts = input(true, title='Turn on Alerts?')
colorbars = input(true, title="Color Bars?")
turnonEMASMA = input(true, title='Turn on EMA1 & SMA2?')
backgroundcolor = input(false, title='Enable Background Color?')

// EMA/SMA Lengths
emaLength = input.int(10, minval=1, title='EMA Length')
smaLength = input.int(21, minval=1, title='SMA Length')
ema1 = ta.ema(source, emaLength)
sma2 = ta.sma(source, smaLength)

// Swing High/Low Lengths
leftBars = input.int(6, title="Left Bars for Swing High/Low", minval=1)
rightBars = input.int(6, title="Right Bars for Swing High/Low", minval=1)

// Volume MA Length
volMaLength = input.int(200, title="Volume Moving Average Length")

// Percentage Take Profit with hundredth place adjustment
takeProfitPercent = input.float(2.00, title="Take Profit Percentage (%)", minval=0.01, step=0.01) / 100

// Trailing Stop Loss Option
useTrailingStop = input.bool(true, title="Enable Trailing Stop Loss?")
trailingStopPercent = input.float(1.00, title="Trailing Stop Loss Percentage (%)", minval=0.01, step=0.01) / 100

// --- Swing High/Low Logic ---
pivotHigh(_leftBars, _rightBars) =>
    ta.pivothigh(_leftBars, _rightBars)

pivotLow(_leftBars, _rightBars) =>
    ta.pivotlow(_leftBars, _rightBars)

ph = fixnan(pivotHigh(leftBars, rightBars))
pl = fixnan(pivotLow(leftBars, rightBars))

// --- Volume Condition ---
volMa = ta.sma(volume, volMaLength)

// Declare exit conditions as 'var' so they are initialized
var bool longExitCondition = na
var bool shortExitCondition = na

// --- Long Entry Condition: Close above Swing High & Volume >= 200 MA ---
longCondition = (close > ph and volume >= volMa)
if (longCondition)
    strategy.entry("Long", strategy.long)

// --- Short Entry Condition: Close below Swing Low & Volume >= 200 MA ---
shortCondition = (close < pl and volume >= volMa)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// --- Take Profit and Trailing Stop Logic ---

// For long position: Set take profit at the entry price + takeProfitPercent
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercent)

// --- Long Exit Logic ---
if (useTrailingStop)
    // Trailing Stop for Long
    strategy.exit("Long Exit", "Long", stop=na, trail_offset=strategy.position_avg_price * trailingStopPercent, limit=longTakeProfitLevel)
else
    // Exit Long on Take Profit only
    strategy.exit("Long Exit", "Long", limit=longTakeProfitLevel)

// --- Short Exit Logic ---
if (useTrailingStop)
    // Trailing Stop for Short
    strategy.exit("Short Exit", "Short", stop=na, trail_offset=strategy.position_avg_price * trailingStopPercent, limit=shortTakeProfitLevel)
else
    // Exit Short on Take Profit only
    strategy.exit("Short Exit", "Short", limit=shortTakeProfitLevel)

// --- Plot Swing High/Low ---

plot(ph, style=plot.style_circles, linewidth=1, color=color.blue, offset=-rightBars, title="Swing High")
plot(ph, style=plot.style_line, linewidth=1, color=color.blue, offset=0, title="Swing High")
plot(pl, style=plot.style_circles, linewidth=1, color=color.red, offset=-rightBars, title="Swing High")
plot(pl, style=plot.style_line, linewidth=1, color=color.red, offset=0, title="Swing High")
// --- Plot EMA/SMA ---
plot(turnonEMASMA ? ema1 : na, color=color.green, title="EMA")
plot(turnonEMASMA ? sma2 : na, color=color.orange, title="SMA")

// --- Alerts ---
alertcondition(longCondition, title="Long Entry", message="Price closed above Swing High with Volume >= 200 MA")
alertcondition(shortCondition, title="Short Entry", message="Price closed below Swing Low with Volume >= 200 MA")

// --- Bar Colors for Visualization ---
barcolor(longCondition ? color.green : na, title="Long Entry Color")
barcolor(shortCondition ? color.red : na, title="Short Entry Color")
bgcolor(backgroundcolor ? (ema1 > sma2 ? color.new(color.green, 50) : color.new(color.red, 50)) : na)

関連性

もっと