複数の移動平均のブレイクアウト戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月22日 13:41:38
タグ:

img

概要

この戦略は,複数の移動平均線の突破とコールバックに基づいて取引信号を生成する.価格が上向き移動平均線を突破したとき,価格が下向き移動平均線を下回ると,長引く.

戦略の論理

このコードは,21日,50日,100日,200日という異なる期間の4つの移動平均線を使用しています.価格はこれらのMAラインを突破するとロングポジションに入ります.価格がこれらのMAラインを下回るとショートポジションに入ります.さらに,ストップ損失と利益のレベルは戦略に設定されています.特に,ストップ損失は前のキャンドルの最低点に近い位置に設定され,利益の引き上げは前のキャンドルの最低点と最高点との距離の3倍に設定されています.

この戦略の主なアイデアは,移動平均値を使用してトレンドを判断することです.価格が上向きMAラインを突破すると,上向きトレンドを示し,長引く必要があります.価格が下向きMAラインを下落すると,下向きトレンドを示し,短引く必要があります.異なる期間の複数のMAラインを使用して,トレンドをより正確に判断し,トレンドの一貫性によって取引信号を確認することができます.

利点分析

この戦略の主な利点は以下の通りです.

  1. 複数のMAsを使用することで 誤った信号を効果的にフィルタリングできます
  2. ストップ・ロスを設定して,利益を取ることで,単一の損失を制限できます.
  3. 実行が簡単

リスク分析

この戦略の主なリスクは,

  1. MA 戦略は不一致傾向があり,価格逆転点を逃している
  2. 誤った信号は損失を引き起こす可能性があります.
  3. 誤ったストップ・ロースと/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または/または

これらのリスクは,MAパラメータを調整し,ストップ・ロスを最適化し,利益を引き出すことで軽減できます.

最適化

この戦略は,次の側面で最適化できます.

  1. 最適なパラメータを見つけるためにより多くのMA組み合わせをテストする
  2. 誤ったブレイクを避けるために他の指標を追加します
  3. ストップ・ロスを最適化し,より良いリスク・リターン比を得るために利益を取ります
  4. 戦略をより堅牢にするため,異なる市場状況にパラメータを調整する

概要

一般的に,これは戦略をフォローする典型的なトレンドである.利点は明確な論理であり,理解し実行するのが簡単である.デメリットは誤った信号に易い.パラメータ調整および他の指標を追加することによって戦略を改善することができる.中長期保有に適しており,短期取引戦略の構成要素としても使用できる.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


もっと