এই কৌশলটি একটি বিস্তৃত প্রবণতা অনুসরণকারী ট্রেডিং সিস্টেম যা মাল্টি-টাইমফ্রেম বিশ্লেষণ, চলমান গড়, গতির সূচক এবং অস্থিরতার সূচকগুলিকে একত্রিত করে। সিস্টেমটি স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী এক্সপোনেন্সিয়াল চলমান গড় (ইএমএ) এর ক্রসওভারের মাধ্যমে প্রবণতার দিক চিহ্নিত করে, ওভারকুপ / ওভারসোল্ড শর্তগুলির জন্য আপেক্ষিক শক্তি সূচক (আরএসআই) ব্যবহার করে, গতির নিশ্চিতকরণের জন্য এমএসিডি অন্তর্ভুক্ত করে এবং উচ্চতর সময়সীমার ইএমএকে প্রবণতা ফিল্টার হিসাবে ব্যবহার করে। সিস্টেমটি এটিআর-ভিত্তিক গতিশীল স্টপ-লস এবং লাভ গ্রহণের প্রক্রিয়াগুলি ব্যবহার করে যা বাজারের অস্থিরতার সাথে খাপ খায়।
কৌশলটি ট্রেডিং সিদ্ধান্তের জন্য একটি মাল্টি-লেয়ার যাচাইকরণ প্রক্রিয়া ব্যবহার করেঃ
সিস্টেমটি কেবল তখনই ট্রেডগুলিতে প্রবেশ করে যখন একাধিক শর্ত পূরণ করা হয়ঃ ইএমএ ক্রসওভার, আরএসআই চরম স্তরে নয়, সঠিক এমএসিডি দিক এবং উচ্চতর সময়সীমার প্রবণতা নিশ্চিতকরণ। প্রস্থানগুলি স্থির মুনাফা লক্ষ্যগুলির সাথে ট্রেলিং স্টপগুলি একত্রিত করে।
এই কৌশলটি একটি সম্পূর্ণ ট্রেন্ড অনুসরণকারী ট্রেডিং সিস্টেম যা একাধিক প্রযুক্তিগত সূচক এবং কঠোর ঝুঁকি ব্যবস্থাপনা প্রোটোকলগুলির সংমিশ্রণের মাধ্যমে ট্রেন্ডিং বাজারে স্থিতিশীল রিটার্ন অর্জন করতে পারে। সিস্টেমটি অত্যন্ত প্রসারিত এবং অপ্টিমাইজেশনের মাধ্যমে বিভিন্ন বাজারের পরিবেশে অভিযোজিত হতে পারে। লাইভ ট্রেডিংয়ের আগে পুঙ্খানুপুঙ্খ ব্যাকটেস্টিং এবং পরামিতি অপ্টিমাইজেশান সুপারিশ করা হয়।
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-24 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend Following with ATR, MTF Confirmation, and MACD", overlay=true) // Parameters emaShortPeriod = input.int(9, title="Short EMA Period", minval=1) emaLongPeriod = input.int(21, title="Long EMA Period", minval=1) rsiPeriod = input.int(14, title="RSI Period", minval=1) rsiOverbought = input.int(70, title="RSI Overbought", minval=50) rsiOversold = input.int(30, title="RSI Oversold", minval=1) atrPeriod = input.int(14, title="ATR Period", minval=1) atrMultiplier = input.float(1.5, title="ATR Multiplier", minval=0.1) takeProfitATRMultiplier = input.float(2.0, title="Take Profit ATR Multiplier", minval=0.1) // Multi-timeframe settings htfEMAEnabled = input.bool(true, title="Use Higher Timeframe EMA Confirmation?", inline="htf") htfEMATimeframe = input.timeframe("D", title="Higher Timeframe", inline="htf") // MACD Parameters macdShortPeriod = input.int(12, title="MACD Short Period", minval=1) macdLongPeriod = input.int(26, title="MACD Long Period", minval=1) macdSignalPeriod = input.int(9, title="MACD Signal Period", minval=1) // Select trade direction tradeDirection = input.string("Both", title="Trade Direction", options=["Both", "Long", "Short"]) // Calculating indicators emaShort = ta.ema(close, emaShortPeriod) emaLong = ta.ema(close, emaLongPeriod) rsiValue = ta.rsi(close, rsiPeriod) atrValue = ta.atr(atrPeriod) // Calculate MACD [macdLine, macdSignalLine, _] = ta.macd(close, macdShortPeriod, macdLongPeriod, macdSignalPeriod) // Higher timeframe EMA confirmation htfEMALong = request.security(syminfo.tickerid, htfEMATimeframe, ta.ema(close, emaLongPeriod)) // Trading conditions longCondition = ta.crossover(emaShort, emaLong) and rsiValue < rsiOverbought and (not htfEMAEnabled or close > htfEMALong) and macdLine > macdSignalLine shortCondition = ta.crossunder(emaShort, emaLong) and rsiValue > rsiOversold and (not htfEMAEnabled or close < htfEMALong) and macdLine < macdSignalLine // Plotting EMAs plot(emaShort, title="EMA Short", color=color.green) plot(emaLong, title="EMA Long", color=color.red) // Plotting MACD hline(0, "Zero Line", color=color.gray) plot(macdLine - macdSignalLine, title="MACD Histogram", color=color.green, style=plot.style_histogram) plot(macdLine, title="MACD Line", color=color.blue) plot(macdSignalLine, title="MACD Signal Line", color=color.red) // Trailing Stop-Loss and Take-Profit levels var float trailStopLoss = na var float trailTakeProfit = na if (strategy.position_size > 0) // Long Position trailStopLoss := na(trailStopLoss) ? close - atrValue * atrMultiplier : math.max(trailStopLoss, close - atrValue * atrMultiplier) trailTakeProfit := close + atrValue * takeProfitATRMultiplier strategy.exit("Exit Long", "Long", stop=trailStopLoss, limit=trailTakeProfit, when=shortCondition) if (strategy.position_size < 0) // Short Position trailStopLoss := na(trailStopLoss) ? close + atrValue * atrMultiplier : math.min(trailStopLoss, close + atrValue * atrMultiplier) trailTakeProfit := close - atrValue * takeProfitATRMultiplier strategy.exit("Exit Short", "Short", stop=trailStopLoss, limit=trailTakeProfit, when=longCondition) // Strategy Entry if (longCondition and (tradeDirection == "Both" or tradeDirection == "Long")) strategy.entry("Long", strategy.long) if (shortCondition and (tradeDirection == "Both" or tradeDirection == "Short")) strategy.entry("Short", strategy.short) // Plotting Buy/Sell signals plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Plotting Trailing Stop-Loss and Take-Profit levels plot(strategy.position_size > 0 ? trailStopLoss : na, title="Long Trailing Stop Loss", color=color.red, linewidth=2, style=plot.style_line) plot(strategy.position_size < 0 ? trailStopLoss : na, title="Short Trailing Stop Loss", color=color.green, linewidth=2, style=plot.style_line) plot(strategy.position_size > 0 ? trailTakeProfit : na, title="Long Take Profit", color=color.blue, linewidth=2, style=plot.style_line) plot(strategy.position_size < 0 ? trailTakeProfit : na, title="Short Take Profit", color=color.orange, linewidth=2, style=plot.style_line)