Strategi ini adalah sistem dagangan trend-mengikuti berdasarkan EMA dua dan penunjuk Stochastic. Ia menggabungkan purata bergerak untuk menentukan trend pasaran sambil menggunakan penunjuk Stochastic untuk menangkap isyarat silang di kawasan overbought / oversold, dengan tahap stop-loss dan mengambil keuntungan dinamik untuk pengurusan risiko. Pendekatan ini memastikan kebolehpercayaan isyarat dan pengurusan ganjaran risiko yang berkesan untuk setiap perdagangan.
Strategi ini bergantung kepada beberapa elemen teras:
Syarat pembelian memerlukan:
Syarat jualan adalah bertentangan:
Ini adalah sistem strategi lengkap yang menggabungkan trend berikut dan perdagangan momentum. Melalui gabungan sistem EMA dan penunjuk Stochastic, ia memastikan perdagangan sejajar dengan trend utama sambil memasuki tahap harga yang sesuai. Di samping itu, strategi termasuk mekanisme pengurusan risiko yang komprehensif, menggunakan stop-loss dinamik dan nisbah risiko-balasan tetap untuk mengawal risiko. Walaupun terdapat beberapa batasan yang melekat, prestasi keseluruhan strategi dapat ditingkatkan lagi melalui pengoptimuman yang dicadangkan. Dalam aplikasi praktikal, peniaga dinasihatkan untuk menyesuaikan parameter mengikut ciri pasaran tertentu dan keutamaan risiko mereka sendiri.
/*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)