Ruda Momentum Trend Strategi Dagangan

Penulis:ChaoZhang, Tarikh: 2024-04-03 15:16:47
Tag:EMAOBV

img

Ringkasan

Ruda Momentum Trend Trading Strategy adalah strategi perdagangan kuantitatif berdasarkan petunjuk momentum dan trend. Strategi ini menggunakan penunjuk seperti OBV (On Balance Volume), EMA (Exponential Moving Average), dan nisbah badan lilin untuk menentukan isyarat beli dan jual. Apabila EMA jangka pendek melintasi di atas EMA jangka panjang, OBV mencapai tahap tertinggi baru, dan nisbah badan lilin lebih besar daripada ambang yang ditetapkan, strategi membeli pada harga pembukaan hari berikutnya; apabila harga jatuh di bawah harga stop-loss atau harga penutupan jatuh di bawah EMA jangka pendek, strategi menutup kedudukan.

Prinsip Strategi

  1. Hitung dua garis EMA dengan parameter 5 untuk EMA jangka pendek dan 21 untuk EMA jangka panjang Apabila EMA jangka pendek melintasi di atas EMA jangka panjang, trend dianggap menaik, dan sebaliknya.
  2. Apabila OBV mencapai paras tertinggi 10 hari, momentum bullish dianggap kuat.
  3. Hitung nisbah badan candlestick Apabila nisbah badan lebih besar daripada ambang yang ditetapkan (default 50%), trend dianggap ditetapkan.
  4. Apabila trend menaik, momentum menaik kuat, dan trend ditubuhkan, strategi membeli pada harga pembukaan hari berikutnya dengan harga stop-loss ditetapkan pada minimum rendah hari semasa dan harga pembukaan tolak 1%.
  5. Apabila harga jatuh di bawah harga stop-loss atau harga penutupan jatuh di bawah EMA jangka pendek, strategi menutup kedudukan.

Analisis Kelebihan

  1. Dengan menggabungkan penunjuk trend dan momentum, strategi boleh menangkap instrumen yang kuat.
  2. Menggunakan harga pembukaan hari berikutnya untuk membeli dan stop-loss dinamik boleh mengelakkan beberapa pecah palsu.
  3. Keadaan stop-loss dan mengambil keuntungan adalah jelas, dan risiko boleh dikawal.

Analisis Risiko

  1. Penunjuk trend dan momentum mempunyai kelewatan, yang boleh membawa kepada pembelian dengan harga tinggi dan stop-loss yang lebih awal.
  2. Parameter tetap tidak dapat disesuaikan, dan prestasi boleh berbeza-beza dengan ketara di bawah keadaan pasaran yang berbeza.
  3. Ujian semula di pasaran dan instrumen tunggal memerlukan pengesahan lanjut mengenai kestabilan dan penerapan strategi.

Arah pengoptimuman

  1. Mengoptimumkan parameter penunjuk trend dan momentum untuk meningkatkan kepekaan dan keberkesanan penunjuk.
  2. Memperkenalkan penilaian keadaan pasaran dan menyesuaikan parameter secara dinamik mengikut ciri pasaran semasa.
  3. Memperluas ruang lingkup pengujian backtesting, meningkatkan pengujian di pasaran dan instrumen yang berbeza untuk meningkatkan ketahanan strategi.
  4. Pertimbangkan untuk memperkenalkan modul pengurusan kedudukan dan kawalan risiko untuk meningkatkan nisbah risiko-balasan.

Ringkasan

Ruda Momentum Trend Trading Strategy adalah strategi perdagangan kuantitatif yang mudah dan mudah digunakan yang menangkap instrumen yang kuat dan peluang trend dengan menggabungkan penunjuk trend dan momentum. Walau bagaimanapun, strategi ini juga mempunyai batasan tertentu, seperti lag penunjuk dan parameter tetap.


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






Berkaitan

Lebih lanjut