MAラインに基づくトレンドフォロー戦略


作成日: 2024-02-22 17:24:02 最終変更日: 2024-02-22 17:24:02
コピー: 0 クリック数: 589
1
フォロー
1617
フォロワー

MAラインに基づくトレンドフォロー戦略

概要

この戦略は,異なる周期のMA移動平均を計算することによって,市場のトレンド方向を判断し,トレンドが上昇するときに多めにし,トレンドが低下するときに空白し,トレンド追跡を実現する.

戦略原則

  1. 20周期,60周期,120周期のMA線を計算する
  2. MA20,MA60,MA120の大きさの関係を比較して,現在のトレンドの方向を判断する
    • 値が上がったと判断します.
    • 傾向が下がっていると判断します.
  3. MA20上ではMA60を履いて多入市し,MA20下ではMA60を履いて空き入市
  4. MA60を止損基準として
    • マルチヘッドストップワイヤーはMA60の3倍です
    • 空頭止線はMA60の0.9倍

優位分析

  1. 異なる周期のMAの組み合わせを使用してトレンドを判断し,whipsawsを避ける
  2. 競争の流れが変われば勝率が上がる
  3. 明確なストップ・ストップ・ロスのルールがあり,リスクを低減します.

リスク分析

  1. 震動の状況では,MAラインの交差が頻繁に起こり,取引が頻発する
  2. 停止止損パラメータを最適化する必要があります.そうでなければ,早期停止または停止不足が発生する可能性があります.

最適化の方向

  1. 震動の判断指標を増やし,震動の市場での取引を避ける
  2. MA周期パラメータの組み合わせを最適化し,最適なパラメータを見つけます.
  3. 利回り最大化とリスク低減のバランスを確保するために,ストップ・ストップ・ローカーをテストし,最適化

要約する

この戦略は全体的な考えが明確で,MAを使ってトレンドを判断するのは非常に古典的であり,パラメータ最適化と指標最適化の後,非常に実用的なトレンド追跡戦略にすることができます.

ストラテジーソースコード
/*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")