
এই কৌশলটি কাউফম্যান স্বনির্ধারিত চলমান গড় (KAMA) এর উপর ভিত্তি করে ডিজাইন করা হয়েছে, যা গতিশীলভাবে ট্রেডিং পজিশনগুলিকে সামঞ্জস্য করতে পারে, বাজার প্রবণতা স্বয়ংক্রিয়ভাবে অনুসরণ করে। কৌশলটির প্রধান বৈশিষ্ট্যগুলির মধ্যে রয়েছেঃ
এই বৈশিষ্ট্যগুলি ব্যবহার করে, কৌশলগুলি ঝুঁকি নিয়ন্ত্রণের সাথে সাথে প্রবণতার অতিরিক্ত লাভ অর্জনের চেষ্টা করে।
এই কৌশলটি কাউফমানের উপর ভিত্তি করে কাজ করে যা স্বতঃস্ফূর্তভাবে চলমান গড় সূচকের উপর কাজ করে। দামের গতিশীলতা এবং অস্থিরতার অনুপাত গণনা করে KAMA গতিশীলভাবে গড়ের ওজন এবং মসৃণতা সামঞ্জস্য করে, যার ফলে দামের পরিবর্তনের জন্য আরও দ্রুত প্রতিক্রিয়া জানায়।
যখন KAMA-এর উপরে নিম্নমুখী স্টপ লাইন অতিক্রম করা হয়, তখন ট্রেন্ডটি বিপরীত হয়, যার ফলে একটি কেনার সংকেত তৈরি হয়; যখন KAMA-এর নিচে স্টপ লাইন অতিক্রম করা হয়, তখন ট্রেন্ডটি বিপরীত হয়, যার ফলে একটি বিক্রয় সংকেত তৈরি হয়। পজিশনে প্রবেশের পরে, কৌশলটি ATR-এর উপর ভিত্তি করে একটি গতিশীল স্টপ দূরত্ব গণনা করে এবং একটি স্টপ লাইন স্থাপন করে। যখন KAMA লাভজনক দিকে চলে যায়, তখন স্টপ লাইনটিও অনুসরণ করে, স্টপ লাইনটি আরও লাভজনক অবস্থানে স্থানান্তরিত করে, আরও বেশি মুনাফা লক করার জন্য।
এইভাবে, কৌশলটি প্রবণতা অনুসরণ করতে পারে, ধীরে ধীরে স্টপ লাইনটি সরানো যায়, যতক্ষণ না স্টপ লাইনটি ট্রিগার করা হয় বা বিপরীত সংকেতটি ট্রিগার করা হয় এবং পজিশনটি খালি করা হয়।
ঐতিহ্যগত মুভিং এভারেজ কৌশলগুলির তুলনায় এই কৌশলটির নিম্নলিখিত সুবিধাগুলি রয়েছেঃ
সাধারণভাবে, কৌশলটি দ্রুত প্রতিক্রিয়াশীল, নিয়ন্ত্রণযোগ্য এবং প্রবণতা অনুসরণ করার জন্য আদর্শ কৌশল।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
এই ঝুঁকির জন্য, স্টপ লস দূরত্বের অপ্টিমাইজেশান, সর্বোচ্চ স্টপ লস শতাংশ সেট করার মতো পদ্ধতি দ্বারা নিয়ন্ত্রণ করা যেতে পারে। অন্যান্য সূচকগুলির সাথে নিশ্চিতকরণ হিসাবে, ভুল লেনদেন এড়াতেও ব্যবহার করা যেতে পারে।
এই কৌশলটি নিম্নলিখিত দিকগুলিকে অনুকূলিত করতে পারেঃ
উদাহরণস্বরূপ, আপনি MACD যোগ করার জন্য পরীক্ষা করতে পারেন যা একটি সহায়ক নিশ্চিতকরণ সূচক হিসাবে কাজ করে এবং একই সাথে KAMA গোল্ডফর্কের সাথে MACDDif ধনাত্মক এবং বর্ধিত হতে পারে। এটি কিছু মিথ্যা সংকেতগুলি ফিল্টার করতে পারে এবং অপ্রয়োজনীয় পুনরাবৃত্তিমূলক অবস্থান খোলার এড়াতে পারে।
এই কৌশলটি সামগ্রিকভাবে মসৃণভাবে কাজ করে, গতিশীল স্টপ লস ট্র্যাকিং ট্রেন্ড ব্যবহার করে এবং ট্রেন্ড লাভের সর্বাধিক লকিং করে। KAMA সূচকের স্বনির্ধারণযোগ্যতা কৌশলটিকে বাজারের দ্রুত পরিবর্তনের সাথে তাল মিলিয়ে রাখতে দেয়। কিছু অপ্টিমাইজেশনের মাধ্যমে, কৌশলটি একটি দক্ষ ট্রেন্ড ট্র্যাকিং প্রোগ্রাম হয়ে উঠতে পারে, যা মাঝারি-দীর্ঘ লাইন অপারেশনের জন্য উপযুক্ত।
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("THMA - Bharath Vc Improved", overlay=true, process_orders_on_close=true)
// Function to calculate pips with higher precision
getPips(price) =>
difc = syminfo.mintick
hlpips = price / difc
math.round(hlpips / syminfo.mintick) * syminfo.mintick
// Inputs
buyMess = input.string("Buy Message","Buy Alert Message")
sellMess = input.string("Sell Message","Sell Alert Message")
buyExitMessage = input.string("Buy Exit","Buy Exit Alert Message" )
sellExitMessage = input.string("Sell Exit","Sell Exit Alert Message" )
tmf = input.timeframe("", "Timeframe")
length = input(title='Length', defval=14)
fastLength = input(title='Fast EMA Length', defval=2)
slowLength = input(title='Slow EMA Length', defval=30)
src = input(title='Source', defval=close)
highlight = input(title='Highlight ?', defval=true)
awaitBarConfirmation = input(title='Await Bar Confirmation ?', defval=true)
// Function to calculate the TMA
gettma() =>
mom = math.abs(ta.change(src, length))
volatility = math.sum(math.abs(ta.change(src)), length)
er = volatility != 0 ? mom / volatility : 0
fastAlpha = 2 / (fastLength + 1)
slowAlpha = 2 / (slowLength + 1)
alpha = math.pow(er * (fastAlpha - slowAlpha) + slowAlpha, 2)
kama = 0.0
kama := alpha * src + (1 - alpha) * nz(kama[1], src)
await = awaitBarConfirmation ? barstate.isconfirmed : true
maColor = highlight ? kama > kama[1] and await ? color.green : color.red : color.new(color.purple, 0)
thma = kama
hma_dif = (thma - thma[2])/2
colour = hma_dif > 0 ? color.green : color.red
isGreen = hma_dif > 0
[thma, isGreen, colour]
// Dynamic pip size based on ATR to adapt better to smaller timeframes
pips = ta.atr(14) * 0.1
// Main execution logic
var float psl = na
var int lastSignal = 0
var float lastPsl = na
[thma, isGreen, colour] = request.security(syminfo.tickerid, tmf, gettma(), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
plot(thma, title='KAMA', linewidth=2, color=colour)
if ta.crossover(thma, psl) and strategy.position_size < 0
strategy.exit("Sell Exit", stop=thma, alert_message=sellExitMessage)
if ta.crossunder(thma, psl) and strategy.position_size > 0
strategy.exit("Buy Exit", stop=thma, alert_message=buyExitMessage)
if isGreen and strategy.position_size <= 0
if na(psl)
psl := close + getPips(pips)
strategy.entry("Buy", strategy.long, alert_message=buyMess)
lastSignal := 1
if not isGreen and strategy.position_size >= 0
if na(psl)
psl := close - getPips(pips)
strategy.entry("Sell", strategy.short, alert_message=sellMess)
lastSignal := -1
if (thma >= lastPsl or na(lastPsl)) and thma > psl
psl := psl + getPips(pips)
lastPsl := psl
if (thma <= lastPsl or na(lastPsl)) and thma < psl
psl := psl - getPips(pips)
lastPsl := psl
plot(psl, title="Position Stop Level", style=plot.style_stepline, color=color.blue)
plot(lastPsl, title="Last Position Stop Level", style=plot.style_cross, color=color.red)