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

R:R,日額制限,ストップロスの強化によるMACD収束戦略

作者: リン・ハーンチャオチャン,日付: 2024-06-03 16:47:56
タグ:マックド

img

概要

この戦略は,MACD指標の収束と離散を活用して取引信号を生成する.MACD線が信号線を横断し,MACD線の値が1.5以上または-1.5未満になると,それぞれロングとショート信号を生成する.この戦略は,固定的なテイク・プロフィートとストップ・ロスのレベルを設定し,リスク・リターン比 (R:R) の概念を導入する.さらに,日々の最大損失と利益制限と,より緊密なトラッキングストップ・ロスを採用し,リスクをよりよく制御する.

戦略原則

  1. MACD線とMACD指標の信号線を計算する.
  2. MACD線とシグナルラインの交差状況を決定し,MACDラインの値が特定の値 (1.5と-1.5) を超えているかどうかを考慮する.
  3. ロング・シグナルが表示された場合,現在の最高価格 + 600の最低ティック・ユニットと,現在の最低価格 - 100の最低ティック・ユニットのストップ・ロスト価格で利益を得る価格でロング・ポジションを開きます.
  4. ショートシグナルが表示された場合,現在の最低価格の利益を得る価格でショートポジションを開く - 600の最低ティックユニットと現在の最高価格のストップ・ロスの価格 + 100の最低ティックユニット.
  5. ストップ・ロスのロジックを導入する: 価格が入場価格に対して 300 以上の最低ティックユニットを上昇 (ロングポジション) または減少 (ショートポジション) したとき,ストップ・ロスの価格をロングポジションの入場価格+ (閉じる価格 - 入場価格 - 300) またはショートポジションの入場価格 - (入場価格 - 閉じる価格 - 300) に移動する.
  6. 日々の最大損失と利益の制限を設定します. 日々の損失が最低600のティックユニットに達すると,または利益が最低1800のティックユニットに達すると,すべてのポジションを閉鎖します.

利点分析

  1. MACDインジケーターと価格の値条件を組み合わせることで,いくつかのノイズ信号が効果的にフィルタリングされます.
  2. 固定リスク・リターン比 (R:R) は,各取引のリスクとリターンを制御できるようにします.
  3. ストップ・ロスの論理は,トレンドが形成された後に利益を保護し,引き下げを減らす.
  4. 日々の最大損失と利益制限は 日々のリスクの暴露を制御し,過剰な損失や利益が引き上げられるのを防ぐのに役立ちます.

リスク分析

  1. MACD指標には遅延効果があり,遅延または誤った信号を引き起こす可能性があります.
  2. 固定的な得益とストップ・ロスのレベルは,異なる市場状況に適応できない可能性があり,不安定な市場では頻繁に発生する可能性があります.
  3. トレイリングストップ・ロスの論理は,トレンドの逆転時に損失を間に合って止めることができず,利益の返却につながる可能性があります.
  4. 日々の最大損失と利益制限は,日々のトレンドが明確であるときに戦略が前もってポジションを閉鎖し,潜在的な利益を見逃す可能性があります.

最適化方向

  1. 複数のタイムフレームMACDインジケーターを使用して信号を確認し,信号精度を向上することを検討します.
  2. 市場変動に基づいて,異なる市場状況に適応するために,ダイナミックに利益とストップロスのレベルを調整します.
  3. ATR インディケーターに基づいて,価格変動により良く適応するために,ストップ・ロスのストップ・ロスの距離を設定するなど,ストップ・ロスのロジックを最適化する.
  4. 日々の最大損失と利益の限界を最適化して,可能な限りトレンドの動きを把握しながらリスクを制御する適切な限界値を見つけます.

概要

この戦略は,MACD指標の収束と離散を活用し,リスク・リターン比率,ストップ・ロスト,日々の制限などのリスク管理措置を導入しながら,取引信号を生成する.この戦略は,トレンド動きを把握し,ある程度リスクを制御できるが,最適化と改善の余地がある.将来,最適化は,より堅牢でかなりの収益を得るために,信号確認,利益とストップ・ロストレベル,ストップ・ロスト,日々の制限などの側面から検討することができる.


/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DD173838

//@version=5
strategy("MACD Convergence Strategy with R:R, Daily Limits, and Tighter Stop Loss", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// MACD settings
fastLength = input.int(12, title="Fast Length", minval=1)
slowLength = input.int(26, title="Slow Length", minval=1)
signalSmoothing = input.int(9, title="Signal Smoothing", minval=1)
source = input(close, title="Source")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)

// Plot MACD and signal line
plot(macdLine, title="MACD Line", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)

// Define convergence conditions
macdConvergenceUp = ta.crossover(macdLine, signalLine) and macdLine > 1.5
macdConvergenceDown = ta.crossunder(macdLine, signalLine) and macdLine < -1.5

// Define take profit and stop loss

        
    
takeProfit = 600
stopLoss = 100

// Plot buy and sell signals on the chart
plotshape(series=macdConvergenceDown, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
plotshape(series=macdConvergenceUp, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")

// Execute short and long orders with defined take profit and stop loss
if (macdConvergenceDown)
    strategy.entry("Short", strategy.short, qty=1, stop=high + (stopLoss / syminfo.mintick), limit=low - (takeProfit / syminfo.mintick))

if (macdConvergenceUp)
    strategy.entry("Long", strategy.long, qty=1, stop=low - (stopLoss / syminfo.mintick), limit=high + (takeProfit / syminfo.mintick))

// Trailing stop logic
var float entryPrice = na
var float trailingStopPrice = na

if (strategy.position_size != 0)
    entryPrice := strategy.opentrades.entry_price(0)

if (strategy.position_size > 0)  // For long positions
    if (close - entryPrice > 300)
        trailingStopPrice := entryPrice + (close - entryPrice - 300)

if (strategy.position_size < 0)  // For short positions
    if (entryPrice - close > 300)
        trailingStopPrice := entryPrice - (entryPrice - close - 300)

if (strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice)
    strategy.close("Long", comment="Trailing Stop")

if (strategy.position_size < 0 and not na(trailingStopPrice) and close > trailingStopPrice)
    strategy.close("Short", comment="Trailing Stop")

// Daily drawdown and profit limits
var float startOfDayEquity = na
if (na(startOfDayEquity) or ta.change(time('D')) != 0)
    startOfDayEquity := strategy.equity

maxDailyLoss = 600
maxDailyProfit = 1800
currentDailyPL = strategy.equity - startOfDayEquity

if (currentDailyPL <= -maxDailyLoss)
    strategy.close_all(comment="Max Daily Loss Reached")

if (currentDailyPL >= maxDailyProfit)
    strategy.close_all(comment="Max Daily Profit Reached")


関連性

もっと