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

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

作者: リン・ハーンチャオチャン,日付: 2024-05-11 17時24分43秒
タグ:マックドマルチ

img

概要

この戦略は,市場動向が変化するときに取引機会を把握するために,MACD指標と限定マルティンゲールマネーマネジメント方法を組み合わせます.MACD・ファストラインがスローラインを超えると買い信号が生成され,スローラインを下回ると売り信号が生成されます.同時に,戦略は,最大3つの追加ポジションで引き下げを制御するために限定マルティンゲール方法を使用します.この戦略は,各取引に対して固定得益とストップ損失を1%設定します.

戦略の原則

  1. MACD指標の速線,遅線,シグナルラインを計算する.
  2. 急速線と遅い線の交差点を決定し,上昇する交差線で長行し,下落する交差線で短走します.
  3. 各取引に対して固定取引量 (0.01) を設定する.
  4. 前回の取引の純利益を記録する.
  5. 現在の純利益が前回の取引より低く,追加ポジション数が3未満である場合,次の取引量を倍にし,追加ポジション数を1倍に増加します.そうでなければ,取引量と追加ポジション数をリセットします.
  6. 各ロングポジションでは,価格が1%上昇すると利益を得,値が1%下落するとストップロスを取ります.ショートポジションでは逆です.
  7. グラフの買い売りポイントをマークします.

戦略 の 利点

  1. 市場動向を把握できる マルティンゲールマネーマネジメントとMACDトレンドフォローインジケーターを組み合わせます
  2. 決まった利益とストップ・ロスのレベルを設定し,個々の取引リスクを制御します.
  3. トレンドが続くときにより高いリターンを達成するために,限られたマルティンゲールポジションサイズを使用します.
  4. 額外のポジションを最大3つに制限し,口座の破綻につながる過剰なポジションサイズ化リスクを回避する.
  5. 戦略のパフォーマンスを簡単に観察するためにチャート上のサインを購入し,販売します.

戦略リスク

  1. MACD インディケーターは信号と価格の間の差異が起こり,誤った判断につながる可能性があります.
  2. 固定的な取利益とストップ損失比は,より大きな利益機会を逃したり,より大きな損失を負う可能性があります.
  3. マルティンゲールによるポジションのサイズが3倍に制限されているが,不安定な市場で連続した損失を経験すると,アカウントの爆発のリスクは依然としてあります.
  4. この戦略は,予想通りに実行できないような突然のギャップなどの異常な市場変動を考慮しない.

戦略の最適化方向

  1. MACD信号をフィルタリングするために,MAなどの傾向確認指標を導入することを検討する.
  2. ATR や ダイナミックストップ損失の割合などの取利益とストップ損失の設定を最適化します.
  3. 引き上げリスクを制御するために,追加ポジションの数と比率を最適化する.
  4. 価格格差の際の取引の停止など,異常な市場状況に対処するメカニズムを確立する.
  5. 市場変動に基づいてポジションを動的に調整するためにポジションサイズを導入することを検討する.

概要

この戦略は,トレンド市場で良い結果を達成できる限られたマルティンゲールを使用してドラウダウンを制御しながらMACD指標を通じてトレンドを捉える.しかし,この戦略には,信号障害や固定ストップ損失などの特定のリスクもあります.他の指標を導入し,パラメータ設定を最適化し,ポジションサイズ化,および他の方法により,この戦略の堅牢性と収益性がさらに向上することができます.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 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=100)

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

// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.01
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.01))
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.01
        martingaleCount := 0
else
    contractSize := 0.01
    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")

関連性

もっと