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