Tiga Strategi Perdagangan Rata-rata Pergerakan Golden Cross


Tanggal Pembuatan: 2024-01-16 18:18:02 Akhirnya memodifikasi: 2024-01-16 18:18:02
menyalin: 0 Jumlah klik: 724
1
fokus pada
1617
Pengikut

Tiga Strategi Perdagangan Rata-rata Pergerakan Golden Cross

Ringkasan

Strategi perdagangan silang emas tiga rata-rata adalah strategi analisis teknis yang khas. Strategi ini menggunakan tiga rata-rata bergerak dengan panjang waktu yang berbeda untuk menangkap tren dan melakukan perdagangan berisiko rendah. Ini menghasilkan sinyal beli ketika rata-rata bergerak jangka pendek melewati rata-rata bergerak jangka menengah dan rata-rata bergerak jangka menengah lebih tinggi dari rata-rata bergerak jangka panjang. Ini menghasilkan sinyal jual ketika rata-rata bergerak jangka pendek melewati rata-rata bergerak jangka menengah dan rata-rata bergerak jangka menengah lebih rendah dari rata-rata bergerak jangka panjang.

Prinsip Strategi

Triple line GOLDEN CROSS Strategi ini mengandalkan tiga moving average untuk menentukan arah tren. Moving average jangka pendek dapat merespon sensitively terhadap perubahan harga; Moving average jangka menengah memberikan penilaian tren yang lebih jelas; Moving average jangka panjang memfilter kebisingan pasar untuk menentukan arah tren jangka panjang.

Ketika rata-rata bergerak jangka pendek melintasi rata-rata bergerak jangka menengah, berarti harga mulai menerobos ke atas; pada saat ini jika rata-rata bergerak jangka menengah lebih tinggi dari rata-rata bergerak jangka panjang, berarti saat ini sedang dalam tren bullish, jadi pada saat ini menghasilkan sinyal beli.

Sebaliknya, ketika rata-rata bergerak jangka pendek di bawah rata-rata bergerak jangka menengah, harga mulai menembus ke bawah; pada saat ini jika rata-rata bergerak jangka menengah lebih rendah dari rata-rata bergerak jangka panjang, itu berarti saat ini sedang dalam tren turun, jadi pada saat ini ada sinyal jual.

Strategi ini juga menetapkan batas stop loss. Setelah transaksi, stop loss dan harga stop loss akan dihitung berdasarkan rasio stop loss yang ditetapkan. Jika harga menyentuh batas stop loss atau stop loss, maka posisi ditutup.

Keunggulan Strategis

  • Menggunakan tiga rata-rata bergerak untuk menilai tren dan meningkatkan akurasi penilaian
  • Pengaturan Stop Loss Stop dan pengendalian risiko yang efektif untuk transaksi tunggal
  • Parameter moving average yang dapat disesuaikan untuk varietas yang berbeda
  • Tujuh jenis rata-rata bergerak yang berbeda yang dapat dipilih, dan banyak jenis strategi

Risiko Strategis dan Solusi

  • Jika garis segitiga saling menyatu, sinyal yang salah bisa dihasilkan.

Solusi: Sesuaikan parameter rata-rata bergerak dengan benar untuk menghindari sinyal yang salah

  • Tetapkan stop loss yang terlalu tinggi

Solusi: Sesuaikan Stop Loss Stop Stop Ratio, tidak terlalu besar dan tidak terlalu kecil

  • Parameter yang tidak tepat yang menyebabkan frekuensi transaksi terlalu tinggi atau terlalu rendah

Solusi: Uji berbagai parameter untuk menemukan kombinasi optimal

Arah optimasi strategi

Strategi Trivalent Gold Cross dapat dioptimalkan dari beberapa aspek berikut:

  • Uji berbagai jenis parameter dengan panjang yang berbeda untuk mencari parameter yang optimal

Kombinasi moving average dengan panjang yang berbeda atau jenis yang berbeda dapat diuji untuk hasil trading yang optimal

  • Menambahkan sinyal penyaringan indikator teknis lainnya

Indikator lain seperti KDJ, MACD, dan lain-lain dapat dimasukkan ke dalam strategi untuk melakukan verifikasi multi-faktor, memfilter sinyal yang salah

  • Parameter pilihan berdasarkan karakteristik varietas yang berbeda

Periode rata-rata bergerak dapat dipersingkat untuk varietas berfluktuasi tinggi; siklus rata-rata bergerak dapat diperpanjang untuk varietas berfluktuasi rendah

  • Metode Pembelajaran Mesin untuk Menemukan Kombinasi Optimal

Menggunakan algoritma untuk secara otomatis menjelajahi ruang parameter dan dengan cepat menemukan parameter yang optimal

Meringkaskan

Triple Gold Cross Strategi adalah strategi pelacakan tren yang lebih sederhana dan praktis secara keseluruhan. Ini menggunakan tiga rata-rata bergerak untuk menangkap arah tren sekaligus, mengatur risiko pengendalian stop loss, dan mendapatkan keuntungan yang stabil.

Kode Sumber Strategi
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Kozlod - 3 MA strategy with SL/PT", shorttitle="kozlod_3ma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)

// 
// author: Kozlod
// date: 2018-03-25
// 

////////////
// INPUTS //
////////////

ma_type        = input(title = "MA Type",            defval = "SMA", options = ['SMA', 'EMA', 'WMA', 'VWMA', 'HMA', 'SMMA', 'DEMA'])
short_ma_len   = input(title = "Short MA Length",    defval = 5,     minval = 1)
short_ma_src   = input(title = "Short MA Source",    defval = close)
medium_ma_len  = input(title = "Medium MA Length",   defval = 20,    minval = 2)
medium_ma_src  = input(title = "Medium MA Source",   defval = close)
long_ma_len    = input(title = "Long MA Length",     defval = 100,   minval = 3)
long_ma_src    = input(title = "Long MA Source",     defval = close)

sl_lev_perc    = input(title = "SL Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)
pt_lev_perc    = input(title = "PT Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)

// Set initial values to 0
short_ma  = 0.0
long_ma   = 0.0
medium_ma = 0.0

// Simple Moving Average (SMA)
if ma_type == 'SMA' 
    short_ma  := sma(short_ma_src,  short_ma_len)
    medium_ma := sma(medium_ma_src, medium_ma_len)
    long_ma   := sma(long_ma_src,   long_ma_len)

// Exponential Moving Average (EMA)
if ma_type == 'EMA'
    short_ma  := ema(short_ma_src,  short_ma_len)
    medium_ma := ema(medium_ma_src, medium_ma_len)
    long_ma   := ema(long_ma_src,   long_ma_len)

// Weighted Moving Average (WMA)
if ma_type == 'WMA'
    short_ma  := wma(short_ma_src,  short_ma_len)
    medium_ma := wma(medium_ma_src, medium_ma_len)
    long_ma   := wma(long_ma_src,   long_ma_len)

// Hull Moving Average (HMA)
if ma_type == 'HMA'
    short_ma  := wma(2*wma(short_ma_src,  short_ma_len  / 2) - wma(short_ma_src,  short_ma_len),  round(sqrt(short_ma_len)))
    medium_ma := wma(2*wma(medium_ma_src, medium_ma_len / 2) - wma(medium_ma_src, medium_ma_len), round(sqrt(medium_ma_len)))
    long_ma   := wma(2*wma(long_ma_src,   long_ma_len   / 2) - wma(long_ma_src,   long_ma_len),   round(sqrt(long_ma_len)))

// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
    short_ma  := vwma(short_ma_src,  short_ma_len)
    medium_ma := vwma(medium_ma_src, medium_ma_len)
    long_ma   := vwma(long_ma_src,   long_ma_len)

// Smoothed Moving Average (SMMA)    
if ma_type == 'SMMA'
    short_ma  := na(short_ma[1])  ? sma(short_ma_src, short_ma_len)   : (short_ma[1]  * (short_ma_len  - 1) + short_ma_src)  / short_ma_len
    medium_ma := na(medium_ma[1]) ? sma(medium_ma_src, medium_ma_len) : (medium_ma[1] * (medium_ma_len - 1) + medium_ma_src) / medium_ma_len
    long_ma   := na(long_ma[1])   ? sma(long_ma_src,  long_ma_len)    : (long_ma[1]   * (long_ma_len   - 1) + long_ma_src)   / long_ma_len

// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
    e1_short  = ema(short_ma_src , short_ma_len)
    e1_medium = ema(medium_ma_src, medium_ma_len)
    e1_long   = ema(long_ma_src,   long_ma_len)
    
    short_ma  := 2 * e1_short  - ema(e1_short,  short_ma_len)
    medium_ma := 2 * e1_medium - ema(e1_medium, medium_ma_len)
    long_ma   := 2 * e1_long   - ema(e1_long,   long_ma_len)

/////////////
// SIGNALS //
/////////////

long_signal  = crossover( short_ma, medium_ma) and medium_ma > long_ma
short_signal = crossunder(short_ma, medium_ma) and medium_ma < long_ma

// Calculate PT/SL levels 
// Initial values 
last_signal    = 0
prev_tr_price  = 0.0
pt_level       = 0.0
sl_level       = 0.0

// Calculate previous trade price
prev_tr_price := (long_signal[1] and nz(last_signal[2]) != 1) or (short_signal[1] and nz(last_signal[2]) != -1) ? open : nz(last_signal[1]) != 0 ? prev_tr_price[1] : na

// Calculate SL/PT levels 
pt_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 + pt_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 - pt_lev_perc / 100)  : na
sl_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 - sl_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 + sl_lev_perc / 100)  : na

// Calculate if price hit sl/pt 
long_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  1 and close >= pt_level
long_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  1 and close <= sl_level

short_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close <= pt_level
short_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close >= sl_level

// What is last active trade? 
last_signal := long_signal ? 1 : short_signal ? -1 : long_hit_pt or long_hit_sl or short_hit_pt or short_hit_sl ? 0 : nz(last_signal[1])

//////////////
// PLOTTING //
//////////////

// Plot MAs
plot(short_ma,  color = red,    linewidth = 2)
plot(medium_ma, color = green,  linewidth = 2)
plot(long_ma,   color = yellow, linewidth = 2)


// Plot Levels 
plotshape(prev_tr_price, style = shape.cross, color = gray, location  = location.absolute, size = size.small)


plotshape(sl_lev_perc > 0 ? sl_level : na, style = shape.cross, color = red,   location  = location.absolute, size = size.small)
plotshape(pt_lev_perc > 0 ? pt_level : na, style = shape.cross, color = green, location  = location.absolute, size = size.small)

//////////////
// STRATEGY //
//////////////

strategy.entry("long",  true,  when = long_signal)
strategy.entry("short", false, when = short_signal)

strategy.close("long",  when = long_hit_pt  or long_hit_sl)
strategy.close("short", when = short_hit_pt or short_hit_sl)