T3 এবং ATR ভিত্তিক স্বয়ংক্রিয় প্রবণতা ট্র্যাকিং কৌশল


সৃষ্টির তারিখ: 2024-01-03 11:58:25 অবশেষে সংশোধন করুন: 2024-01-03 11:58:25
অনুলিপি: 1 ক্লিকের সংখ্যা: 698
1
ফোকাস
1621
অনুসারী

T3 এবং ATR ভিত্তিক স্বয়ংক্রিয় প্রবণতা ট্র্যাকিং কৌশল

ওভারভিউ

এই কৌশলটির মূল অংশটি হল ট্রেন্ডের দিকনির্দেশনা এবং ট্রেন্ড ট্র্যাকিংয়ের জন্য T3 সূচকের মসৃণ মুভিং এভারেজ এবং ATR সূচকের গতিশীল স্টপ ব্যবহার করা। এই কৌশলটি ট্রেন্ড ট্র্যাকিং এবং ট্রেন্ড রিভার্সনের সুযোগের সাথে মিলিত হয়েছে, যা ট্রেন্ডের পরিস্থিতিতে আরও বেশি লাভ অর্জনের লক্ষ্যে।

কৌশল নীতি

এই কৌশলটি T3 সূচক ব্যবহার করে দামের সমতল চলমান গড় গণনা করে এবং এটিআর সূচক ব্যবহার করে এই চক্রের গড় বাস্তব ওঠানামা গণনা করে। যখন দামটি এটিআর গতিশীল স্টপ লঙ্ঘন করে তখন একটি লেনদেনের সংকেত উত্পন্ন হয়। বিশেষত, যখন দামটি এটিআর স্টপ লাইন অতিক্রম করে তখন একটি কেনার সংকেত উত্পন্ন হয় এবং যখন এটিআর স্টপ লাইন অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।

জাল সংকেতগুলিকে ফিল্টার করার জন্য, কৌশলটি অতিরিক্তভাবে দাবি করে যে দামটিও একটি টি 3 মুভিং এভারেজকে ভেঙে ফেলতে হবে যাতে সংকেতটি নিশ্চিত করা যায়। এটিআর মানের মাধ্যমে কৌশলটি স্টপ লস এবং স্টপ স্টপগুলি গণনা করে, যা ঝুঁকি ব্যবস্থাপনার জন্য প্রয়োজনীয়।

সামর্থ্য বিশ্লেষণ

ঐতিহ্যগত মুভিং এভারেজের তুলনায়, টি 3 সূচকটি আরও বেশি সংবেদনশীল এবং কম পিছিয়ে রয়েছে, যা দামের প্রবণতাগুলির পরিবর্তনকে আরও দ্রুত ধরতে পারে। টি 3 এর গাণিতিক গণনার সুবিধাও রয়েছে, যা আরও সঠিক এবং মসৃণ মুভিং এভারেজ সরবরাহ করতে পারে।

এটিআর মান বর্তমান বাজারের অস্থিরতা এবং ঝুঁকি স্তরকে প্রতিফলিত করে। এটিআর গতিশীল ট্র্যাকিং স্টপ লস এবং স্টপ বক্সগুলি গতিশীলভাবে অবস্থান স্কেলকে সামঞ্জস্য করতে পারে, ট্রেন্ডিং পরিস্থিতিতে আরও বেশি লাভ অর্জন করতে পারে এবং ঝড়ের পরিস্থিতিতে ক্ষতি হ্রাস করতে পারে।

ঝুঁকি বিশ্লেষণ

এই কৌশলটি সূচক গণনার উপর নির্ভর করে, এবং এটির ঝুঁকি রয়েছে। তদুপরি, টি 3 স্ল্যাশড মুভিং এভারেজ এবং এটিআর ডায়নামিক স্টপডের সমস্যা রয়েছে এবং দামের দ্রুত বিপরীত হওয়ার সুযোগটি মিস করা হতে পারে। প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করা বা অন্যান্য সূচকগুলির সাথে মিলিত হয়ে অপ্টিমাইজ করা যায়।

প্রবণতা শক বিপরীত হলে, স্টপ লসটি ভেঙে ফেলা হতে পারে যার ফলে ক্ষতি বাড়তে পারে। স্টপ লস পরিসীমা যথাযথভাবে প্রশস্ত করা যেতে পারে বা অন্য প্যারামিটার যেমন হ্যান্ডেল মানগুলি স্টপ লস ভিত্তিতে ব্যবহার করা যেতে পারে।

অপ্টিমাইজেশান দিক

  • T3 সূচক প্যারামিটারগুলিকে সংবেদনশীলতার জন্য অনুকূলিতকরণ করা যেতে পারে।

  • ATR-এর বিভিন্ন প্যারামিটার পরীক্ষা করে সর্বোত্তম মান খুঁজে বের করা যায়।

  • বিভিন্ন ঝুঁকি-পুরস্কারের অনুপাত পরীক্ষা করে সর্বোত্তম প্যারামিটার নির্ধারণ করা যায়।

  • অন্যান্য সূচক যেমন Money Flow Index, এর সাথে সংযুক্ত করা যেতে পারে।

  • মেশিন লার্নিং পদ্ধতি ব্যবহার করে প্যারামিটার সমন্বয় স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করা যায়।

সারসংক্ষেপ

এই কৌশলটি টি 3 সমতল চলমান গড়ের প্রবণতা ট্র্যাকিং ক্ষমতা এবং এটিআর এর গতিশীল স্টপ লস অ্যাডজাস্টমেন্ট ক্ষমতা একত্রিত করে। প্যারামিটার অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণের ক্ষেত্রে ভাল রিটার্নের প্রত্যাশা রয়েছে। এই কৌশলটি প্রবণতা ট্র্যাকিং এবং বিপরীত সুযোগ উভয়ই বিবেচনা করে। এটি একটি সাধারণ ধরণের পরিমাণগত ট্রেডিং কৌশল।

কৌশল সোর্স কোড
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='NinjaView Example 1 (UTBA "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')