Strategi ini adalah strategi grid kedudukan berubah mengikut trend yang terutamanya menggunakan corak EMA, RSI, dan engulfing untuk menentukan arah trend dan masa kemasukan. Strategi ini menyesuaikan kedudukan stop-loss dan mengambil keuntungan berdasarkan saiz badan corak engulfing sambil membolehkan pengguna memilih untuk pergi panjang sahaja, pendek sahaja, atau kedua-duanya.
Strategi ini menggunakan EMA 200 tempoh untuk menentukan arah trend keseluruhan. Apabila harga di atas EMA, ia dianggap sebagai uptrend, dan apabila di bawah EMA, ia dianggap sebagai downtrend. RSI 9 tempoh digunakan untuk mengukur momentum, dengan RSI di atas 50 menunjukkan momentum bullish yang lebih kuat dan di bawah 50 menunjukkan momentum bearish yang lebih kuat. Strategi ini juga menggunakan corak bullish dan bearish engulfing sebagai isyarat kemasukan. Apabila isyarat corak EMA, RSI, dan engulfing bersetuju, strategi membuka kedudukan.
Kedudukan stop-loss dan take-profit ditentukan berdasarkan saiz badan corak engulfing. Stop-loss ditetapkan pada dua kali ganda saiz badan engulfing, dengan peratusan stop-loss minimum 0.3% dari harga kemasukan untuk mengelakkan stop-out yang kerap disebabkan jarak stop-loss yang kecil. Kedudukan take-profit ditetapkan dengan mengalikan jarak stop-loss dengan nisbah risiko-balasan yang telah ditakrifkan terlebih dahulu untuk memastikan nisbah risiko-balasan yang tetap. Di samping itu, strategi ini menyediakan pilihan untuk menggunakan MACD sebagai penapis trend, mempertimbangkan trend bullish yang lebih kuat apabila garis MACD berada di atas garis isyarat dan trend bearish yang lebih kuat apabila garis MACD berada di bawah garis isyarat.
Mengikuti trend: Strategi menggunakan pelbagai penunjuk untuk menentukan trend, membantu memasuki peringkat awal pembentukan trend dan menangkap pergerakan trend.
Stop-loss dan take-profit dinamik: Dengan menyesuaikan kedudukan stop-loss dan take-profit berdasarkan saiz badan corak engulfing, strategi memperluaskan julat take-profit apabila trend kuat dan menyempitkan julat stop-loss apabila trend lemah, yang membolehkan pengurusan kedudukan yang fleksibel.
Pengguna boleh menyesuaikan arah perdagangan, keutamaan risiko, dan parameter lain untuk memenuhi keperluan pengguna yang berbeza.
Pilihan untuk menggunakan MACD sebagai penapis trend lebih lanjut mengesahkan kekuatan trend dan meningkatkan ketepatan kemasukan.
Pengesanan trend yang salah: Walaupun strategi menggunakan beberapa penunjuk untuk menentukan trend, masih ada contoh di mana trend itu tidak dikenal pasti dengan betul, yang membawa kepada kerugian.
Julat penyempitan: Jika badan corak engulfing kecil, jarak stop-loss dan mengambil keuntungan akan sangat dekat, yang membawa kepada kemerosotan nisbah risiko-balasan.
Pengoptimuman parameter: Parameter optimum mungkin berbeza secara ketara di instrument dan jangka masa yang berbeza, yang memerlukan pengguna untuk terus menguji dan mengoptimumkan.
Pengenalan trend: Pertimbangkan untuk memperkenalkan alat pengesahan trend tambahan seperti Bollinger Bands, Indeks Arah Arah (ADX), dan lain-lain, untuk meningkatkan ketepatan pengenalan trend.
Pengoptimuman Stop-Loss dan Take-Profit: Pertimbangkan untuk memasukkan penunjuk yang berkaitan dengan turun naik seperti ATR untuk menyesuaikan jarak Stop-Loss dan Take-Profit secara dinamik, mengurangkan risiko yang berkaitan dengan julat kecil.
Ukuran kedudukan: Sesuaikan saiz kedudukan secara dinamik berdasarkan kekuatan trend, keuntungan akaun, dan lain-lain, meningkatkan saiz kedudukan apabila trend kuat dan konsisten menguntungkan, dan mengurangkan kos perdagangan yang kerap.
Penyelarasan pelbagai jangka masa dan pelbagai instrumen: Memvalidasi isyarat trend di seluruh jangka masa dan instrumen untuk meningkatkan ketepatan pengenalan trend sambil mempelbagaikan risiko satu instrumen atau jangka masa.
Strategi grid kedudukan yang berubah-ubah ini berfungsi dengan baik di pasaran trend dengan menggunakan pelbagai penunjuk untuk menentukan arah trend dan kekuatan, menyesuaikan secara dinamik stop-loss, mengambil keuntungan, dan saiz kedudukan untuk menangkap trend dan mencapai pulangan yang berlebihan. Walau bagaimanapun, prestasi strategi
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m 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/ // © niosupetranmartinez //@version=5 strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true) // Inputs emaLen = input(200, 'EMA Length') rsiLen = input(9, 'RSI Length') trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"]) risk_reward_ratio = input(2, 'Risk Reward Ratio') useMacdFilter = input.bool(true, "Use MACD Filter") macdTimeframe = input("5", "MACD Timeframe") // EMA and RSI ema200 = ta.ema(close, emaLen) customRsi = ta.rsi(close, rsiLen) // MACD Filter [macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9)) // Majority Body Candle Identification Function isMajorityBodyCandle(candleOpen, candleClose, high, low) => bodySize = math.abs(candleClose - candleOpen) fullSize = high - low bodySize / fullSize > 0.6 // Engulfing Patterns isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low) isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low) // Entry Conditions with MACD Filter longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine) shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine) // Trade Execution var float stopLossPrice = na var float entryPrice = na // Long Entry if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both")) entryPrice := close engulfingBodySize = math.abs(close - open) minimumStopLoss = entryPrice * 0.997 calculatedStopLoss = entryPrice - (engulfingBodySize * 2) stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss risk = entryPrice - stopLossPrice takeProfitPrice = entryPrice + (risk_reward_ratio * risk) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice) // Short Entry if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both")) entryPrice := close engulfingBodySize = math.abs(open - close) minimumStopLoss = entryPrice * 1.003 calculatedStopLoss = entryPrice + (engulfingBodySize * 2) stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss risk = stopLossPrice - entryPrice takeProfitPrice = entryPrice - (risk_reward_ratio * risk) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice) // Plotting plot(ema200, color=color.blue, linewidth=2, title="EMA 200")