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

マルチEMAクロスオーバーとカマリラ・サポート/レジスタンスのトレンド・トレーディング・システム

作者: リン・ハーンチャオチャン, 日付: 2025-01-06 11:13:31
タグ:エイマCPRSR

img

概要

この戦略は,複数の指数的な移動平均値 (EMA),カマリラサポート/レジスタンスレベル,および中央ピボットレンジ (CPR) を組み合わせたトレンドフォロー取引システムである.このシステムは,複数の移動平均値と主要な価格ゾーンとの価格関係を分析することによって,市場のトレンドと潜在的な取引機会を特定する. パーセントベースのポジションサイズ化や多様な退出メカニズムを含む厳格なマネーマネジメントとリスク管理措置を実施する.

戦略の原則

この戦略は,いくつかの主要な要素に基づいています.

  1. 複数のEMAシステム (20/50/100/200) 傾向方向と強度確認
  2. 主要価格レベルを特定するためのCamarillaサポート/レジスタンスレベル (R3/S3)
  3. 中央ピボット範囲 (CPR) 日内取引範囲の決定
  4. EMA200とEMA20の確認による価格クロスオーバーに基づいたエントリー信号
  5. 固定ポイントと割合移動モードを含む脱出戦略
  6. 口座サイズに基づいてポジションサイズを動的に調整するマネー管理システム

戦略 の 利点

  1. 多次元的な技術指標の統合により,より信頼性の高い取引信号が提供されます.
  2. 柔軟な脱出メカニズムは 異なる市場状況に適応する
  3. 総合的なマネーマネジメントシステムはリスクを効果的に制御します
  4. トレンドフォローする特徴は,主要市場動向を把握するのに役立ちます
  5. ビジュアライゼーションコンポーネントは,トレーダーが市場構造を理解するのに役立ちます

戦略リスク

  1. 異なる市場で誤った信号を生む可能性があります.
  2. 多数の指標が遅い取引信号につながる可能性があります
  3. 固定出口ポイントは高変動市場では劣る可能性があります
  4. 借入金に耐えられるためには,相当な資本が必要である.
  5. 取引コストは,戦略の総利益に影響を与える可能性があります.

戦略の最適化方向

  1. 変動指標を導入し,入力/終了パラメータを動的に調整する
  2. 異なる市場状況に適応するために市場状態識別モジュールを追加する
  3. 動的ポジション管理でマネーマネジメントシステムを最適化
  4. シグナル品質を改善するために取引時間フィルターを追加
  5. 信号の信頼性を高めるため,音量分析を追加することを検討

概要

この戦略は,完全な取引システムを構築するために,複数のクラシックな技術分析ツールを統合している.その強みは多次元市場分析と厳格なリスク管理にある.一方で,異なる市場環境における適応性に注意を払う必要がある.継続的な最適化と改善を通じて,戦略は安定を維持しながら収益性を向上させる可能性がある.


/*backtest
start: 2020-01-06 00:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pradeep Crude oil Entry and Exit", overlay=true)

// Input settings for EMAs
ema20_period = input.int(20, title="EMA 20 Period")
ema50_period = input.int(50, title="EMA 50 Period")
ema100_period = input.int(100, title="EMA 100 Period")
ema200_period = input.int(200, title="EMA 200 Period")

// Fixed line width settings for EMAs
ema20_width = 2  // EMA 20 Line Width
ema50_width = 2  // EMA 50 Line Width
ema100_width = 3 // EMA 100 Line Width
ema200_width = 4 // EMA 200 Line Width

// Backtesting inputs
initial_capital = input.float(50000, title="Initial Capital", minval=100)
position_size_percent = input.float(100, title="Position Size (% of Capital)", minval=0.1, maxval=100)
exit_mode = input.string("Price Movement", title="Exit Mode", options=["Price Movement", "Percentage Movement"])
exit_points = input.int(20, title="Exit After X Points", minval=1)
exit_percentage = input.float(1.0, title="Exit After X% Movement", minval=0.1, step=0.1)

// Calculate EMAs
ema20 = ta.ema(close, ema20_period)
ema50 = ta.ema(close, ema50_period)
ema100 = ta.ema(close, ema100_period)
ema200 = ta.ema(close, ema200_period)

// Signal conditions
long_entry_condition = close > ema200 and close > ema20 and close[1] <= ema200
long_exit_condition = (exit_mode == "Price Movement" and close - strategy.position_avg_price >= exit_points * syminfo.mintick) or 
                      (exit_mode == "Percentage Movement" and (close - strategy.position_avg_price) / strategy.position_avg_price * 100 >= exit_percentage)
short_entry_condition = close < ema200 and close < ema20 and close[1] >= ema200
short_exit_condition = (exit_mode == "Price Movement" and strategy.position_avg_price - close >= exit_points * syminfo.mintick) or 
                       (exit_mode == "Percentage Movement" and (strategy.position_avg_price - close) / strategy.position_avg_price * 100 >= exit_percentage)

// Plot EMAs with specified line widths
plot(ema20, color=color.green, title="EMA 20", linewidth=ema20_width)
plot(ema50, color=color.aqua, title="EMA 50", linewidth=ema50_width)
plot(ema100, color=color.blue, title="EMA 100", linewidth=ema100_width)
plot(ema200, color=color.red, title="EMA 200", linewidth=ema200_width)

// Camarilla Pivot Calculation
prev_high = request.security(syminfo.tickerid, "D", high[1])
prev_low = request.security(syminfo.tickerid, "D", low[1])
prev_close = request.security(syminfo.tickerid, "D", close[1])

R3 = prev_close + (prev_high - prev_low) * 1.1 / 2
S3 = prev_close - (prev_high - prev_low) * 1.1 / 2

// Central Pivot Range (CPR) Calculation
pivot = (prev_high + prev_low + prev_close) / 3
upper_cpr = pivot + (prev_high - prev_low)
lower_cpr = pivot - (prev_high - prev_low)

// Plot Camarilla R3, S3 and CPR levels
plot(R3, color=color.purple, title="Camarilla R3", linewidth=2)
plot(S3, color=color.purple, title="Camarilla S3", linewidth=2)
plot(pivot, color=color.yellow, title="CPR Pivot", linewidth=2)
plot(upper_cpr, color=color.green, title="CPR Upper", linewidth=1)
plot(lower_cpr, color=color.red, title="CPR Lower", linewidth=1)

// Backtesting: Capital and position size
capital = initial_capital
risk_per_trade = (position_size_percent / 100) * capital

// Long positions
if long_entry_condition
    strategy.entry("Long", strategy.long, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

if long_exit_condition
    strategy.close("Long")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Short positions
if short_entry_condition
    strategy.entry("Short", strategy.short, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

if short_exit_condition
    strategy.close("Short")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

// Plot signals
plotshape(long_entry_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Long Entry")
plotshape(long_exit_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Long Exit")
plotshape(short_entry_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Short Entry")
plotshape(short_exit_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Short Exit")




関連性

もっと