
এই কৌশলটির মূল ধারণাগুলি হ’ল T3 গড় এবং এটিআর ব্যবহার করে প্রবণতার প্রবেশদ্বার এবং প্রবণতা অনুসরণকারী কৌশলগুলির মধ্যে একটি প্রবণতা অনুসরণকারী কৌশল। যখন দামটি T3 গড়কে ছাড়িয়ে যায় তখন একটি লেনদেনের সংকেত উত্পন্ন হয় এবং এটিআর মান ব্যবহার করে স্টপ লস এবং স্টপ স্পট সেট করে স্বয়ংক্রিয়ভাবে স্টপ লস স্টপ অর্জনের জন্য।
এই কৌশলটি মূলত টি 3 গড় লাইন সূচক, এটিআর সূচক এবং এটিআর মোবাইল স্টপ লস মেশিন দ্বারা গঠিত।
T3 গড় হল একটি সরলীকৃত মুভিং এভারেজ যা কার্ভের পিছিয়ে পড়া কমাতে পারে এবং দামের পরিবর্তনের প্রতি দ্রুত প্রতিক্রিয়া জানাতে পারে। যখন দাম গড়ের নীচের দিক থেকে ভেঙে যায় তখন একটি কেনার সংকেত উত্পন্ন হয়। যখন দাম গড়ের উপরের দিক থেকে ভেঙে যায় তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
এটিআর সূচকটি বাজারের ওঠানামা এবং স্টপ লস সেট করার জন্য ব্যবহৃত হয়। এটিআর মান যত বেশি, তত বেশি বাজারের ওঠানামা, এই সময়ে আরও প্রশস্ত স্টপ লস সেট করা প্রয়োজন; এটিআর মান যত ছোট, তত কম বাজারের ওঠানামা, আরও সংকীর্ণ স্টপ লস সেট করা যেতে পারে।
এটিআর মোবাইল স্টপ ম্যানেজমেন্ট হল স্টপ লাইনের অবস্থানকে রিয়েল-টাইমে এটিআর মানের উপর ভিত্তি করে সামঞ্জস্য করা যাতে স্টপ লাইনটি মূল্যের সাথে চলতে পারে এবং যুক্তিসঙ্গত সীমার মধ্যে থাকে। এটি স্টপ দূরত্বের খুব কাছাকাছি না যাওয়ার জন্য এবং স্টপ দূরত্বের খুব বেশি প্রসারিত না হওয়ার জন্য ঝুঁকিকে কার্যকরভাবে নিয়ন্ত্রণ করতে পারে।
T3 সূচক, ATR সূচক, অস্থিরতা গণনা এবং ATR মোবাইলে স্টপ লস মেশিনের সমন্বিত ব্যবহারের মাধ্যমে এই কৌশলটি আরও কার্যকর প্রবণতা ক্যাপচার এবং ঝুঁকি নিয়ন্ত্রণের লক্ষ্যে কাজ করে।
এই কৌশলটির সুবিধাগুলো হলঃ
T3 গড় রেখার ব্যবহার ট্রেন্ড ক্যাপচারের সঠিকতা বাড়ায়।
এটিআর সূচকগুলি বাজারের ওঠানামা, স্টপ লস এবং স্টপ স্টপকে গতিশীলভাবে গণনা করে।
এটিআর মোবাইল স্টপ মেশিন, যা স্টপ লাইনকে রিয়েল-টাইমে মূল্য অনুসরণ করতে এবং ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করতে সক্ষম করে।
ইন্টিগ্রেটেড ইনডিকেটর বিচার এবং স্টপ লস মেকানিজম, স্বয়ংক্রিয় ট্রেন্ড ট্র্যাকিং ট্রেডিংয়ের জন্য।
ওয়েবহুকের মাধ্যমে বাইরের লেনদেনের প্ল্যাটফর্মের সাথে সংযোগ স্থাপন করা যায়, যাতে স্বয়ংক্রিয়ভাবে অর্ডার করা যায়।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
T3 গড়রেখার প্যারামিটারটি ভুলভাবে সেট করা হয়েছে, এটি একটি ভাল প্রবণতা সুযোগ মিস করতে পারে। আপনি বিভিন্ন সময়কালের প্যারামিটারগুলি পরীক্ষা করতে পারেন এবং সর্বোত্তম প্যারামিটারগুলি খুঁজে পেতে পারেন।
এটিআর মানের গণনা সঠিক নয়, স্টপ লস দূরত্ব খুব বড় বা খুব ছোট, যা ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করতে পারে না। এটিআর চক্রের প্যারামিটারগুলি বাজারের অস্থিরতার বৈশিষ্ট্যগুলির সাথে মিলিত হতে পারে।
তীব্র ওঠানামা চলাকালীন, স্টপ লিন্ডটি ভেঙে ফেলা হতে পারে যার ফলে অত্যধিক ক্ষতি হতে পারে। যুক্তিসঙ্গত সামগ্রিক ক্ষতির লাইন স্থাপন করা যেতে পারে যাতে একক ক্ষতির পরিমাণ বেশি না হয়।
দ্বি-মুখী পুনরাবৃত্তিমূলক পরিস্থিতিতে, এমন পরিস্থিতিতে দেখা দিতে পারে যেখানে স্টপ ক্ষতি প্রায়শই ট্রিগার করা হয়। এটিআর মোবাইল স্টপ ক্ষতির দূরত্বটি যথাযথভাবে শিথিল করা যেতে পারে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
T3 গড় লাইন প্যারামিটার অপ্টিমাইজ করুন এবং সবচেয়ে উপযুক্ত মসৃণ সময়কাল খুঁজে বের করুন।
বিভিন্ন ATR চক্রের পরামিতি পরীক্ষা করে এমন একটি 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')