MACDインジケーターに基づくストップロス戦略


作成日: 2023-10-26 15:51:34 最終変更日: 2023-10-26 15:51:34
コピー: 0 クリック数: 709
1
フォロー
1617
フォロワー

MACDインジケーターに基づくストップロス戦略

概要

この戦略は,MACD指数に基づいて,各取引のリスクを制御する長線取引戦略を設計している.従来の多空の逆転戦略と比較して,この戦略は,各取引のリスク管理により重点を置いている.この戦略は,目標の止損価格と停止価格を計算し,合理的なポジションサイズを設定し,各取引で発生する最大損失を制限している.これは,撤回を効果的に制御し,長期にわたって安定した利益を得ることができる.

原則

この戦略は,まず MACD指標のmacd線とシグナル線を計算する.macd線が下から上へシグナル線を突破すると,買入の信号として判断する.偽の突破をフィルターするために,戦略は barssince ((crossover ((macd_line, signal_line)) <= 5 を要求する.つまり,突破は最近の 5 つの K 線の中で発生する.同時に,macd線とシグナル線が均等に 0 未満であることを要求し,現在超売り状態にあることを示し,閉店価格がwma均等線より高いことを示し,上昇傾向を示します.上記の条件を満たす場合,買い物を開きます.

各取引に対して,戦略は合理的なストップ・ロズ・価格とストップ・ストップ・価格を計算する. ストップ・ロズ・価格は,最近3つのKラインの最低価格として設定される. ストップ・価格は,購入価格加えてストップ・価格から購入価格までの距離の4倍として設定される.

重要なのは,戦略は,承受可能なリスクに基づいて,各取引の特定のポジションを計算するということです. capital_riskのパラメータを使用して,各取引の最大承受可能な損失を総資本の割合として設定します. そして,ストップ・ロスの幅度に基づいて,米ドルでポジションの大きさを計算します. その後,契約数に変換して,買い入りのポジションを開きます.

取引毎のリスクは総資金の1%以内で管理され,撤収を効果的に管理することができる.同時に,止まり位置が大きい場合,より高い利益を得ることができる.

利点

  • リスク管理が優先され,取引ごとにリスクが管理されます.
  • ポジションのサイズを最適化し,資金を最大限に活用する
  • ストップ・ロスの戦略は 撤退を効果的に制御します
  • 合理的な止まり,より大きな利益の可能性

リスクと改善

  • MACDは遅滞しており,急速な変化のトレンドを逃している可能性がある.
  • ストップ・ローズやストップ・ストップ・ポジションの設定が不適切で,利益が減少したり,リスクが拡大したりする可能性がある
  • 取引頻度が高く,取引コストが上がる

考えるべきことは:

  • 他の指標のトレンド判断を統合し,MACDの遅れを回避する
  • ストップ・アンド・ストップ・アルゴリズムを最適化し,より柔軟に
  • 取引頻度を適切に緩和し,取引コストを削減する

要約する

この戦略は,MACD指標に基づいてトレンドの方向を判断し,リスクを優先して制御し,合理的なポジションを計算して取引する.リスク制御とポジションの最適化が鍵であり,長期にわたって安定した利益を得ることができる.しかし,MACD指標には一定の欠陥があり,止損制機構もさらなる最適化が必要である.指標の使用,止損制の設定および取引頻度の低下をさらに最適化すれば,戦略がより強くなれる.

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

//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )

capital_risk    = input( 1.0, "% capital risk per trade" ) / 100
r_exit          = input( 4.0, "Take Profit in 'R'" )
wma_length      = input( 150, 'WMA Bias Length' )

[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)

w_line = wma( close, wma_length )

golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0

float stop = na
float tp = na

// For a stop, use a recent low 
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]


// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range 
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close

// Enter the position
if golong
    strategy.entry("long", strategy.long, qty=position_size_in_contracts)
    strategy.exit("long exit","long", stop=stop, limit=tp)

// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
//     strategy.close("long")


plot( strategy.equity,  color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )