Ruda Momentum Trend Trading Strategi

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

img

Gambaran umum

Ruda Momentum Trend Trading Strategy adalah strategi perdagangan kuantitatif yang didasarkan pada indikator momentum dan tren. Strategi ini menggunakan indikator seperti OBV (On Balance Volume), EMA (Exponential Moving Average), dan rasio tubuh lilin untuk menentukan sinyal beli dan jual. Ketika EMA jangka pendek melintasi EMA jangka panjang, OBV mencapai level tertinggi baru, dan rasio tubuh lilin lebih besar dari ambang batas yang ditetapkan, strategi membeli pada harga pembukaan hari berikutnya; ketika harga turun di bawah harga stop-loss atau harga penutupan turun di bawah EMA jangka pendek, strategi menutup posisi.

Prinsip Strategi

  1. Menghitung dua garis EMA dengan parameter 5 untuk EMA jangka pendek dan 21 untuk EMA jangka panjang.
  2. Saat OBV mencapai level tertinggi 10 hari, momentum bullish dianggap kuat.
  3. Hitung rasio body candlestick. Ketika rasio body lebih besar dari ambang batas yang ditetapkan (default 50%), tren dianggap ditetapkan.
  4. Ketika tren naik, momentum bullish kuat, dan tren ditetapkan, strategi membeli pada harga pembukaan hari berikutnya dengan harga stop-loss ditetapkan pada minimum low hari saat ini dan harga pembukaan dikurangi 1%.
  5. Ketika harga turun di bawah harga stop loss atau harga penutupan turun di bawah EMA jangka pendek, strategi menutup posisi.

Analisis Keuntungan

  1. Dengan menggabungkan indikator tren dan momentum, strategi dapat menangkap instrumen yang kuat.
  2. Menggunakan harga pembukaan hari berikutnya untuk membeli dan stop loss dinamis dapat menghindari beberapa breakout palsu.
  3. Kondisi stop loss dan take profit jelas, dan risikonya dapat dikendalikan.

Analisis Risiko

  1. Indikator tren dan momentum memiliki keterlambatan, yang dapat menyebabkan pembelian dengan harga tinggi dan stop-loss prematur.
  2. Parameter tetap tidak memiliki kemampuan beradaptasi, dan kinerja dapat bervariasi secara signifikan di bawah kondisi pasar yang berbeda.
  3. Pengujian latar belakang di pasar dan instrumen tunggal membutuhkan verifikasi lebih lanjut tentang stabilitas dan penerapan strategi.

Arah Optimalisasi

  1. Mengoptimalkan parameter indikator tren dan momentum untuk meningkatkan sensitivitas dan efektivitas indikator.
  2. Memperkenalkan penilaian keadaan pasar dan menyesuaikan parameter secara dinamis sesuai dengan karakteristik pasar saat ini.
  3. Memperluas ruang lingkup backtesting, meningkatkan pengujian di pasar dan instrumen yang berbeda untuk meningkatkan ketahanan strategi.
  4. Pertimbangkan untuk memperkenalkan modul manajemen posisi dan pengendalian risiko untuk meningkatkan rasio risiko-manfaat.

Ringkasan

Ruda Momentum Trend Trading Strategy adalah strategi perdagangan kuantitatif yang sederhana dan mudah digunakan yang menangkap instrumen yang kuat dan peluang tren dengan menggabungkan indikator tren dan momentum. Namun, strategi ini juga memiliki keterbatasan tertentu, seperti lag indikator 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 banyak