Tiga Strategi Perdagangan Golden Cross Purata Bergerak


Tarikh penciptaan: 2024-01-16 18:18:02 Akhirnya diubah suai: 2024-01-16 18:18:02
Salin: 0 Bilangan klik: 724
1
fokus pada
1617
Pengikut

Tiga Strategi Perdagangan Golden Cross Purata Bergerak

Gambaran keseluruhan

Strategi perdagangan silang emas tiga garis rata adalah strategi analisis teknikal tipikal. Strategi ini menggunakan tiga purata bergerak dengan panjang masa yang berbeza untuk menangkap trend pada masa yang sama dan melakukan perdagangan berisiko rendah. Ia menghasilkan isyarat beli apabila rata-rata bergerak jangka pendek melintasi rata-rata bergerak jangka menengah dan rata-rata bergerak jangka menengah lebih tinggi daripada rata-rata bergerak jangka panjang. Ia menghasilkan isyarat jual apabila rata-rata bergerak jangka pendek melintasi rata-rata bergerak jangka menengah dan rata-rata bergerak jangka menengah lebih rendah daripada rata-rata bergerak jangka panjang.

Prinsip Strategi

Triple line GOLDEN CROSS strategi bergantung kepada tiga purata bergerak untuk menentukan arah trend. Purata bergerak jangka pendek dapat merespons perubahan harga dengan sensitively; purata bergerak jangka menengah memberikan penilaian trend yang lebih jelas; purata bergerak jangka panjang menapis bunyi pasaran dan menentukan arah trend jangka panjang.

Apabila purata bergerak jangka pendek melintasi purata bergerak jangka menengah, menunjukkan harga mula menembusi ke atas; pada masa ini jika purata bergerak jangka menengah lebih tinggi daripada purata bergerak jangka panjang, menunjukkan bahawa ia kini berada dalam momentum yang tinggi, jadi pada masa ini menghasilkan isyarat beli.

Sebaliknya, apabila purata bergerak jangka pendek di bawah purata bergerak jangka menengah, menunjukkan harga mula menembusi ke bawah; pada masa ini jika purata bergerak jangka menengah lebih rendah daripada purata bergerak jangka panjang, menunjukkan bahawa ia kini berada dalam trend menurun, jadi pada masa ini menghasilkan isyarat menjual.

Strategi ini juga menetapkan had stop loss. Selepas berdagang, harga stop loss dan stop loss akan dikira berdasarkan nisbah stop loss dan stop loss yang ditetapkan. Jika harga menyentuh had stop loss atau stop loss, ia akan keluar dari kedudukan.

Kelebihan Strategik

  • Menggunakan tiga purata bergerak untuk menilai trend dan meningkatkan ketepatan penilaian
  • Tetapkan stop loss untuk mengawal risiko dalam satu transaksi
  • Parameter purata bergerak yang boleh disesuaikan untuk pelbagai jenis
  • Tujuh jenis purata bergerak yang boleh dipilih, pelbagai jenis strategi

Risiko strategi dan penyelesaian

  • Apabila satu sama lain bersesuaian, ia boleh menyebabkan isyarat yang salah.

Penyelesaian: Sesuai menyesuaikan parameter purata bergerak untuk mengelakkan isyarat yang salah

  • Tetapkan peratusan stop loss yang melampau

Penyelesaian: Sesuaikan nisbah stop loss yang betul, tidak terlalu besar dan tidak terlalu kecil

  • Tetapan parameter yang tidak betul menyebabkan frekuensi dagangan terlalu tinggi atau terlalu rendah

Penyelesaian: Uji pelbagai parameter untuk mencari kombinasi optimum

Arah pengoptimuman strategi

Strategi silang emas trivial boleh dioptimumkan dalam beberapa aspek:

  • Uji pelbagai jenis parameter dengan panjang yang berbeza untuk mencari parameter yang optimum

Anda boleh menguji kombinasi purata bergerak dengan panjang yang berbeza atau jenis yang berbeza untuk mendapatkan hasil dagangan yang terbaik

  • Menambah isyarat penapisan bagi petunjuk teknikal lain

Indikator lain seperti KDJ, MACD dan lain-lain boleh dimasukkan ke dalam strategi, untuk mengesahkan pelbagai faktor, menapis isyarat yang salah

  • Parameter pilihan mengikut ciri-ciri varieti yang berbeza

Boleh memendekkan kitaran purata bergerak untuk varieti bergelombang tinggi; memanjangkan kitaran purata bergerak untuk varieti bergelombang rendah

  • Menggunakan kaedah pembelajaran mesin untuk mencari kombinasi parameter yang optimum

Menggunakan algoritma untuk bergerak secara automatik melalui ruang parameter untuk mencari parameter yang optimum dengan cepat

ringkaskan

Triple line GOLDEN CROSS adalah strategi trend-tracking yang lebih mudah dan praktikal secara keseluruhan. Ia menggunakan tiga purata bergerak untuk menangkap arah trend, menetapkan risiko kawalan henti-henti, dan dapat memperoleh keuntungan yang stabil.

Kod 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)