Trend Mengikut Strategi Berdasarkan Garis MA

Penulis:ChaoZhang, Tarikh: 2024-02-22 17:24:02
Tag:

img

Ringkasan

Strategi ini mengira purata bergerak (MA) dari tempoh yang berbeza untuk menentukan arah trend pasaran.

Prinsip Strategi

  1. Mengira RM 20 tempoh, 60 tempoh dan 120 tempoh
  2. Bandingkan hubungan besar antara MA20, MA60 dan MA120 untuk menentukan hala tuju trend semasa
    • Jika MA20>MA60>MA120, menilai trend untuk menaik
    • Jika MA20
  3. Pergi panjang apabila MA20 melintasi MA60, dan pergi pendek apabila MA20 melintasi di bawah MA60
  4. Menggunakan MA60 sebagai garis rujukan untuk mengambil keuntungan dan berhenti kerugian
    • Ambil garisan keuntungan untuk kedudukan panjang adalah 3 kali MA60
    • Ambil garisan keuntungan untuk kedudukan pendek adalah 0.9 kali MA60

Analisis Kelebihan

  1. Gunakan gabungan MA dari tempoh yang berbeza untuk menentukan trend untuk mengelakkan whipsaws
  2. Hanya masuk pada titik pembalikan trend untuk meningkatkan kadar kemenangan
  3. Mempunyai peraturan yang jelas untuk mengambil keuntungan dan menghentikan kerugian untuk mengurangkan risiko

Analisis Risiko

  1. Dalam pasaran terikat julat, persilangan MA mungkin berlaku dengan kerap, menyebabkan perdagangan yang terlalu kerap
  2. Parameter untuk mengambil keuntungan dan berhenti kerugian perlu dioptimumkan, jika tidak kedudukan boleh dihentikan sebelum masa atau mengambil keuntungan tidak mencukupi

Arahan pengoptimuman

  1. Tambah penunjuk untuk mengenal pasti pasaran terhad julat untuk mengelakkan perdagangan berlebihan
  2. Mengoptimumkan gabungan tempoh MA untuk mencari parameter terbaik
  3. Uji dan optimum mengambil keuntungan dan berhenti kehilangan pekali untuk mengimbangi memaksimumkan pulangan dan meminimumkan risiko

Ringkasan

Strategi ini mempunyai logik yang jelas menggunakan MAs untuk menentukan trend. Selepas pengoptimuman parameter dan pengoptimuman penunjuk, ia boleh menjadi strategi trend yang sangat praktikal.


/*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")


Lebih lanjut