Strategi Perdagangan Tren Momentum Ruda

EMA OBV
Tanggal Pembuatan: 2024-04-03 15:16:47 Akhirnya memodifikasi: 2024-04-03 15:16:47
menyalin: 0 Jumlah klik: 700
1
fokus pada
1617
Pengikut

Strategi Perdagangan Tren Momentum Ruda

Ringkasan

Strategi perdagangan tren dinamis Ruda adalah strategi perdagangan kuantitatif yang didasarkan pada momentum dan indikator tren. Strategi ini menggunakan indikator seperti OBV (On Balance Volume), EMA (Exponential Moving Average) dan rasio entitas K-line untuk menentukan waktu untuk membeli dan menjual. Strategi ini akan melakukan pembelian pada hari pembukaan ketika EMA jangka panjang, OBV inovatif tinggi, dan rasio entitas K-line lebih besar dari nilai yang ditetapkan.

Prinsip Strategi

  1. Hitung dua garis EMA, dengan parameter EMA jangka pendek 5, dan parameter EMA jangka panjang 21. Ketika EMA jangka pendek dikenakan pada EMA jangka panjang, dianggap tren naik, sebaliknya tren turun.
  2. Perhitungan indikator OBV, ketika OBV mencapai 10 hari tertinggi, dianggap kuat.
  3. Menghitung persentase entitas K-line, ketika persentase entitas lebih besar dari batas yang ditetapkan (default 50%), dianggap tren ditetapkan.
  4. Ketika tren naik, multiregional kuat dan tren ditetapkan, strategi membeli pada hari berikutnya dengan harga bukaan, dengan harga stop loss adalah harga minimum hari dan harga bukaan-1% minimal.
  5. Strategi ini dilakukan ketika harga turun di bawah harga stop loss atau harga close out di bawah EMA jangka pendek.

Analisis Keunggulan

  1. Kombinasi tren dan indikator momentum dapat menangkap varietas yang kuat.
  2. Dengan menggunakan harga buka berikutnya untuk membeli dan menghentikan kerugian secara dinamis, Anda dapat menghindari beberapa false breakout.
  3. Kondisi Stop Loss dan Stop Stop jelas, risiko terkendali.

Analisis risiko

  1. Ada keterlambatan dalam indikator tren dan momentum, yang dapat menyebabkan kenaikan harga dan stop loss prematur.
  2. Parameter tetap, kurangnya kemampuan beradaptasi, kinerja dapat bervariasi dalam kondisi pasar yang berbeda.
  3. Pengujian ulang pasar tunggal dan varietas, stabilitas strategi dan kelayakan akan diverifikasi lebih lanjut.

Arah optimasi

  1. Optimalkan parameter indikator tren dan momentum untuk meningkatkan sensitivitas dan efektivitas indikator.
  2. Memperkenalkan penilaian kondisi pasar, menyesuaikan parameter berdasarkan dinamika karakteristik pasar saat ini.
  3. Memperluas jangkauan pengujian ulang, meningkatkan pengujian untuk pasar dan varietas yang berbeda, dan meningkatkan strategi yang solid.
  4. Pertimbangkan untuk memperkenalkan manajemen posisi dan modul kontrol risiko untuk meningkatkan rasio risiko-keuntungan.

Meringkaskan

Strategi perdagangan tren Ruda yang dinamis adalah strategi perdagangan kuantitatif yang sederhana dan mudah digunakan, yang dapat menangkap varietas dan peluang tren yang kuat melalui kombinasi tren dan indikator dinamis. Namun, strategi ini juga memiliki beberapa keterbatasan, seperti masalah keterlambatan indikator, parameter tetap, dll. Di masa depan, strategi dapat dioptimalkan dan diperbaiki dengan cara mengoptimalkan parameter indikator, memperkenalkan mekanisme penyesuaian, memperluas jangkauan pengukuran, dan meningkatkan manajemen risiko, untuk meningkatkan kehandalan dan profitabilitas strategi.

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