
Strategi ini disebut dengan strategi perdagangan kuantitatif silang rata-rata indeks ganda. Strategi ini memungkinkan perdagangan otomatis dengan menghitung rata-rata bergerak eksponensial ganda (Exponential Moving Average, EMA) dan melakukan penilaian titik jual beli silang, yang menggabungkan prinsip pembukaan posisi perdagangan kuantitatif.
Logika inti dari strategi ini didasarkan pada rata-rata bergerak dua indeks. Indikator 1 adalah 20 hari EMA jangka pendek, dan Indikator 2 adalah 50 hari EMA jangka panjang. Ketika EMA jangka pendek melewati EMA jangka panjang dari bawah, sinyal beli dihasilkan. Ketika EMA jangka pendek melewati EMA jangka panjang dari atas, sinyal jual dihasilkan.
Selain itu, strategi ini juga menggunakan indikator kuantitatif Vortex untuk membantu menilai tren dan menghasilkan sinyal perdagangan. Indikator Vortex membandingkan perbedaan antara harga tertinggi dan harga penutupan kemarin, harga terendah dan harga penutupan kemarin untuk menentukan arah kenaikan dan penurunan, dengan periode parameter 1 dan 3 hari.
Pada saat sinyal perdagangan dihasilkan, manajemen risiko dilakukan sesuai dengan modul manajemen dana yang ada di dalam strategi, yang dikombinasikan dengan prinsip rasio untung-rugi. Strategi memungkinkan pengaturan stop loss dan stop loss untuk mengunci keuntungan, untuk mengendalikan risiko.
Cara Mengoptimalkan:
Strategi ini secara keseluruhan adalah strategi silang ganda EMA yang khas, menggunakan persilangan antara parameter EMA yang berbeda untuk menilai waktu jual beli pasar, termasuk dalam strategi perdagangan garis pendek. Keuntungan terbesar dari strategi ini adalah menggunakan indikator kuantitatif untuk memfilter sinyal, dan melalui sistem perdagangan otomatis untuk mencapai penjaga nilai tanpa manusia, sambil memasang stop loss untuk mengendalikan risiko, kinerja yang relatif stabil.
/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © smottybugger
//@version= 5
strategy("The Averages Moving_X_Vortex", shorttitle="2.5billion BTC lol" , calc_on_order_fills=true, calc_on_every_tick=true, commission_type=strategy.commission.percent, commission_value=0.02, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, margin_long=0, margin_short=0,overlay=true)
// Dual Vortex
period_1 = input(15, "short Time")
period_2 = input(25, "long time")
VMP = math.sum(math.abs(high - low[3]), period_1)
VMM = math.sum(math.abs(low - high[1]), period_2)
STR = math.sum(ta.atr(1), period_1)
STR2 = math.sum(ta.atr(1), period_2)
VXpower= (input(5,"Vortex Power")/10000)*close
shorterV =(VMP / STR)*VXpower
longerV = (VMM / STR2)*VXpower
// MACross
shortlen = input(20, "ShortMa")
longlen = input(29, "LongMA")
shorterMA = ta.sma(close, shortlen)
longerMA = ta.sma(close, longlen)
// Vortex "MACross Stabilized"
Varance = input(1, "Vortex Stabilize")
Vpercent = (Varance / 100)
shortV= ((((shorterMA-close)* Vpercent)+shorterV)/2)+close
longV = ((((longerMA -close )*Vpercent)+longerV)/2)+close
//MAcross vortex stabilized
Marance = input(1, "MACross Stabilize")
MApercent = Marance / 100
shortMA = ((((shorterMA-close)*MApercent)+shorterV)/2)+close
longMA = ((((longerMA-close)*MApercent)+longerV)/2)+close
//VMXadveraged Moving cross adveraged
VMXL=(longV+longMA)/2
VMXS=(shortV+shortMA)/2
VXcross= ta.cross(VMXS,VMXL) ? VMXS : na
VMXcross= ta.cross(VMXS,VMXL)
//plot
plot(VMXS,"BUY",color=#42D420)
plot(VMXL,"SELL",color=#e20420)
crossV= ta.cross(shortV, longV) ? shortV : na
plot(shortV ,"shortV", color=#42D420)
plot(longV,"longV", color=#e20420)
plot(crossV,"crossV", color=#2962FF, style=plot.style_cross, linewidth=4)
crossMA = ta.cross(shortMA, longMA) ? shortMA : na
plot(shortMA,"shortMA", color=#42D420)
plot(longMA,"longMA", color=#e20420)
plot(crossMA,"crossMA", color=#2962FF, style=plot.style_cross, linewidth=4)
plot(VXcross,"VMXcross",color=#2962FF, style= plot.style_cross,linewidth=4)
plot(close,color=#999999)
// Vortex Condistyle
is_Vlong =shortV< longV
is_Vshort =shortV>longV
// Vortex commands
Vlong = ta.crossunder(longV, shortV)
Vshort =ta.crossover(shortV,longV)
VorteX = ta.cross(longV, shortV)
// MACross Conditions
is_MAlong = shortMA < longV
is_MAshort = shortMA > shortV
//VMX Conditions
is_VMXlong=VMXS<VMXL
is_VMXshort=VMXS>VMXL
// MA commands
MAlong = ta.crossunder(shortMA, longV)
MAshort =ta.crossover(shortMA, shortV)
MAcross = ta.cross(shortMA, longMA)
//VMX COMMANss
VMXBUY=ta.crossover( VMXS,VMXL)
VMXSELL=ta.crossunder(VMXS,VMXL)
// Close Crossing PositionLMXs
CS=is_MAshort or is_VMXshort
CL= is_MAlong or is_VMXlong
OS=MAshort or VMXSELL
OL=MAlong or VMXBUY
if VMXcross
strategy.close_all ("closed")
//if CS and OL
strategy.close("Short",comment="Short Closed")
//if CL and OS
strategy.close("Long",comment="Long Closed" )
//CA1= is_MAcross and is_VorteX
//if CA1
// strategy.close_all(comment="X2X")
// Defalongyntry qty
if is_VMXlong and VMXSELL
strategy.entry("sell",strategy.short)
if is_VMXshort and VMXBUY
strategy.entry("buy",strategy.long)
// Stop Losses & Taking Profit
sllp = input(0, "Stop Loss Long")
sll = (1 - sllp / 100) * strategy.position_avg_price
is_sll = input(true, "Stop Long")
tplp = input(0, "Take Profit Long")
tpl = (1 + tplp / 100) * strategy.position_avg_price
is_tpl = input(true, "Take Long")
slsp = input(0, "Stop Loss Short")
sls = (1 + slsp / 100) * strategy.position_avg_price
is_sls = input(true, "Stop Short")
tpsp = input(0, "Take Profit Short")
tps = (1 - tpsp / 100) * strategy.position_avg_price
is_tps = input(true, "Take Short")
if (is_sll or is_sls)
strategy.close("Stop Losses", qty_percent=100)
if (is_tpl or is_tps)
strategy.close("Take Profits", qty_percent=100)
//Strategy Backtest
//plot(strategy.equity, "Equity", color=color.red, linewidth=2, style=plot.style_areabr)