
Strategi ini menggunakan prinsip crossover dua rata-rata, menggabungkan indikator ATR untuk mengatur stop loss, ditambah dengan kontrol waktu perdagangan, untuk merancang strategi yang cocok untuk kontrak berjangka perdagangan hari. Strategi ini sederhana, mudah dipahami, dan cocok untuk pemula.
Strategi ini menggunakan persilangan garis rata-rata WMA 5 periode dan 20 periode sebagai sinyal masuk. Ketika garis rata-rata WMA 5 periode dari arah bawah menembus garis rata-rata 20 periode, maka Anda melakukan over. Ketika garis rata-rata WMA 5 periode dari arah atas menembus garis rata-rata 20 periode, maka Anda melakukan over.
Selain itu, strategi juga menggunakan indikator ATR untuk mengatur posisi stop loss. Indikator ATR dapat secara dinamis mencerminkan tingkat fluktuasi pasar. Strategi menentukan posisi stop loss dengan mengalikan nilai indikator ATR dengan satu kali lipat (misalnya 3 kali lipat), sehingga mengendalikan kerugian tunggal.
Akhirnya, strategi ini membatasi sinyal perdagangan hanya pada waktu perdagangan AS (09:00-14:30 CST). Hal ini menghindari perdagangan pada saat buka dan tutup pasar, karena kedua periode ini berfluktuasi lebih besar dan mudah membentuk sinyal palsu.
Strategi ini memiliki keuntungan sebagai berikut:
Dengan menggunakan dua garis sejajar, Anda dapat secara efektif menangkap titik-titik perubahan tren, dan masuk tepat waktu.
Untuk mengevaluasi tren besar, filter beberapa sinyal perdagangan bising dan hindari operasi berlawanan arah.
Menggunakan indikator ATR untuk secara dinamis menyesuaikan posisi stop loss, secara efektif mengendalikan kerugian tunggal.
Untuk menghindari volatilitas yang tinggi pada saat buka dan tutup pasar, Anda harus membatasi waktu perdagangan.
Aturan strategi yang sederhana dan jelas, mudah dipahami dan diterapkan, cocok untuk pemula.
Parameter yang dapat disesuaikan, seperti periode rata-rata, ATR, dan periode perdagangan, dapat digunakan untuk mengoptimalkan strategi.
Strategi ini juga memiliki risiko sebagai berikut:
Dalam situasi gempa, kemungkinan terjadi kerusakan lebih besar.
Pada saat itu, ada sedikit keterlambatan pada penyeberangan dua garis yang sama, dan mungkin akan terjadi pelanggaran pada garis pendek.
ATR parameter yang tidak tepat dapat menyebabkan stop loss terlalu besar atau terlalu kecil.
Ini adalah salah satu contoh yang paling jelas tentang bagaimana orang-orang di Indonesia bisa menjadi pemimpin yang baik.
Varietas dan siklus perdagangan yang tidak sesuai dapat mempengaruhi efektivitas strategi.
Sistem perdagangan otomatis berisiko didera.
Parameter untuk periode transaksi yang berbeda perlu disesuaikan.
Hal ini perlu ditingkatkan melalui optimasi parameter, kombinasi indikator, dan intervensi manual yang tepat.
Strategi ini dapat dioptimalkan dengan:
Cobalah sistem yang berbeda, seperti EMA, DMA, dll.
Tambahkan filter untuk indikator teknis lainnya, seperti MACD, RSI, dll.
Optimalkan parameter ATR untuk membuat stop loss lebih masuk akal.
Pencarian titik masuk yang efisien dengan indikator volume transaksi.
Sesuaikan parameter sesuai dengan karakteristik varietas yang berbeda.
Menggabungkan faktor-faktor mendasar, untuk menghindari tindakan melawan pasar.
Menambahkan komponen pembelajaran mesin, menggunakan jaringan saraf untuk memodelkan data.
Cobalah untuk menggabungkan beberapa siklus untuk menemukan lebih banyak peluang perdagangan.
Membangun portofolio strategi untuk meningkatkan stabilitas.
Strategi ini secara keseluruhan relatif sederhana dan konvensional, cocok untuk praktik nyata pemula. Pada saat yang sama, ada banyak ruang untuk pengoptimalan, dapat diperkenalkan lebih banyak indikator teknis atau metode pembelajaran mesin untuk menyempurnakan. Selain itu, penyesuaian parameter sesuai dengan karakteristik varietas perdagangan yang berbeda dan lingkungan pasar juga sangat penting.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
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/
// © james4392010
//@version=4
strategy(title="DayTradingFutures Cross-Strategy", overlay=true)
// === GENERAL INPUTS ===
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
//highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
wmaFastSource = input(defval = close, title = "Fast WMA Source")
wmaFastLength = input(defval = 5, title = "Fast WMA Period")
wmaSlowSource = input(defval = close, title = "Slow WMA Source")
wmaSlowLength = input(defval = 20, title = "Slow WMA Period")
wmaDirectionSource = input(defval = close, title = "Trend 50 Period Source")
wmaDirectionLength = input(defval = 50, title = "Trend 50 Period")
timeinrange(res, sess) => time(res, sess) != 0
// === SERIES SETUP ===
/// a couple of ma's..
wmaFast = wma(close, 5)
wmaSlow = wma(close, 20)
wmaDirection = wma(close, 50)
// === PLOTTING ===
fast = plot(series=wmaFast, color=color.white, linewidth=2)
slow = plot(series=wmaSlow, color=color.yellow, linewidth=2)
direction = plot(series=wmaDirection, color=color.red, linewidth=2)
// === INPUT BACKTEST RANGE ===
//fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
//fromYear = input(defval = 2022, title = "From Year", minval = 2022)
// To Date Inputs
//toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//toYear = input(defval = 2022, title = "To Year", minval = 2022)
//startDate = timestamp(fromYear, fromMonth, fromDay)
//finishDate = timestamp(toYear, toMonth, toDay)
//inDateRange= (time >= fromDay, fromMonth, fromYear and time <= toDay, toMonth, toYear)
// === FUNCTION EXAMPLE ===
//inDateRange = (time >= fromDay, fromMonth, fromYear) and (time <= toDay, toMonth, toYear)
// === LOGIC ===
enterLong = crossover(wmaFast, wmaSlow) and close > wmaDirection and timeinrange(timeframe.period, "0900-1430")
enterShort = crossunder(wmaFast, wmaSlow) and close < wmaDirection and timeinrange(timeframe.period, "0900-1430")
//trend := nz(trend[1], trend)
//trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
//upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = enterLong
//plotshape(enterLong ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green)
plotshape(enterLong and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
//dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = enterShort
//plotshape(enterShort ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red)
plotshape(enterShort and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
//mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
//longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
//shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
//fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
//fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="Buy", message="Buy!")
alertcondition(sellSignal, title="Sell", message="Sell!")
//changeCond = trend != trend[1]
//alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")
// Entry for strategy //
//tp=input(25,title="TakeProfit")
//sl=input(40,title="StopLoss")
strategy.entry("Long",1, when=buySignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)
strategy.entry("Short",1, when=sellSignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)
//strategy.exit("Exit", wmaFastwmaSlow)
//Buy and Sell Signals
//strategy.close_all(when =not timeinrange(timeframe.period, "1000-1430"))
// === FILL ====
fill (fast, slow, color = wmaSlow > wmaDirection ? color.green : color.red)
//fill(when=enterLong, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterLong, sl, color = color.new(color.red, 90), title = "Loss area")
//fill(when=enterShort, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterShort, sl, color = color.new(color.red, 90), title = "Loss area")