এই কৌশলটি পিভট পয়েন্ট সুপারট্রেন্ড সূচক এবং ডাবল এক্সপোনেনশিয়াল মুভিং এভারেজ (ডিইএমএ) সূচককে একত্রিত করে এই দুটি সূচকের তুলনায় মূল্যের অবস্থান বিশ্লেষণ করে ট্রেডিং সংকেত তৈরি করে। যখন মূল্য পিভট পয়েন্ট সুপারট্রেন্ড সূচকের উপরে ভেঙে যায় এবং ডিইএমএ সূচকের চেয়ে বেশি হয়, তখন একটি দীর্ঘ সংকেত উত্পন্ন হয়; যখন মূল্য পিভট পয়েন্ট সুপারট্রেন্ড সূচকের নীচে ভেঙে যায় এবং ডিইএমএ সূচকের চেয়ে কম হয়, তখন একটি সংক্ষিপ্ত সংকেত উত্পন্ন হয়। এই কৌশলটি মাঝারি থেকে দীর্ঘমেয়াদী বাজারের প্রবণতা ক্যাপচার করতে পারে এবং স্বল্পমেয়াদী মূল্যের ওঠানামাতেও প্রতিক্রিয়া জানাতে পারে।
পিভট পয়েন্ট সুপারট্রেন্ড সূচক এবং ডিইএমএ সূচককে একত্রিত করে, এই কৌশলটি স্বল্পমেয়াদী ওঠানামা সাড়া দেওয়ার সময় বাজারের প্রবণতা কার্যকরভাবে ক্যাপচার করতে পারে। কৌশলটির শক্তিশালী প্রবণতা অনুসরণ করার ক্ষমতা, শক্তিশালী অভিযোজনযোগ্যতা এবং শক্তিশালী ঝুঁকি নিয়ন্ত্রণের দক্ষতার মতো সুবিধাগুলি রয়েছে, তবে প্যারামিটার সেটিং, পরিসীমা সীমাবদ্ধ বাজার এবং প্রবণতা বিপরীতের মতো ঝুঁকিগুলির মুখোমুখি হয়। প্যারামিটার অপ্টিমাইজেশন, সংকেত ফিল্টারিং, অবস্থান পরিচালনা এবং পোর্টফোলিও অপ্টিমাইজেশনের মাধ্যমে, কৌশলটির স্থায়িত্ব এবং লাভজনকতা আরও উন্নত করা যেতে পারে যাতে বিভিন্ন বাজারের পরিবেশে আরও ভালভাবে মানিয়ে নেওয়া যায়।
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Simple Combined Strategy: Pivot Point SuperTrend and DEMA", overlay=true) // Pivot Point SuperTrend settings prd = input.int(2, title="Pivot Point Period", minval=1, maxval=50) Factor = input.float(3.0, title="ATR Factor", minval=1, step=0.1) Pd = input.int(10, title="ATR Period", minval=1) // Double EMA settings demaLength = input.int(200, title="DEMA Length", minval=1) src = input(close, title="Source") // Pip settings pipValue = input.float(0.0001, title="Pip Value") stopLossPips = input.int(15, title="Stop Loss (pips)") takeProfitPips = input.int(35, title="Take Profit (pips)") // Pivot Point SuperTrend Calculation float ph = ta.pivothigh(prd, prd) float pl = ta.pivotlow(prd, prd) var float center = na if not na(ph) center := na(center) ? ph : (center * 2 + ph) / 3 if not na(pl) center := na(center) ? pl : (center * 2 + pl) / 3 Up = center - (Factor * ta.atr(Pd)) Dn = center + (Factor * ta.atr(Pd)) var float TUp = na var float TDown = na var int Trend = na if na(Trend) TUp := Up TDown := Dn Trend := close > Dn ? 1 : -1 else TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn Trend := close > TDown[1] ? 1 : close < TUp[1] ? -1 : nz(Trend[1], 1) Trailingsl = Trend == 1 ? TUp : TDown linecolor = Trend == 1 ? color.lime : color.red plot(Trailingsl, color=linecolor, linewidth=2, title="PP SuperTrend") // Double EMA Calculation e1 = ta.ema(src, demaLength) e2 = ta.ema(e1, demaLength) dema = 2 * e1 - e2 plot(dema, "DEMA", color=color.new(#43A047, 0)) // Strategy Logic longCondition = close > Trailingsl and close > dema and strategy.position_size <= 0 shortCondition = close < Trailingsl and close < dema and strategy.position_size >= 0 // Plot signals plotshape(series=longCondition, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="Long") plotshape(series=shortCondition, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="Short") // Strategy Entry and Exit if (longCondition) strategy.entry("Long", strategy.long, stop=close - (stopLossPips * pipValue), limit=close + (takeProfitPips * pipValue)) if (shortCondition) strategy.entry("Short", strategy.short, stop=close + (stopLossPips * pipValue), limit=close - (takeProfitPips * pipValue)) alertcondition(longCondition, title="Long Alert", message="Long Signal") alertcondition(shortCondition, title="Short Alert", message="Short Signal")