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

限定マルティンゲールによる高度MACD戦略

作者: リン・ハーンチャオチャン開催日: 2024-06-03 10:43:00
タグ:マックドATR

img

概要

この戦略は,MACD指標とマルティンゲールマネーマネジメント方法を組み合わせ,リスクを制御しながらトレンド市場動きを把握する.この戦略は,MACD・ファストラインとスローラインのクロスオーバーを取引信号として使用し,ポジションサイズを制御するために数少ないマルティンゲールアプローチを採用する.負ける取引が発生すると,戦略は,以前の損失を回復するために,次の取引の契約数を最大3倍に倍にする.同時に,戦略はリスクをさらに制御するために,利益とストップロスの条件を設定する.

戦略の原則

  1. MACDの高速線 (デフォルト期間12),スローライン (デフォルト期間26) のクロスオーバーを取引信号として使用します.高速線がスローラインを横切るとロング,高速線がスローラインを下回るとショートします.
  2. 初期契約数は0.02です. 負ける取引が発生した場合,次の取引の契約数を最大3倍に倍にする. 3回の倍増後に収益性が達成されない場合は,契約数を0.02の初期値にリセットします.
  3. 利潤取りの条件を設定します.ロングポジションでは,入場価格より価格が1.5%上昇するとポジションを閉じる.ショートポジションでは,入場価格より価格が1%下がるとポジションを閉じる.
  4. ストップ・ロスの条件を設定します.ロングポジションでは,入場価格より価格が1%下がるとポジションを閉じる.ショートポジションでは,入場価格より価格が1%上昇するとポジションを閉じる.

戦略 の 利点

  1. MACDのトレンドフォローインダクタとマルティンゲールマネーマネジメントのメソッドを組み合わせることで,この戦略はトレンド市場から利益を得ることができ,引き下げを制御することができます.
  2. この戦略は,限られた数のマルティンゲールアプローチを使用し,無限のレバレッジのリスクを回避します.
  3. 利潤とストップ・ロスの条件が明確で リスクはさらにコントロールされます
  4. コードロジックは明確で 分かりやすく 実行できます

戦略リスク

  1. マルティンゲール手法ではレバレッジを制限していますが,レバレッジが過剰になり,大きな損失が生じるリスクがあります.
  2. MACD インディケーターは価格から逸脱し,取引信号が無効になる可能性があります.
  3. 固定された取利益率と停止損失率は,異なる市場状況に適応できない可能性があり,その結果,利益が早めに取られ,損失が停止される可能性があります.

戦略の最適化方向

  1. マルティンゲールレバレッジ比と回数を,現在の市場変動と口座リスク容量に基づいて動的に調整することを検討する.
  2. RSIやボリンジャー帯などの他の技術指標をMACD信号と組み合わせることで,より信頼性の高い取引信号を形成します.
  3. ATRベースのメリット・ストップ・ロスのような適応性のあるメリット・ストップ・ロスの方法を採用するか,市場の動向と変動に基づいてメリット・ストップ・ロスの比率を動的に調整する.
  4. ポジション管理モジュールを導入し,各取引のポジションサイズを,口座残高やリスク容量などの要因に基づいて動的に調整する.

概要

この戦略は,MACD指標とマルティンゲールマネーマネジメント方法を組み合わせることで,リスクを制御しながらトレンド市場から利益を得ることを目指している.戦略論理は明確で実行が容易であるが,マルティンゲールレバレッジと固定されたテイク・プロフィートとストップ・ロスの比率の制限に関連するリスクは依然として存在する.将来,レバレッジアプローチを動的に調整し,取引信号を最適化し,適応型テイク・プロフィートとストップ・ロスの方法を採用し,戦略の堅牢性と収益性を向上させるためにポジション管理を実装することによって戦略を最適化することができる.


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

//@version=5
strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=500)

// MACD 설정 변경
fastLength = 15
slowLength = 30
signalSmoothing = 9
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)

// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.02 // 계약 수를 0.05로 시작
var int martingaleCount = 0 // 마틴게일 카운트
var float lastTradeResult = 0

// 매수 및 매도 조건
longCondition = ta.crossover(macdLine, signalLine)
shortCondition = ta.crossunder(macdLine, signalLine)

// 매수 신호
if (longCondition)
    strategy.entry("Long", strategy.long, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 매도 신호
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 익절 및 손절 조건
strategy.close("Long", when=(close / strategy.position_avg_price >= 1.015))
strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01))
strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99))
strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99))

// 마틴게일 전략 적용
if (strategy.netprofit < lastTradeResult)
    if (martingaleCount < 3)
        contractSize := contractSize * 2
        martingaleCount := martingaleCount + 1
    else
        contractSize := 0.02 // 리셋 할 때 0.05로 리셋
        martingaleCount := 0
else
    contractSize := 0.02 // 초기화
    martingaleCount := 0

// 매수, 매도 포인트 화살표로 표시
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

関連性

もっと