এই কৌশলটির মূল ধারণাটি হ'ল প্রবণতা বরাবর প্রবেশ এবং প্রস্থান পয়েন্টগুলি ক্যাপচার করতে টি 3 চলমান গড় এবং এটিআর অভিযোজিত ট্রেলিং স্টপ ব্যবহার করা। এটি প্রবণতা অনুসরণকারী কৌশলগুলির অন্তর্গত। যখন দাম টি 3 লাইনের মাধ্যমে ভেঙে যায় তখন ট্রেডিং সংকেত উত্পন্ন হয় এবং স্বয়ংক্রিয় স্টপ লস এবং লাভ অর্জন করতে ব্রেকআউট পয়েন্টে এটিআর মান ব্যবহার করে স্টপ লস এবং লাভের স্তরগুলি সেট করা হয়।
এই কৌশলটি T3 সূচক, ATR সূচক এবং ATR ট্রেইলিং স্টপ মেকানিজম নিয়ে গঠিত।
টি 3 চলমান গড় একটি মসৃণ চলমান গড় যা বক্ররেখার বিলম্বকে হ্রাস করতে পারে এবং এটিকে দামের পরিবর্তনে দ্রুত প্রতিক্রিয়া জানাতে পারে। যখন দাম নীচে থেকে চলমান গড়টি ভেঙে যায় তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন দাম উপরে থেকে ভেঙে যায় তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
এটিআর সূচকটি বাজারের অস্থিরতার মাত্রা গণনা করতে এবং স্টপ লস স্তর সেট করতে ব্যবহৃত হয়। এটিআর মান যত বেশি হবে, বাজারের অস্থিরতা তত বেশি হবে এবং একটি বৃহত্তর স্টপ লস সেট করা উচিত। এটিআর মান যত কম হবে, বাজারের অস্থিরতা তত কম হবে এবং একটি সংকীর্ণ স্টপ লস সেট করা যেতে পারে।
এটিআর ট্রেইলিং স্টপ প্রক্রিয়াটি রিয়েল টাইমে এটিআর মানগুলির উপর ভিত্তি করে স্টপ লস লাইনের অবস্থানকে সামঞ্জস্য করে, যাতে স্টপ লস লাইন মূল্যের চলাচল অনুসরণ করতে পারে এবং যুক্তিসঙ্গত পরিসরের মধ্যে থাকতে পারে। এটি স্টপ লসকে খুব কাছাকাছি এবং সহজেই বাদ দেওয়া থেকে বিরত রাখে এবং স্টপ লসকে ঝুঁকিগুলি কার্যকরভাবে নিয়ন্ত্রণ করতে খুব প্রশস্ত হতে বাধা দেয়।
দিকনির্দেশনা নির্ধারণের জন্য T3, অস্থিরতা গণনা করার জন্য ATR এবং ATR ট্রেইলিং স্টপ প্রক্রিয়া ব্যবহার করে, এই কৌশলটি তুলনামূলকভাবে দক্ষ প্রবণতা ধরা এবং ঝুঁকি নিয়ন্ত্রণ অর্জন করে।
এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ
T3 রেখা প্রয়োগের ফলে ট্রেন্ডের সঠিকতা বৃদ্ধি পায়।
এটিআর সূচকটি গতিশীলভাবে বাজারের অস্থিরতা গণনা করে, স্টপ লস এবং লাভের মাত্রা আরও যুক্তিসঙ্গত করে তোলে।
এটিআর ট্রেলিং স্টপ মেকানিজমের মাধ্যমে স্টপ লস লাইনটি কার্যকর ঝুঁকি নিয়ন্ত্রণের জন্য রিয়েল টাইমে মূল্যের গতি অনুসরণ করতে সক্ষম হয়।
স্বয়ংক্রিয় প্রবণতা ট্র্যাকিং ট্রেডিং অর্জনের জন্য সূচক এবং স্টপ লস প্রক্রিয়া একীভূত করে।
স্বয়ংক্রিয় অর্ডার কার্যকরকরণের জন্য ওয়েবহুকের মাধ্যমে বাহ্যিক ট্রেডিং প্ল্যাটফর্মের সাথে সংযোগ স্থাপন করতে পারে।
এই কৌশলটির সাথে কিছু ঝুঁকিও রয়েছেঃ
ভুল T3 পরামিতি সেটিং ভাল প্রবণতা সুযোগ মিস করতে পারে। বিভিন্ন চক্র পরামিতি সর্বোত্তম মান খুঁজে পেতে পরীক্ষা করা যেতে পারে।
ATR মানের ভুল হিসাবের ফলে স্টপ লস দূরত্ব ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করার জন্য খুব বড় বা খুব ছোট হতে পারে। ATR চক্রের পরামিতি বাজারের অস্থিরতার বৈশিষ্ট্যগুলির সাথে মিলিয়ে সামঞ্জস্য করা যেতে পারে।
তীব্র ওঠানামা হলে স্টপ লস লাইন ভেঙে যেতে পারে যার ফলে অত্যধিক ক্ষতি হতে পারে। প্রতি ট্রেডে অত্যধিক ক্ষতি এড়ানোর জন্য একটি যুক্তিসঙ্গত মোট ক্ষতি লাইন সেট করা যেতে পারে।
হুইপস বাজারে ঘন ঘন স্টপ লস ট্রিগার হতে পারে। এটিআর ট্রেলিং স্টপ দূরত্বকে যথাযথভাবে প্রসারিত করা সাহায্য করতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
সবচেয়ে উপযুক্ত মসৃণকরণ চক্র খুঁজে পেতে T3 প্যারামিটারটি অপ্টিমাইজ করুন।
এটিআর মান গণনা করার জন্য বিভিন্ন এটিআর চক্রের পরামিতি পরীক্ষা করুন যা বাজারের অস্থিরতাকে সর্বোত্তমভাবে প্রতিফলিত করে।
অতিরিক্ত সংবেদনশীলতা এড়ানোর জন্য ATR ট্রেইলিং স্টপ দূরত্বের নমনীয় পরিসীমা অনুকূল করা।
উইপসা মার্কেটে ঘন ঘন ট্রেডিং এড়াতে উপযুক্ত ফিল্টার যুক্ত করুন।
দিকনির্দেশনা লাভজনকতার নির্ভুলতা উন্নত করতে প্রবণতা মূল্যায়নকারী সূচক অন্তর্ভুক্ত করুন।
স্বয়ংক্রিয়ভাবে পরামিতি অপ্টিমাইজ করার জন্য মেশিন লার্নিং পদ্ধতি ব্যবহার করুন।
এই কৌশলটি প্রবণতা দিক নির্ধারণের জন্য টি 3 লাইনের ব্যবহার, স্টপ / লক্ষ্যমাত্রা গণনা করতে এটিআর সূচক এবং স্টপ দূরত্ব সামঞ্জস্য করতে এটিআর ট্রেলিং স্টপ প্রক্রিয়া একীভূত করে। এটি স্বয়ংক্রিয় প্রবণতা ট্র্যাকিং এবং দক্ষ ঝুঁকি নিয়ন্ত্রণ অর্জন করে। এটি একটি নির্ভরযোগ্য প্রবণতা অনুসরণকারী কৌশল। ব্যবহারিক অ্যাপ্লিকেশনগুলিতে, বর্তমান বাজারের অবস্থার জন্য সর্বাধিক উপযুক্ত পরামিতি সংমিশ্রণগুলি খুঁজে পেতে অব্যাহত পরীক্ষা এবং অপ্টিমাইজেশনের প্রয়োজন রয়েছে, যার ফলে আরও ভাল কৌশল ফলাফল পাওয়া যায়।
/*backtest start: 2024-01-21 00:00:00 end: 2024-02-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='UT Bot Alerts (QuantNomad) Strategy', overlay=true) T3 = input(100)//600 // Input for Long Settings // Input for Long Settings xPrice3 = close xe1 = ta.ema(xPrice3, T3) xe2 = ta.ema(xe1, T3) xe3 = ta.ema(xe2, T3) xe4 = ta.ema(xe3, T3) xe5 = ta.ema(xe4, T3) xe6 = ta.ema(xe5, T3) b3 = 0.7 c1 = -b3*b3*b3 c2 = 3*b3*b3+3*b3*b3*b3 c3 = -6*b3*b3-3*b3-3*b3*b3*b3 c4 = 1+3*b3+b3*b3*b3+3*b3*b3 nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3 //plot(nT3Average, color=color.white, title="T3") // Buy Signal - Price is below T3 Average buySignal3 = xPrice3 < nT3Average sellSignal3 = xPrice3 > nT3Average // Inputs a = input(1, title='Key Value. "This changes the sensitivity"') c = input(50, title='ATR Period') h = input(true, title='Signals from Heikin Ashi Candles') riskRewardRatio = input(1, title='Risk Reward Ratio') xATR = ta.atr(c) nLoss = a * xATR src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close xATRTrailingStop = 0.0 iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1 xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2 pos = 0 iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3 xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue ema = ta.ema(src, 1) above = ta.crossover(ema, xATRTrailingStop) below = ta.crossunder(ema, xATRTrailingStop) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) barcolor(barbuy ? color.new(color.green, 90) : na) barcolor(barsell ? color.new(color.red, 90) : na) var float entryPrice = na var float takeProfitLong = na var float stopLossLong = na var float takeProfitShort = na var float stopLossShort = na if buy and buySignal3 entryPrice := src takeProfitLong := entryPrice + nLoss * riskRewardRatio stopLossLong := entryPrice - nLoss takeProfitShort := na stopLossShort := na if sell and sellSignal3 entryPrice := src takeProfitShort := entryPrice - nLoss * riskRewardRatio stopLossShort := entryPrice + nLoss takeProfitLong := na stopLossLong := na // Strategy order conditions acct = "Sim101" ticker = "ES 12-23" qty = 1 OCOMarketLong = '{ "alert": "OCO Market Long", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitLong) + '", "stop_price": "' + str.tostring(stopLossLong) + '", "tif": "DAY" }' OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }' CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }' strategy.entry("Long", strategy.long, when=buy and buySignal3, alert_message=OCOMarketLong) strategy.entry("Short", strategy.short, when=sell and sellSignal3, alert_message=OCOMarketShort) // Setting the take profit and stop loss for long trades strategy.exit("Take Profit/Stop Loss", "Long", stop=stopLossLong, limit=takeProfitLong,alert_message=CloseAll) // Setting the take profit and stop loss for short trades strategy.exit("Take Profit/Stop Loss", "Short", stop=stopLossShort, limit=takeProfitShort,alert_message=CloseAll) // Plot trade setup boxes bgcolor(buy ? color.new(color.green, 90) : na, transp=0, offset=-1) bgcolor(sell ? color.new(color.red, 90) : na, transp=0, offset=-1) longCondition = buy and not na(entryPrice) shortCondition = sell and not na(entryPrice) // var line longTakeProfitLine = na // var line longStopLossLine = na // var line shortTakeProfitLine = na // var line shortStopLossLine = na // if longCondition // longTakeProfitLine := line.new(bar_index, takeProfitLong, bar_index + 1, takeProfitLong, color=color.green, width=2) // longStopLossLine := line.new(bar_index, stopLossLong, bar_index + 1, stopLossLong, color=color.red, width=2) // // label.new(bar_index + 1, takeProfitLong, str.tostring(takeProfitLong, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny) // // label.new(bar_index + 1, stopLossLong, str.tostring(stopLossLong, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny) // if shortCondition // shortTakeProfitLine := line.new(bar_index, takeProfitShort, bar_index + 1, takeProfitShort, color=color.green, width=2) // shortStopLossLine := line.new(bar_index, stopLossShort, bar_index + 1, stopLossShort, color=color.red, width=2) // // label.new(bar_index + 1, takeProfitShort, str.tostring(takeProfitShort, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny) // // label.new(bar_index + 1, stopLossShort, str.tostring(stopLossShort, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny) alertcondition(buy, 'UT Long', 'UT Long') alertcondition(sell, 'UT Short', 'UT Short')