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

指数関数移動平均のクロスオーバーレバレッジ戦略

作者: リン・ハーンチャオチャン,日付: 2024-04-30 16:26:37
タグ:マティックエイママルチ

img

概要

この戦略は,20日および55日指数的な移動平均値 (EMA) のクロスオーバーを使用して,取引信号を生成する.短期EMAが長期EMAを超えると購入信号が起動し,逆が起こると販売信号が起動する.この戦略はまた,潜在的なリターンとリスクの両方を増幅するレバレッジ取引も導入する.さらに,この戦略には,誤った信号のリスクを軽減するために,クロスオーバー後に価格が短期EMAに触れたときにのみポジションに入れる条件制限が含まれています.最後に,ユーザーはEMAの代わりに単純な移動平均値 (SMA) を使用するオプションを持っています.

戦略原則

  1. 20日間および55日間の EMA (または SMA) を計算する.
  2. 短期EMAが長期EMAを超えているかどうかを判断します.もし真である場合は,準備するEMAを真に設定し,ポジションに入る準備を示します.
  3. readyToEnterが trueで価格が短期の EMAに触れた場合,購入オーダーを実行し,prepToEnterを falseにリセットします.
  4. 短期EMAが長期EMAを下回る場合は,ポジションを閉じる.
  5. レバレッジパラメータに基づいてポジションサイズを設定します.
  6. 戦略を実行するには,ユーザが定義したバックテスト期間内でのみ実行する.

戦略 の 利点

  1. 移動平均のクロスオーバーは,ほとんどの市場に適した 傾向を決定するためのシンプルで使いやすい方法です.
  2. 利息取引を導入することで 利益が増えます
  3. 条件付きの制限を加えることで 誤った信号の危険性が減ります
  4. EMAとSMAの選択は,異なるユーザーの好みに合致します.
  5. コード構造は明確で 分かりやすく 変更も可能です

戦略リスク

  1. 利息取引はリスクを増大させ 判断が間違っている場合 大幅な損失をもたらす可能性があります
  2. 移動平均のクロスオーバーは遅延効果があり,最高のエントリー機会を逃す可能性があります.
  3. 市場が不安定である場合,頻繁に取引が起こり,高額な取引手数料が発生する可能性があります.

戦略の最適化方向

  1. 移動平均期間を最適化して,現在の市場に最も適したパラメータを見つけようとします.
  2. RSIやMACDなどの他の指標を導入し,トレンドを包括的に判断し,勝利率を向上させる.
  3. ストップ・ロストとテイク・プロフィートのレベルを設定し,単一の取引リスクを制御する.
  4. 市場変動に応じてレバレッジの大きさを動的に調整し,レバレッジが低いときはレバレッジを増やし,レバレッジが高いときはレバレッジを減らします.
  5. マシン学習アルゴリズムを導入してパラメータを適応的に最適化します

概要

この戦略は,移動平均クロスオーバーとレバレッジ取引を組み合わせて,リターンを増幅しながら市場動向を把握する.しかし,レバレッジは高リスクをもたらし,慎重に使用する必要がある.さらに,より多くの指標を導入し,パラメータを動的に調整することによって達成できるこの戦略の最適化にも余地があります.全体的に,この戦略は,高いリターンを追求し,高いリスクを負うことができるトレーダーに適しています.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy with Leverage, Conditional Entry, and MA Option", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs for backtesting period
startDate = input(defval=timestamp("2023-01-01"), title="Start Date")
endDate = input(defval=timestamp("2024-04-028"), title="End Date")

// Input for leverage multiplier
leverage = input.float(3.0, title="Leverage Multiplier", minval=1.0, maxval=10.0, step=0.1)

// Input for choosing between EMA and MA
useEMA = input.bool(true, title="Use EMA (true) or MA (false)?")

// Input source and lengths for MAs
src = close
ema1_length = input.int(20, title='EMA/MA-1 Length')
ema2_length = input.int(55, title='EMA/MA-2 Length')

// Calculate the MAs based on user selection
pema1 = useEMA ? ta.ema(src, ema1_length) : ta.sma(src, ema1_length)
pema2 = useEMA ? ta.ema(src, ema2_length) : ta.sma(src, ema2_length)

// Tracking the crossover condition for strategy entry
crossedAbove = ta.crossover(pema1, pema2)

// Define a variable to track if a valid entry condition has been met
var bool readyToEnter = false

// Check for MA crossover and update readyToEnter
if (crossedAbove)
    readyToEnter := true

// Entry condition: Enter when price touches MA-1 after the crossover // and (low <= pema1 and high >= pema1)
entryCondition = readyToEnter

// Reset readyToEnter after entry
if (entryCondition)
    readyToEnter := false

// Exit condition: Price crosses under MA-1
exitCondition = ta.crossunder(pema1, pema2)

// Check if the current bar's time is within the specified period
inBacktestPeriod = true

// Execute trade logic only within the specified date range and apply leverage to position sizing
if (inBacktestPeriod)
    if (entryCondition)
        strategy.entry("Long", strategy.long, qty=strategy.equity * leverage / close)
    if (exitCondition)
        strategy.close("Long")


// Plotting the MAs for visual reference
ema1_color = pema1 > pema2 ? color.red : color.green
ema2_color = pema1 > pema2 ? color.red : color.green
plot(pema1, color=ema1_color, style=plot.style_line, linewidth=1, title='EMA/MA-1')
plot(pema2, color=ema2_color, style=plot.style_line, linewidth=1, title='EMA/MA-2')


関連性

もっと