Strategi ini menggabungkan perhitungan perubahan volume harian dan indikator NVI untuk memperdagangkan perubahan pasar jangka pendek.
Secara khusus, ini menghitung jumlah hari volume lebih rendah dari hari sebelumnya, dan menggunakan perubahan nilai NVI untuk membentuk osilator. sinyal panjang dihasilkan ketika osilator membalik dari negatif ke positif, dan tetap positif pada lilin ke-2. sinyal pendek terjadi pada flip dari positif ke negatif, sementara masih negatif pada lilin ke-2.
Keuntungan dari strategi ini adalah memanfaatkan kesenjangan jangka pendek hanya dalam 2 lilin. Namun, perdagangan frekuensi tinggi seperti itu berisiko terlalu dioptimalkan, dengan kinerja yang sangat bervariasi dalam periode waktu pasar.
Selain itu, biaya perdagangan dapat menjadi perhatian untuk perdagangan jangka pendek seperti itu, yang membutuhkan penyesuaian parameter per instrumen. Dan kesalahan kecil dalam keputusan dalam kerangka waktu yang kecil dapat menyebabkan kerugian. Hanya dengan mengontrol secara ketat ukuran posisi per perdagangan strategi lilin ganda ini dapat diterapkan dengan sukses dalam jangka panjang.
/*backtest start: 2022-09-04 00:00:00 end: 2023-09-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // strategy(title = "Strategy Only 2 Candles", shorttitle = "SO2C", overlay = true, precision = 8, calc_on_order_fills = true, calc_on_every_tick = true, backtest_fill_limits_assumption = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 1000, currency = currency.USD, linktoseries = true) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // backTestSectionFrom = input(title = "═════════ DESDE ════════", defval = true, type = input.bool) FromMonth = input(defval = 1, title = "Mes", minval = 1) FromDay = input(defval = 1, title = "Dia", minval = 1) FromYear = input(defval = 2018, title = "Año", minval = 2014) backTestSectionTo = input(title = "═════════ HASTA ════════", defval = true, type = input.bool) ToMonth = input(defval = 31, title = "Mes", minval = 1) ToDay = input(defval = 12, title = "Dia", minval = 1) ToYear = input(defval = 9999, title = "Año", minval = 2014) backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59)) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // nvi = 0.0 nvi := iff(volume < volume[1], nz(nvi[1]) + (close - close[1]) / close[1], nz(nvi[1])) nvim = ema(nvi, 15) nvimax = highest(nvim, 90) nvimin = lowest(nvim, 90) azul = (nvi - nvim) * 100 / (nvimax - nvimin) // VARIABLES var compra_activada = 0 var compra = true var compra_1 = true var cerrar_compra= 0 var venta_activada = 0 var venta = true var venta_1 = true var cerrar_venta= 0 // COMPRA compra := azul > azul[1] and azul > 0 and azul[1] < 0 if (compra == 1 ) compra_activada := 1 // CIERRE COMPRA cerrar_compra := compra_activada[2] == 1 ? 1 : 0 if (cerrar_compra == 1) compra_activada := 0 // VENTA venta := azul < azul[1] and azul < 0 and azul[1] > 0 if (venta == 1 ) venta_activada := 1 // CIERRE COMPRA cerrar_venta := venta_activada[2] == 1 ? 1 : 0 if (cerrar_venta == 1) venta_activada := 0 // ESTRATEGIA if (backTestPeriod()) strategy.entry("Compra", true, when = compra == 1 ) strategy.entry("Venta", false, when = venta == 1 ) strategy.close("Compra", when = cerrar_compra == 1 ) strategy.close("Venta", when = cerrar_venta == 1 )