Strategi Penembusan Purata Bergerak Berbilang

Penulis:ChaoZhang, Tarikh: 2023-11-22 13:41:38
Tag:

img

Ringkasan

Strategi ini menghasilkan isyarat perdagangan berdasarkan penembusan dan panggilan balik beberapa garis purata bergerak. Ia pergi lama apabila harga memecahkan garis purata bergerak ke atas dan pergi pendek apabila harga jatuh di bawah garis purata bergerak ke bawah.

Logika Strategi

Kod ini menggunakan 4 garis purata bergerak dengan tempoh yang berbeza - 21 hari, 50 hari, 100 hari dan 200 hari. Ia memasuki kedudukan panjang apabila harga memecahkan garis MA ini dan memasuki kedudukan pendek apabila harga jatuh di bawah garis MA ini. Di samping itu, tahap stop loss dan mengambil keuntungan ditetapkan dalam strategi. Khususnya, stop loss ditetapkan berhampiran titik terendah lilin sebelumnya, dan mengambil keuntungan ditetapkan pada jarak 3 kali jarak antara titik terendah dan titik tertinggi lilin sebelumnya.

Idea utama strategi ini adalah untuk menilai trend menggunakan purata bergerak. Apabila harga menembusi garis MA ke atas, ia menunjukkan trend menaik jadi harus pergi panjang. Apabila harga jatuh di bawah garis MA ke bawah, ia menunjukkan trend menurun jadi harus pergi pendek. Menggunakan pelbagai garis MA dengan tempoh yang berbeza boleh menilai trend dengan lebih tepat dan juga mengesahkan isyarat perdagangan melalui konsistensi trend.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Menggunakan pelbagai MAs boleh menapis isyarat palsu dengan berkesan
  2. Menetapkan stop loss dan mengambil keuntungan boleh mengurangkan kerugian tunggal
  3. Mudah dilaksanakan

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Strategi MA terdedah kepada salah selaraskan, oleh itu kehilangan titik pembalikan harga
  2. Penembusan isyarat palsu boleh menyebabkan kerugian
  3. Tetapan stop loss dan mengambil keuntungan yang tidak betul boleh memperkuat kerugian

Risiko ini boleh dikurangkan dengan menyesuaikan parameter MA dan mengoptimumkan stop loss dan mengambil keuntungan.

Pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji lebih banyak gabungan MA untuk mencari parameter optimum
  2. Tambah penunjuk lain untuk mengelakkan pecah palsu
  3. Mengoptimumkan stop loss dan mengambil keuntungan untuk nisbah risiko-balasan yang lebih baik
  4. Sesuaikan parameter untuk keadaan pasaran yang berbeza untuk menjadikan strategi lebih kukuh

Ringkasan

Secara umum, ini adalah trend tipikal yang mengikuti strategi. Kelebihannya adalah logik yang jelas dan mudah difahami dan dilaksanakan. Kelemahannya adalah terdedah kepada isyarat palsu. Strategi ini boleh ditingkatkan dengan menyesuaikan parameter dan menambah penunjuk lain. Ia sesuai untuk memegang jangka menengah hingga panjang dan juga boleh digunakan sebagai komponen strategi perdagangan jangka pendek.


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


Lebih lanjut