এই কৌশলটি একটি ট্রেডিং সিস্টেম যা একাধিক প্রযুক্তিগত সূচককে একত্রিত করে। এটি ট্রেডিংয়ের নির্ভুলতা উন্নত করার জন্য চলমান গড় (ইএমএ), অস্থিরতা ট্র্যাকিং (এটিআর), ভলিউম ট্রেন্ড (পিভিটি), এবং মোমেন্টাম দোলক (নিনজা) সহ বিভিন্ন মাত্রার বাজার সংকেতগুলিকে একীভূত করে। কৌশলটি প্রবণতা ট্র্যাক করার সময় ঝুঁকি কঠোরভাবে নিয়ন্ত্রণ করার জন্য একটি গতিশীল স্টপ-লস প্রক্রিয়া ব্যবহার করে।
মূল যুক্তি চারটি প্রধান স্তম্ভের উপর নির্মিতঃ
ট্রেডিং সিগন্যাল নিম্নলিখিত শর্তে তৈরি করা হয়ঃ
এই কৌশলটি মাল্টি-ইন্ডিকেটর সিঙ্ক্রোনাইজেশন এবং গতিশীল স্টপ-লস প্রক্রিয়াটির মাধ্যমে একটি অপেক্ষাকৃত সম্পূর্ণ ট্রেডিং সিস্টেম তৈরি করে। এর মূল সুবিধাগুলি বহু-মাত্রিক সংকেত নিশ্চিতকরণ এবং কঠোর ঝুঁকি নিয়ন্ত্রণে রয়েছে। যদিও বিলম্ব এবং মিথ্যা সংকেতগুলির ঝুঁকি রয়েছে, ক্রমাগত অপ্টিমাইজেশন এবং উন্নতির মাধ্যমে কৌশলটি বিভিন্ন বাজারের পরিবেশে স্থিতিশীল পারফরম্যান্স বজায় রাখার সম্ভাবনা রয়েছে। ব্যবসায়ীদের লাইভ ট্রেডিংয়ের আগে পুঙ্খানুপুঙ্খ ব্যাকটেস্টিং এবং পরামিতি অপ্টিমাইজেশন পরিচালনা করার পরামর্শ দেওয়া হয়।
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Triple Indicator Strategy", shorttitle="TIS", overlay=true) // --- Inputs --- var string calcGroup = "Calculation Parameters" atrLength = input.int(22, title="ATR Period", group=calcGroup) atrMult = input.float(3.0, title="ATR Multiplier", step=0.1, group=calcGroup) emaLength = input.int(200, title="EMA Length", group=calcGroup) // --- ATR and EMA Calculations --- atr = atrMult * ta.atr(atrLength) ema200 = ta.ema(close, emaLength) // --- Chandelier Exit Logic --- longStop = ta.highest(high, atrLength) - atr shortStop = ta.lowest(low, atrLength) + atr var int dir = 1 dir := close > shortStop ? 1 : close < longStop ? -1 : dir buySignal = dir == 1 and dir[1] == -1 sellSignal = dir == -1 and dir[1] == 1 // --- Price Volume Trend (PVT) --- pvt = ta.cum((close - close[1]) / close[1] * volume) pvtSignal = ta.ema(pvt, 21) pvtBuy = ta.crossover(pvt, pvtSignal) pvtSell = ta.crossunder(pvt, pvtSignal) // --- Ninja Indicator --- ninjaOsc = (ta.ema(close, 3) - ta.ema(close, 13)) / ta.ema(close, 13) * 100 ninjaSignal = ta.ema(ninjaOsc, 24) ninjaBuy = ta.crossover(ninjaOsc, ninjaSignal) ninjaSell = ta.crossunder(ninjaOsc, ninjaSignal) // --- Strategy Conditions --- longCondition = buySignal and close > ema200 and (pvtBuy or ninjaBuy) shortCondition = sellSignal and close < ema200 and (pvtSell or ninjaSell) if longCondition strategy.entry("Buy", strategy.long) strategy.exit("Exit Long", "Buy", stop=low - atr) if shortCondition strategy.entry("Sell", strategy.short) strategy.exit("Exit Short", "Sell", stop=high + atr) // --- Plotting --- plot(ema200, title="EMA 200", color=color.blue, linewidth=2) plotshape(buySignal, title="Chandelier Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(sellSignal, title="Chandelier Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // --- Labels for Buy/Sell with price --- if buySignal label.new(bar_index, low, "Buy: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar, size=size.small) if sellSignal label.new(bar_index, high, "Sell: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar, size=size.small) // --- Alerts --- alertcondition(longCondition, title="Buy Alert", message="Buy Signal Triggered!") alertcondition(shortCondition, title="Sell Alert", message="Sell Signal Triggered!")