
Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada indikator ganda rata-rata dan acak (Stochastic). Ini menggabungkan sistem rata-rata untuk menilai tren pasar, sementara menggunakan indikator acak untuk menangkap sinyal silang di area overbought dan oversold, dan menetapkan tingkat stop loss dan stop loss yang dinamis untuk mengendalikan risiko. Metode ini memastikan keandalan sinyal perdagangan dan mengelola rasio risiko-keuntungan setiap perdagangan secara efektif.
Strategi ini bergantung pada beberapa elemen utama untuk melakukan perdagangan:
Kondisi pembelian harus dipenuhi pada saat yang bersamaan:
Namun, ada beberapa hal yang perlu diperhatikan.
Ini adalah sistem strategi lengkap yang menggabungkan pelacakan tren dan perdagangan dinamis. Dengan menggunakan kombinasi sistem linier dan indikator acak, Anda dapat memastikan bahwa arah perdagangan sesuai dengan tren utama dan melakukan perdagangan di zona harga yang sesuai. Strategi ini juga mencakup mekanisme manajemen risiko yang baik, menggunakan stop loss dinamis dan rasio keuntungan risiko tetap untuk mengendalikan risiko. Meskipun ada beberapa keterbatasan yang melekat, kinerja keseluruhan strategi dapat ditingkatkan lebih lanjut dengan arah optimasi yang disarankan.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © quadawosanya
//@version=5
//indicator("My script")
//@version=5
strategy("EMA-Stochastic Strategy", overlay=true)
// EMA settings
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)
// Stochastic settings
kLength = 14
dLength = 3
smoothK = 3
stochK = ta.sma(ta.stoch(close, high, low, kLength), smoothK)
stochD = ta.sma(stochK, dLength)
// Parameters for Stop Loss and Take Profit
var float stopLossLevel = na
var float takeProfitLevel = na
// Buy condition
buySignal = (close > ema50 and close > ema150) and (ema50 > ema150) and (stochK < 30 and ta.crossover(stochK, stochD))
// Sell condition
sellSignal = (close < ema50 and close < ema150) and (ema50 < ema150) and (stochK > 70 and ta.crossunder(stochK, stochD))
// Previous low for Stop Loss for Buy
lowBeforeBuy = ta.lowest(low, 5)
// Previous high for Stop Loss for Sell
highBeforeSell = ta.highest(high, 5)
// Entry and exit logic
if (buySignal)
stopLossLevel := lowBeforeBuy
risk = close - stopLossLevel
takeProfitLevel := close + 2 * risk
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel, limit=takeProfitLevel)
if (sellSignal)
stopLossLevel := highBeforeSell
risk = stopLossLevel - close
takeProfitLevel := close - 2 * risk
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel, limit=takeProfitLevel)
// Plotting EMAs
plot(ema50, color=color.blue, title="50 EMA")
plot(ema150, color=color.red, title="150 EMA")
// Visualize Buy and Sell signals
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Visualize Stop Loss and Take Profit levels
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit")
plot(close)