
Strategi ini didasarkan pada strategi sederhana moving average yang dapat memberikan hasil yang baik pada pasangan mata uang yang berbeda. Ini memetakan rata-rata buka dan rata-rata tutup, memutuskan untuk membangun atau keluar dari posisi multihead ketika dua garis bersilang. Prinsipnya adalah untuk membangun posisi ketika harga tutup rata-rata naik, yang mungkin menandakan kenaikan harga di masa depan.
Strategi ini dimulai dengan memilih jenis rata-rata bergerak berdasarkan setelan, termasuk EMA, SMA, RMA, WMA, dan VWMA. Kemudian mengatur siklus untuk menghitung rata-rata bergerak, biasanya 10 hingga 250 garis K. Memilih jenis rata-rata bergerak yang berbeda dan jumlah siklus dapat menghasilkan efek yang sama sekali berbeda berdasarkan pasangan mata uang yang berbeda.
Logika transaksi spesifik dari strategi ini adalah:
Ketika posisi didirikan dianggap sebagai pertanda kenaikan harga, ketika posisi ditutup dianggap sebagai pertanda penurunan harga.
Strategi ini memiliki beberapa keuntungan utama:
Strategi ini juga memiliki beberapa risiko:
Cara mengatasi dan mengoptimalkannya:
Strategi ini secara keseluruhan logis sederhana, menggunakan indikator moving average untuk menentukan tren harga dan titik balik. Hal ini dapat mencapai efek yang sangat baik dengan penyesuaian parameter, merupakan strategi pelacakan tren yang efektif, layak untuk lebih disempurnakan dan diterapkan.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//Author @divonn1994
initial_balance = 100
strategy(title='Close v Open Moving Averages Strategy', shorttitle = 'Close v Open', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance)
//Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading----------------------------------------------------------------
bars = input.int(66, "Moving average length (number of bars)", minval=1, group='Strategy') //66 bars and VWMA for BTCUSD on 12 Hours.. 35 bars and VWMA for BTCUSD on 1 Day
strategy = input.string("VWMA", "Moving Average type", options = ["EMA", "SMA", "RMA", "WMA", "VWMA"], group='Strategy')
redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display')
greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display')
maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display')
startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy')
startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy')
startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy')
endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy')
endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy')
endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy')
//Strategy Calculations-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
inDateRange = true
maMomentum = switch strategy
"EMA" => (ta.ema(close, bars) > ta.ema(open, bars)) ? 1 : -1
"SMA" => (ta.sma(close, bars) > ta.sma(open, bars)) ? 1 : -1
"RMA" => (ta.rma(close, bars) > ta.rma(open, bars)) ? 1 : -1
"WMA" => (ta.wma(close, bars) > ta.wma(open, bars)) ? 1 : -1
"VWMA" => (ta.vwma(close, bars) > ta.vwma(open, bars)) ? 1 : -1
=>
runtime.error("No matching MA type found.")
float(na)
openMA = switch strategy
"EMA" => ta.ema(open, bars)
"SMA" => ta.sma(open, bars)
"RMA" => ta.rma(open, bars)
"WMA" => ta.wma(open, bars)
"VWMA" => ta.vwma(open, bars)
=>
runtime.error("No matching MA type found.")
float(na)
closeMA = switch strategy
"EMA" => ta.ema(close, bars)
"SMA" => ta.sma(close, bars)
"RMA" => ta.rma(close, bars)
"WMA" => ta.wma(close, bars)
"VWMA" => ta.vwma(close, bars)
=>
runtime.error("No matching MA type found.")
float(na)
//Enter or Exit Positions--------------------------------------------------------------------------------------------------------------------------------------------------------------------
if ta.crossover(maMomentum, 0)
if inDateRange
strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(maMomentum, 0)
if inDateRange
strategy.close('long')
//Plot Strategy Behavior---------------------------------------------------------------------------------------------------------------------------------------------------------------------
plot(series = maOn == "On" ? openMA : na, title = "Open moving Average", color = color.new(color.purple,0), linewidth=3, offset=1)
plot(series = maOn == "On" ? closeMA : na, title = "Close Moving Average", color = color.new(color.white,0), linewidth=2, offset=1)
bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)