Moving Average Crossover Trend Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-05 14:12:27
Tag:

img

Ringkasan

Strategi berikut adalah strategi perdagangan kuantitatif yang menjejaki trend pasaran. Strategi ini menghasilkan isyarat perdagangan dengan mengira purata bergerak pantas dan perlahan dan menangkap titik perubahan dalam trend pasaran apabila crossover berlaku.

Logika Strategi

Prinsip utama strategi ini adalah untuk menilai trend pasaran menggunakan purata bergerak eksponen (EMA) dengan parameter yang berbeza. Strategi ini menentukan EMA cepat dan EMA perlahan. Apabila EMA cepat melintasi di atas EMA perlahan, ia menunjukkan pembalikan trend menaik di pasaran. Apabila EMA cepat melintasi di bawah EMA perlahan, ia menunjukkan pembalikan trend menurun.

Pada laluan ke atas, strategi akan membuka kedudukan panjang. Pada laluan ke bawah, strategi akan membuka kedudukan pendek. Strategi akan memegang kedudukannya sehingga mengambil keuntungan atau menghentikan kerugian dicetuskan, atau persilangan ke arah yang bertentangan berlaku lagi.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Logik strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan, sesuai untuk pemula;
  2. Menggunakan EMA untuk menyelaraskan harga dapat menapis bunyi pasaran dengan berkesan dan mengenal pasti trend;
  3. Parameter boleh disesuaikan dengan fleksibel untuk menyesuaikan diri dengan pasaran dengan kitaran yang berbeza;
  4. Strategi ini boleh dilanjutkan kepada versi pelbagai jangka masa untuk meningkatkan kestabilan.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Dalam pasaran yang berbeza, beberapa stop loss boleh berlaku, yang memberi kesan kepada keuntungan;
  2. Ia tidak dapat mengenal pasti jenis trend (bullish atau bearish), yang boleh membawa kepada kerugian yang teruk;
  3. Tetapan parameter EMA yang tidak betul boleh menyebabkan perdagangan berlebihan atau kelewatan pengesanan.

Untuk mengurangkan risiko, pertimbangkan untuk menggabungkan penunjuk lain untuk menentukan jenis trend, atau menetapkan nisbah stop loss yang lebih luas.

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Meningkatkan penilaian jenis trend untuk mengelakkan pembukaan kedudukan terhadap trend;
  2. Tambah penilaian pelbagai jangka masa untuk meningkatkan kualiti isyarat;
  3. Dinamis menyesuaikan stop loss dan mengambil nisbah keuntungan untuk mengoptimumkan titik keluar;
  4. Gabungkan penunjuk lain untuk menapis perdagangan yang salah.

Kesimpulan

Ringkasnya, Strategi Mengikuti Trend Moving Average Crossover adalah strategi perdagangan trend yang mudah dan praktikal. Idea teras strategi jelas dan mudah dilaksanakan, dan juga terdapat ruang untuk pengoptimuman. Dengan menyesuaikan parameter, menambah analisis pelbagai jangka masa, hentian dinamik dll, kestabilan dan keuntungan strategi dapat terus ditingkatkan.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Zhukov trade', overlay=true, calc_on_every_tick=true, currency=currency.USD)

// INPUT:

// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=10, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=20, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')

// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2030 23:59'))

// Set take profit and stop loss percentages
take_profit_percent = input(1.0, title ="Take Profit Percent") / 100.0
stop_loss_percent = input(1.0, title ="Stop Loss Percent") / 100.0

// CALCULATIONS:

// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close, 200)

// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)

// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'

// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA) and inDateRange
shortCondition = ta.crossunder(fastEMA, slowEMA) and inDateRange

// ORDERS:

// Submit entry (or reverse) orders
if longCondition and longOK
    strategy.entry(id='long', direction=strategy.long)

if shortCondition and shortOK
    strategy.entry(id='short', direction=strategy.short)

// Exit orders
if strategy.position_size > 0 and longOK
    strategy.exit(id='exit long', from_entry='long', limit=strategy.position_avg_price * (1 + take_profit_percent), stop=strategy.position_avg_price * (1 - stop_loss_percent))

if strategy.position_size < 0 and shortOK
    strategy.exit(id='exit short', from_entry='short', limit=strategy.position_avg_price * (1 - take_profit_percent), stop=strategy.position_avg_price * (1 + stop_loss_percent))


Lebih lanjut