Ruda Momentum Trend Strategi Perdagangan

EMA OBV
Tarikh penciptaan: 2024-04-03 15:16:47 Akhirnya diubah suai: 2024-04-03 15:16:47
Salin: 0 Bilangan klik: 387
1
fokus pada
1166
Pengikut

Ruda Momentum Trend Strategi Perdagangan

Gambaran keseluruhan

Strategi perdagangan trend dinamik Ruda adalah strategi perdagangan kuantitatif berdasarkan momentum dan indikator trend. Strategi ini menggunakan indikator seperti OBV ((On Balance Volume), EMA ((Exponential Moving Average) dan nisbah entiti K-line untuk menilai masa membeli dan menjual. Apabila EMA jangka pendek melalui EMA jangka panjang, OBV berinovasi tinggi, dan nisbah entiti K-line lebih besar daripada nilai terhad yang ditetapkan, strategi ini akan dibeli pada hari pembukaan; apabila harga jatuh dari harga henti atau menutup harga jatuh dari EMA jangka pendek, strategi itu akan ditutup.

Prinsip Strategi

  1. Hitung dua garis EMA, parameter EMA jangka pendek adalah 5, parameter EMA jangka panjang adalah 21. Apabila EMA jangka pendek dikenakan EMA jangka panjang, ia dianggap sebagai trend ke atas, sebaliknya ia adalah trend ke bawah.
  2. Mengira Indeks OBV, apabila OBV Mencapai 10 Hari Tinggi, Berfikirkan Tenaga Bergerak Berkala Kuat.
  3. Hitung bahagian entiti K, apabila bahagian entiti lebih besar daripada tetingkatan yang ditetapkan ((default 50%), menganggap trend ditetapkan ≠
  4. Apabila trend ke atas, pergerakan berbilang arah kuat dan trend ditubuhkan, strategi membeli pada harga pembukaan pada hari berikutnya, dengan harga hentian adalah harga terendah pada hari itu dan nilai minimum harga pembukaan - 1%.
  5. Apabila harga melepasi harga stop loss atau harga penutupan melepasi EMA jangka pendek, strategi melepasi kedudukan.

Analisis kelebihan

  1. Di samping itu, ia juga boleh digunakan untuk menjejaki varieti yang kuat.
  2. Dengan menggunakan harga bukaan hari berikutnya untuk membeli dan berhenti dinamik, anda boleh mengelakkan beberapa pecah palsu.
  3. Keadaan penghentian dan penangguhan adalah jelas dan risiko boleh dikawal.

Analisis risiko

  1. Indeks trend dan momentum berada di belakang, dan mungkin berlaku pembelian tinggi dan penangguhan kerugian terlalu awal.
  2. Parameter tetap, kekurangan penyesuaian, dan prestasi mungkin berbeza dalam keadaan pasaran yang berbeza.
  3. Pengujian semula pasaran tunggal dan varieti, kestabilan strategi dan kebolehgunaan perlu disahkan lebih lanjut.

Arah pengoptimuman

  1. Mengoptimumkan parameter trend dan momentum untuk meningkatkan kepekaan dan keberkesanan indikator.
  2. Memperkenalkan penilaian keadaan pasaran, menyesuaikan parameter mengikut dinamika ciri pasaran semasa.
  3. Memperluas jangkauan pengesanan semula, meningkatkan ujian untuk pasaran dan varieti yang berbeza, dan meningkatkan ketahanan strategi.
  4. Pertimbangkan untuk memperkenalkan modul pengurusan kedudukan dan kawalan risiko untuk meningkatkan nisbah risiko pendapatan.

ringkaskan

Strategi perdagangan trend dinamik Ruda adalah strategi perdagangan kuantitatif yang mudah digunakan dan mudah digunakan, yang dapat menangkap varieti dan peluang trend yang kuat melalui gabungan trend dan indikator dinamik. Tetapi strategi ini juga mempunyai beberapa batasan, seperti masalah ketinggalan indikator, parameter tetap.

Kod sumber strategi
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © lhcbenac

//@version=5
strategy('Ruda_Strategy', overlay=true , initial_capital=5000 , pyramiding = 3, commission_type =  strategy.commission.cash_per_contract , commission_value =  1 )

//
// 
////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                    Otimizações                     //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////
//
// 

////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////
//
//
// Indica situação de Compra ou Venda

// Condição True or False 
YEAR_BT= input.int(1,title="Nº Anos ", group = "Backtest")

INPUT_ME1 = input.int(5,title="Momentum ", group = "RUDA")
INPUT_ME2 = input.int(21,title="Trend ", group = "RUDA")
INPUT_CORPO = input.int(50,title="CORPO ", group = "RUDA")/100



v_obv = ta.obv
v_med1 = ta.ema(close , INPUT_ME1)
v_med2 = ta.ema(close , INPUT_ME2)
valid_1 = v_med1 > v_med2 
valid_2 = v_obv >= ta.highest(v_obv[1], 10)
valid_3 = math.abs(close - open) / (high-low) > INPUT_CORPO
plot(v_med1)
plot(v_med2)

compra = valid_1 and valid_2 and  strategy.position_size == 0 and valid_3


var float v_minima_ref = na

dataInicio = timestamp(year(timenow) - YEAR_BT, month(timenow), dayofmonth(timenow), 00, 00)

// Variáveis globais
var float preco_entrada = na
var float preco_stop = na

if compra and time >= dataInicio and ta.change(time("D")) != 0 and ta.change(compra)  
    v_minima_ref := low
    preco_entrada := open
    preco_stop := math.min(low, open - 0.01 * open)
    strategy.entry("Compra", strategy.long , stop = preco_stop )
    if (not na(preco_entrada) and not na(preco_stop))
        label.new(x=bar_index, y= low * 0.9, text= "Dia: " + str.tostring(dayofmonth) + "\nPreço de Entrada: " + str.tostring(preco_entrada) + "\nPreço de Stop Loss: " + str.tostring(preco_stop), style=label.style_label_up, color=color.green)

    
    
// Lógica de saída
// Saída no stop loss
if (not na(preco_stop) and low < preco_stop and ta.change(low) < 0)
    strategy.close("Compra", comment="Saída no Stop")

// Saída no lucro
if (close < v_med1 and ta.change(close) < 0)
    strategy.close("Compra", comment="Saída na Media")

venda =( (not na(preco_stop) and low < preco_stop and ta.change(low) < 0) or (close < v_med1 and ta.change(close) < 0) ) and strategy.position_size > 0
codiff = compra ? 1 : venda ? -1 : na 
plotarrow(codiff, colorup=#00c3ff, colordown=#ff0062,title="Compra", maxheight=20, offset=0)