
Strategi ini menggunakan prinsip silang dua garis sejajar, menggabungkan penunjuk ATR untuk menetapkan hentian hentian, ditambah dengan kawalan masa perdagangan, untuk merancang satu set strategi yang sesuai untuk kontrak niaga hadapan perdagangan hari. Strategi ini sederhana, mudah difahami, dan sesuai untuk digunakan oleh pemula.
Strategi ini menggunakan persilangan garis rata-rata WMA 5 kitaran dan 20 kitaran sebagai isyarat masuk. Apabila garis rata-rata 5 kitaran dari arah bawah menembusi garis 20 kitaran, lakukan lebih banyak; apabila garis 5 kitaran dari arah atas jatuh ke bawah garis 20 kitaran, kosong.
Selain itu, strategi juga menggunakan indikator ATR untuk menetapkan kedudukan hentian kerugian. Indikator ATR secara dinamik mencerminkan kelajuan turun naik pasaran. Strategi menggunakan nilai indikator ATR yang dikalikan dengan satu kali ganda (seperti 3 kali ganda) untuk menentukan kedudukan hentian kerugian, sehingga mengawal kerugian tunggal.
Akhirnya, strategi ini hanya memicu isyarat perdagangan pada waktu perdagangan AS (09:00-14:30 CST). Ini mengelakkan perdagangan pada waktu buka dan tutup pasaran, kerana kedua-dua masa ini lebih bergolak dan mudah membentuk isyarat palsu.
Strategi ini mempunyai kelebihan berikut:
Penggunaan dua persilangan linear dapat menangkap titik-titik perubahan trend dengan berkesan, dan masuk ke dalam permainan tepat pada masanya.
Menggunakan trend besar untuk menilai, menapis sebahagian daripada isyarat perdagangan bising, dan mengelakkan operasi berlawanan arah.
Guna ATR untuk menyesuaikan kedudukan stop loss secara dinamik, dan mengawal kerugian tunggal secara berkesan.
Menghadkan masa dagangan, mengelakkan turun naik yang teruk semasa pasaran dibuka dan ditutup.
Peraturan-peraturan strategi adalah mudah difahami, mudah difahami dan mudah dilaksanakan, sesuai untuk pemula.
Parameter yang boleh disesuaikan, seperti kitaran purata, kelipatan ATR, masa dagangan, dan lain-lain, untuk mengoptimumkan strategi.
Strategi ini juga mempunyai risiko:
Dalam keadaan gegaran, lebih banyak kerosakan boleh berlaku.
Persaingan dua garis rata akan mengalami kelewatan dan mungkin terlepas laluan pendek.
Tetapan parameter ATR yang tidak betul boleh menyebabkan kerugian yang terlalu besar atau terlalu kecil.
“Saya tidak tahu apa-apa tentang apa yang berlaku di Malaysia, tetapi saya tidak tahu apa yang berlaku di Malaysia”, katanya.
Jenis dan kitaran perdagangan yang tidak sesuai akan menjejaskan keberkesanan strategi.
Sistem perdagangan automatik berisiko didera.
Parameter untuk tempoh dagangan yang berbeza perlu diselaraskan.
Ini perlu diperbaiki dengan kaedah seperti pengoptimuman parameter, kombinasi penunjuk, dan intervensi buatan yang sesuai.
Strategi ini boleh dioptimumkan dengan:
Cuba sistem yang berbeza seperti EMA, DMA dan sebagainya.
Tambahkan penapis untuk petunjuk teknikal lain seperti MACD, RSI dan sebagainya.
Mengoptimumkan parameter ATR untuk membuat stop loss lebih munasabah.
Pencarian titik masuk yang cekap dengan penunjuk jumlah dagangan.
Sesuaikan parameter mengikut ciri-ciri varieti yang berbeza.
Menggabungkan faktor asas untuk mengelakkan tindakan menentang pasaran.
Menambah komponen pembelajaran mesin, menggunakan rangkaian saraf untuk memodelkan data.
Cuba untuk menggabungkan lebih banyak kitaran untuk mencari peluang perdagangan yang lebih banyak.
Membina portfolio strategi untuk meningkatkan kestabilan.
Strategi ini secara keseluruhannya agak mudah dan biasa, sesuai untuk latihan lapangan pemula. Pada masa yang sama, ruang pengoptimuman yang besar boleh diperkenalkan untuk memperkenalkan lebih banyak petunjuk teknikal atau kaedah pembelajaran mesin untuk menyempurnakan. Selain itu, parameter penyesuaian sesuai dengan ciri-ciri varieti perdagangan yang berbeza dan keadaan pasaran juga 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")