EMA100とNUPLの相対的な未実現利益の定量的取引戦略

EMA
作成日: 2024-06-17 14:55:13 最終変更日: 2024-06-17 14:55:13
コピー: 0 クリック数: 575
1
フォロー
1617
フォロワー

EMA100とNUPLの相対的な未実現利益の定量的取引戦略

概要

この取引戦略は,100周期インデックス移動平均 ((EMA100),純未達成利益/損失 ((NUPL) と相対未達成利益の3つの指標に基づいて,価格とEMA100の交差とNUPLと相対未達成利益の負の判断によって取引信号を生成する.価格がEMA100を突破し,NUPLと相対未達成利益が正であるときに多信号を触発し,価格がEMA100を突破し,NUPLと相対未達成利益が負であるときに空信号を触発する.この戦略は10%の固定ポジションを採用し,10%のストップ損失を設定する.

戦略原則

  1. 100サイクルEMAを主要トレンド判断指標として計算する
  2. 傾向の強さと持続性を確認するための補助指標としてNUPLと相対的な未達成利益を使用する
  3. 価格がEMA100を上/下を通過すると同時に,NUPLと相対的な未達成利益は同時に正/負の時のために多/空信号を生成する
  4. 10%の固定ポジションと10%のストップを設定し,リスクをコントロールする
  5. 多頭ポジションを保有するときは,価格が止損価格を下回ると多頭ポジションをクリアする.空頭ポジションを保有するときは,価格が止損価格を下回ると空頭ポジションをクリアする.

優位分析

  1. シンプルで理解しやすい: 戦略の論理は明確で,一般的な技術指標を使用し,理解しやすく実行できます.
  2. トレンド追跡: EMA100で主要なトレンドを捉え,トレンドマーケットで使用する
  3. リスク管理: 固定ポジションとストップを設定し,リスクを効果的に管理する
  4. 適応性:この戦略は,異なる市場と取引基準に適用できます.

リスク分析

  1. 偽信号: 変動する市場では,EMA100と頻繁に交差すると,偽信号が多く発生し,損失を招く可能性があります.
  2. 遅滞性:遅滞の指標であるEMAは,トレンドの転換時に反応が遅れて,最適な入場時間を逃す可能性があります.
  3. パラメータ最適化:戦略パラメータ (EMA周期,ポジションサイズ,ストップレートなど) は,異なる市場に応じて最適化され,不適切なパラメータは,戦略の効果を損なう可能性があります.

最適化の方向

  1. パラメータ最適化: EMA周期,ポジションサイズ,ストップレートなどのパラメータを最適化して,戦略のパフォーマンスを向上させる
  2. フィルター信号:偽信号をフィルターする他の技術指標または市場情緒指標を追加する
  3. ダイナミックなポジション管理:市場の変動率,口座の損失などの要因に基づいてポジションを動的に調整し,収益を上げ,リスクを制御する
  4. 多空ポートフォリオ:多頭と空頭の両方のポジションを同時に保有し,市場リスクをカバーし,戦略的安定性を高める

要約する

この取引戦略は,EMA100,NUPLおよび相対的に利益が実現されていない3つの指標によって取引信号を生成し,論理的明晰さ,リスクの管理,適応性の強さの利点がある.また,偽信号,遅滞性およびパラメータ最適化などのリスクもある.将来,パラメータ最適化,信号フィルタリング,ダイナミックポジション管理および多空組合せなどの方法で戦略を最適化および向上させることができる.

ストラテジーソースコード
/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Scalping Strategy with EMA 100, NUPL, and Relative Unrealized Profit", overlay=true)

// Input for EMA period
emaPeriod = input.int(100, title="EMA Period", minval=1)
ema100 = ta.ema(close, emaPeriod)
plot(ema100, color=color.blue, title="EMA 100")

// Placeholder function for NUPL (Net Unrealized Profit/Loss)
// Replace this with actual NUPL data or calculation
NUPL = close * 0.0001 // Dummy calculation

// Placeholder function for relative unrealized profit
// Replace this with actual relative unrealized profit data or calculation
relativeUnrealizedProfit = close * 0.0001 // Dummy calculation

// Define conditions for long and short entries
longCondition = ta.crossover(close, ema100) and NUPL > 0 and relativeUnrealizedProfit > 0
shortCondition = ta.crossunder(close, ema100) and NUPL < 0 and relativeUnrealizedProfit < 0

// Plot buy and sell signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")

// Calculate stop loss levels
longStopLoss = close * 0.90
shortStopLoss = close * 1.10

// Strategy entry and exit rules
if (longCondition)
    strategy.entry("Long", strategy.long, stop=longStopLoss)

if (shortCondition)
    strategy.entry("Short", strategy.short, stop=shortStopLoss)

// Set stop loss levels for active positions
if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=longStopLoss)
if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=shortStopLoss)

// Alerts for long and short entries
alertcondition(longCondition, title="Long Entry Alert", message="Long entry signal based on EMA 100, NUPL, and relative unrealized profit")
alertcondition(shortCondition, title="Short Entry Alert", message="Short entry signal based on EMA 100, NUPL, and relative unrealized profit")

// Visualize the entry conditions
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.cross, title="Long Condition")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.cross, title="Short Condition")