MA線に基づく戦略をフォローする傾向

作者: リン・ハーンチャオチャン,日付: 2024-02-22 17:24:02
タグ:

img

概要

この戦略は,市場傾向の方向性を決定するために,異なる期間の移動平均値 (MA) を計算します.傾向が上昇しているときに長行し,傾向が低下しているときに短行します.

戦略原則

  1. 20 期,60 期,および 120 期MAsを計算する
  2. MA20,MA60 と MA120 の大きさの関係を比較して,現在の傾向の方向性を決定します.
    • MA20>MA60>MA120の場合,上昇傾向であると判断する.
    • MA20
  3. MA20がMA60を横切るとロング,MA20がMA60を下回るとショート
  4. 利回りとストップロスの基準線としてMA60を使用する.
    • ローグポジションの利回線はMA60の3倍です
    • ショートポジションの利回線はMA60の0.9倍です

利点分析

  1. Whipsawsを避けるためにトレンドを決定するために,異なる期間のMAコンボを使用
  2. 勝率を高めるために 傾向の逆転点でのみ入力します
  3. リスクを減らすために,利益とストップ損失を取るための明確なルールがあります.

リスク分析

  1. 範囲限定市場では,MAクロスオーバーが頻繁に起こり,取引が頻繁すぎる可能性があります.
  2. 利潤とストップ損失のパラメータを最適化する必要があります,そうでなければポジションは早めに停止される可能性がありますまたは利潤は十分ではありません

オプティマイゼーションの方向性

  1. 過剰取引を避けるために範囲限定市場を特定するための指標を追加する
  2. 最適なパラメータを見つけるために MA 期間の組み合わせを最適化します
  3. 利回りを最大化しリスクを最小化するバランスをとるために,利益とストップ損失の係数をテストし最適化します

概要

この戦略は,MAsを使用してトレンドを決定する明確な論理を持っています.パラメータの最適化と指標の最適化の後,非常に実践的なトレンドフォロー戦略になり得ます.


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

//@version=5
strategy("MA60上多下空", overlay=true)

// 计算MA20/60/120
ma20 = ta.sma(close, 20)
ma60 = ta.sma(close, 60)
ma120 = ta.sma(close, 120)

// 判断MA的趋势
maUpTrend = ma20 > ma60 and ma60 > ma120
maDownTrend = ma20 < ma60 and ma60 < ma120

// 画竖直线标记MA趋势转折点
plotshape(maUpTrend and ta.crossover(ma20, ma60), style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(maDownTrend and ta.crossunder(ma20, ma60), style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// 画背景标记MA趋势
bgcolor(maUpTrend ? color.new(color.green, 90) : na)
bgcolor(maDownTrend ? color.new(color.red, 90) : na)

// 建立多头仓位的条件
longCondition = ta.crossover(close, ma60)

// 建立空头仓位的条件
shortCondition = ta.crossunder(close, ma60)

// 在穿过MA60时,根据条件建立相应的多头或空头仓位
if (longCondition)
    strategy.entry("Long", strategy.long)

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

// 止盈止损规则
calculateReturns() =>
    close / strategy.position_avg_price - 1

takeProfitCondition = calculateReturns() >= 3  // 仓位盈利达到300%
stopLossCondition = calculateReturns() <= -0.1  // 仓位亏损达到10%

if (takeProfitCondition)
    strategy.close("Long", comment="Take Profit")
    strategy.close("Short", comment="Take Profit")

if (stopLossCondition)
    strategy.close("Long", comment="Stop Loss")
    strategy.close("Short", comment="Stop Loss")


もっと