
Strategi ini terutama menggunakan indikator Stoch yang terjadi di area overbought oversold sebagai sinyal masuk, dan dikombinasikan dengan indikator EMA untuk menilai arah tren saat ini, hanya melakukan multi-operasi dalam tren EMA yang terus meningkat, melakukan operasi shorting dalam tren EMA yang terus menurun, merupakan strategi pelacakan tren yang khas.
Strategi ini terdiri dari tiga bagian utama:
Menggunakan dua parameter EMA yang berbeda, cepat dan lambat, EMA dinilai sebagai tren naik ketika berada di atas EMA lambat, dan EMA dinilai sebagai tren turun ketika berada di bawah EMA lambat.
Indikator Stoch terdiri dari% K line dan% D line,% K line menghasilkan sinyal beli ketika terjadi persilangan emas dengan% D line di atas zona overbought,% K line menghasilkan sinyal jual ketika terjadi persilangan mati dengan% D line di bawah zona oversold. Strategi ini hanya menghasilkan sinyal perdagangan ketika persilangan indikator Stoch terjadi di zona overbought dan oversold.
Strategi ini menetapkan mekanisme stop loss dan stop loss pada saat yang sama. Ketika memegang beberapa posisi, jika harga turun di bawah stop loss yang ditetapkan, maka posisi yang sama akan dihentikan. Jika harga melampaui stop loss yang ditetapkan, maka posisi yang sama akan dihentikan.
Secara keseluruhan, strategi ini merupakan strategi perdagangan kuantitatif yang lebih khas, menggunakan kombinasi indikator untuk menentukan arah tren dan sinyal perdagangan, dan didukung dengan aturan manajemen risiko yang ketat, dapat secara efektif mengurangi risiko perdagangan.
Strategi ini memiliki beberapa keuntungan utama:
Menggunakan EMA untuk mengevaluasi tren di sub-level utama untuk menghindari kecanduan di pasar yang tidak jelas.
Indikator Stoch memiliki kemampuan untuk mencerminkan dengan baik apakah saat ini berada di zona overbought atau oversold, sehingga menghasilkan sinyal crossover yang memungkinkan perdagangan zona overbought dan oversold.
Strategi ini mengidentifikasi situasi yang mungkin terjadi antara over dan under, sehingga sinyal yang dihasilkan dapat disaring lebih lanjut, mengurangi probabilitas sinyal yang salah, dan juga menghindari membuka posisi buta di pasar yang kompleks.
Mekanisme manajemen risiko yang ketat membantu mengendalikan kerugian dalam satu perdagangan, baik mengendalikan total penarikan maksimum, dan juga meninggalkan ruang yang cukup untuk perdagangan yang menguntungkan.
Strategi ini juga memiliki beberapa risiko:
EMA, Stoch, dan lain-lain memiliki keterbelakangan, yang membuat strategi ini sulit dan tidak tepat waktu untuk mengambil peluang dari perubahan pasar.
Bergantung pada indikator saja mudah untuk membuat penilaian pasar yang dominan, sehingga kehilangan peluang perdagangan yang sebenarnya ditawarkan oleh pasar.
Mekanisme manajemen risiko itu sendiri juga dapat menjadi pembatasan ruang keuntungan strategi, dan pengaturan untuk menghentikan kerugian dan menghentikan posisi dalam tren besar perlu sangat hati-hati.
Strategi ini juga memiliki risiko dalam pemilihan parameter, karena dampak dari parameter yang berbeda pada hasil memerlukan banyak pengujian dan pengoptimalan untuk mendapatkan kombinasi parameter terbaik.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Cobalah berbagai jenis EMA, seperti rata-rata bergerak berbobot, Hull MA, dan lain-lain untuk menilai tren dan melakukan analisis komparatif.
Cobalah untuk menggabungkan indikator lain untuk menghasilkan sinyal perdagangan, seperti MACD, KDJ, dan lain-lain, untuk membangun sistem perdagangan multi-indikator.
Optimalkan pengaturan stop loss dan stop loss agar lebih sesuai dengan situasi fluktuasi pasar yang sebenarnya. Anda dapat mengatur stop loss yang lebih longgar dan stop loss yang lebih ketat.
Uji diferensiasi kinerja dari strategi ini pada varietas dan siklus yang berbeda untuk menemukan kombinasi varietas dan siklus yang optimal.
Pertimbangkan untuk memasukkan pembelajaran mesin atau model jaringan saraf untuk membantu menentukan arah tren dan sinyal perdagangan, untuk kecerdasan strategi.
Secara keseluruhan, strategi ini menggunakan indikator yang umum untuk menggabungkan, untuk membangun set strategi perdagangan yang lebih matang untuk mengikuti tren. Ini mempertimbangkan penilaian tren dan menghasilkan sinyal perdagangan spesifik, dan juga mengatur mekanisme manajemen risiko. Dengan terus mengoptimalkan, percaya bahwa strategi ini dapat mencapai efek yang lebih baik di lapangan.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//by Wugamlo
//Strategy combining Stochastic Crosses in the Overbought/Oversold Area with a trend determined by two EMAs
//Default setup seems to work best on 4HR timeframe for BTC
strategy(title = "Strategy Stoch/EMA Cross", shorttitle = "Strategy Stoch/EMA Cross", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, commission_value=0.01,commission_type=strategy.commission.percent, initial_capital=1000)
// === GENERAL INPUTS ===
SectionInd = input(defval = true ,title = "════════════ INDICATORS ════════════")
maFastLength = input(defval = 55, title = "Fast MA Period", minval = 1)
maSlowLength = input(defval = 89, title = "Slow MA Period", minval = 1)
StochLength = input(defval = 14, title = "Stochastic Length", minval=1)
smoothK = input(defval = 6, title = "%K Smooth", minval=1)
smoothD = input(defval = 3, title = "%D Smooth", minval=1)
overbought = 80
oversold = 20
HighlightOBOS = input(defval = true, title = "Highlight Stoch Cross?")
HighlightTrend = input(defval = true, title = "Highlight Trend?")
//DATE AND TIME
SectionFrom = input(defval = true ,title = "═══════════════ FROM ═══════════════")
fromDay = input(defval = 01, title = "From day", minval=1)
fromMonth = input(defval = 1, title = "From month", minval=1)
fromYear = input(defval = 2019, title = "From year", minval=2014)
SectionTo = input(defval = true, title = "════════════════ TO ════════════════")
toDay = input(defval = 31, title = "To day", minval=1)
toMonth = input(defval = 12, title = "To month", minval=1)
toYear = input(defval = 2020, title = "To year", minval=2014)
// === STRATEGY RELATED INPUTS ===
SectionStra = input(defval = true ,title = "═════════════ STRATEGY ═════════════")
// Include Shorts or only trade Long Positions?
includeShorts = input(defval = true, title = "Include Short Positions?")
// Risk Management inputs
useTakeProfit = input(defval = true, title = "User Take Profit?")
inpTakeProfit = input(defval = 8, title = "Take Profit (%)", minval = 0)
useStopLoss = input(defval = false, title = "User Stop Loss?")
inpStopLoss = input(defval = 2, title = "Stop Loss (%)", minval = 0)
StopLossPerc = inpStopLoss * 0.01
TakeProfitPerc = inpTakeProfit * 0.01
// === EMA SERIES SETUP ===
maFast = ema(close, maFastLength)
maSlow = ema(close, maSlowLength)
diff = maFast - maSlow
// === STOCHASTIC SETUP ===
k = sma(stoch(close, high, low, StochLength), smoothK)
d = sma(k, smoothD)
// Stochastic Long/Short Entry determination
stochLong = crossover(k,d) and (k < oversold)
stochShort = crossunder(k,d) and (k > overbought)
// Stochastic Long/Short Exit determination
stochLongEx = crossover (k, overbought)
stochShortEx = crossunder(k, oversold)
// === PLOTTING EMAs ===
fast = plot(maFast, title = "Fast MA", color = yellow, linewidth = 1, style = line, transp = 10)
slow = plot(maSlow, title = "Slow MA", color = white, linewidth = 1, style = line, transp = 10)
// === Vertical Coloring for Crosses in Overbought/Oversold zone and for MA Trend Zones ===
b_color = stochLong ? green : stochShort ? red : na
bgcolor(HighlightOBOS ? b_color : na, title="Overbought / Oversold", transp=65) //Highlight the Overbought/Oversold Stoch Crossings
t_color = diff>=0 ? green : diff<0 ? red : na
bgcolor(HighlightTrend ? t_color : na, title="Trend up / Trend down", transp=75) //Highlight the EMA Trend
// === STRATEGY LOGIC ===
// Time Restriction
timeInRange = true
// === STRATEGY - LONG POSITION EXECUTION ===
if stochLong and (diff >=0) and timeInRange //Open Long when Stoch crossing in Oversold area and EMATrend is up
strategy.entry(id = "Long", long = true)
if stochLong and (diff <0) and timeInRange //Close Long when another Long Stoch cross signal is given after Trend has changed to down (avoid fake signals)
strategy.close(id = "Long")
if stochLongEx and timeInRange //Close Long when Stoch is getting Overbought
strategy.close(id = "Long")
// === STRATEGY - SHORT POSITION EXECUTION ===
if stochShort and (diff <0) and timeInRange and includeShorts //Open Short when Stoch crossing in Overbought area and EMA Trend is down
strategy.entry(id = "Short", long = false)
if stochShort and (diff >=0) and timeInRange //Close Short when another Short Stoch cross signal is given after Trend has changed to up (avoid fake signals)
strategy.close(id = "Short")
if stochShortEx and timeInRange //Close Short when Stoch is getting Oversold
strategy.close(id = "Short")
// === STRATEGY RISK MANAGEMENT EXECUTION ===
//Stop Loss
if useStopLoss //Exit when Stop Loss is hit
strategy.exit("Exit Long SL", from_entry = "Long", loss = close * StopLossPerc / syminfo.mintick )
strategy.exit("Exit Short SL", from_entry = "Short", loss = close * StopLossPerc / syminfo.mintick )
//Take Profit
if useTakeProfit //Exit when Take Profit Limit is hit
strategy.exit("Exit Long TP", from_entry = "Long", profit = close * TakeProfitPerc / syminfo.mintick)
strategy.exit("Exit Short TP", from_entry = "Short", profit = close * TakeProfitPerc / syminfo.mintick)