এই কৌশলটি মুভিং এভারেজের প্রবণতা ট্র্যাকিং এবং ক্যামের ডায়নামিক অ্যাডজাস্টমেন্ট বৈশিষ্ট্যগুলিকে একত্রিত করে যাতে ট্রেডিং সিগন্যালের গুণমান উন্নত করা যায়।
এই কৌশলটির কেন্দ্রীয় সূচকটি হল কাফমানের স্বনির্ধারিত চলমান গড় (KAMA) । KAMA বাজারের ওঠানামার আকারের সাথে গতিশীলভাবে তার ওজন ফ্যাক্টরকে সামঞ্জস্য করে, যার ফলে কার্ভের সংবেদনশীলতা বৃদ্ধি পায়। বিশেষত, যখন বাজারের ওঠানামার আকার বৃদ্ধি পায়, তখন KAMA এর কার্ভ আরও মসৃণ হয়ে যায়; যখন বাজারের ওঠানামার আকার হ্রাস পায়, তখন KAMA এর কার্ভ আরও সংবেদনশীল হয়ে ওঠে। এইভাবে কিছু শব্দ ফিল্টার করা যায়, যখন নতুন ট্রেন্ডের পালা সময়মতো ধরা যায়।
কৌশলটি প্রথমে KAMA এর মান গণনা করে। তারপরে KAMA লাইনের ফাঁকা অবস্থার বিচার করা হয়ঃ যখন ক্লোজ মূল্য KAMA লাইনটি অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন হয়; যখন ক্লোজ মূল্য KAMA লাইনটি অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। এই ট্রেডিং সংকেতগুলির উপর ভিত্তি করে পজিশন খোলার জন্য আরও খালি করা হয়।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ’ল প্রবণতা নির্ধারণের জন্য কামা সূচক ব্যবহার করা হয়। কামা সূচক নিজেই একটি শক্তিশালী প্রবণতা ট্র্যাকিং ক্ষমতা রয়েছে, যা বাজারের অবস্থার সাথে সামঞ্জস্য রেখে প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করতে পারে, যার ফলে আরও নির্ভরযোগ্য ট্রেডিং সিগন্যাল তৈরি হয়। সরল চলমান গড় এবং সূচকীয় চলমান গড়ের তুলনায় কামা সূচকটি প্রবণতা সনাক্ত করতে এবং মিথ্যা সংকেত হ্রাস করতে পারে।
এছাড়াও, এই কৌশলটি কেবলমাত্র KAMA-র ফাঁকা অবস্থা ব্যবহার করে ট্রেন্ডের দিকনির্দেশের জন্য। কোনও অতিরিক্ত ফিল্টারিং শর্ত সেট করা হয়নি, যা কৌশলগত যুক্তিকে সহজ করে তোলে এবং প্যারামিটারগুলিও কম করে দেয়, অতিরিক্ত অপ্টিমাইজেশনের ঝুঁকি হ্রাস করে, যা প্যারামিটার স্থায়িত্ব এবং ক্রস-মার্কেট অভিযোজনযোগ্যতার পক্ষে সহায়ক।
এই কৌশলটির প্রধান ঝুঁকি হল যে KAMA নিজেই একটি পিছিয়ে পড়া সূচক, এবং ট্রেডিং সিগন্যাল তৈরি হওয়ার সময় বাজারের প্রবণতাটি বিপরীত হতে পারে। এটি স্টপ লস ঝুঁকি সৃষ্টি করে। এছাড়াও, KAMA কার্ভের মধ্যে স্বল্পমেয়াদী অস্থিরতা রয়েছে, যা কিছু ঘন ঘন ভুল সংকেত তৈরি করতে পারে।
ঝুঁকি কমানোর জন্য, ট্রেডিং সিগন্যাল নিশ্চিত করার জন্য অন্যান্য সূচকের সাথে মিলিত হওয়া বিবেচনা করা যেতে পারে, যেমন অস্থিরতার সূচক, লেনদেনের পরিমাণ সূচক ইত্যাদি। আপনি উপযুক্তভাবে প্যারামিটারগুলি সামঞ্জস্য করতে পারেন, সনাক্তকরণটি কামা কার্ভকে আরও মসৃণ করে তোলে।
এই কৌশলটি আরও উন্নত করার জন্য অনেক জায়গা রয়েছে, যার মধ্যে রয়েছেঃ
সংকেতের গুণমান উন্নত করতে অন্যান্য সূচক যেমন MACD, কম্পন সূচক ইত্যাদির সাথে সংকেত ফিল্টার করুন
একক ক্ষতি নিয়ন্ত্রণের জন্য চলমান ক্ষতি বা ব্যালেন্স কার্ভের ক্ষতির সাথে অতিরিক্ত স্টপ কৌশল
প্রবণতা ক্যাপচার করার জন্য কামা প্যারামিটারগুলিকে অপ্টিমাইজ করুন
মাল্টি টাইম সাইকেল বিশ্লেষণ যুক্ত করুন, বৃহত্তর প্রবণতা নির্দেশ করার জন্য উচ্চতর টাইম সাইকেল ব্যবহার করুন
মেশিন লার্নিং পদ্ধতি ব্যবহার করে প্যারামিটারগুলিকে স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করুন যাতে প্যারামিটারগুলি বিভিন্ন জাতের সাথে খাপ খায়
এই কৌশলটি সামগ্রিকভাবে সুস্পষ্ট, KAMA সূচক দ্বারা প্রবণতা দিক নির্ধারণ করে, প্রবণতা ট্র্যাকিং ক্ষমতা শক্তিশালী, যুক্তি সহজ, কম পরামিতি ইত্যাদির সুবিধাগুলি রয়েছে। তবে প্রবণতা বিপরীত হওয়ার ঝুঁকিও রয়েছে। এই কৌশলটি বিভিন্ন উপায়ে অপ্টিমাইজ করা যেতে পারে, যাতে এটি আরও কার্যকর এবং আরও অভিযোজিত হতে পারে।
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=3
strategy(title = "Noro's KAMA Strategy", shorttitle="KAMA str", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
length = input(3, minval = 1)
fast = input(2, minval = 1)
slow = input(30, minval = 1)
src = input(title = "Source", defval = close)
type = input(defval = "Trend", options = ["Trend", "Crossing"], title = "Type")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//KAMA
volatility = sum(abs(src-src[1]), length)
change = abs(src[1]-src[length])
er = iff(volatility != 0, change/volatility, 0)
fastSC = 2/(fast+1)
slowSC = 2/(slow+1)
sc = pow((er*(fastSC-slowSC))+slowSC, 2)
bid = hl2
kama = 0.0
kama := nz(kama[1])+(sc*(bid-nz(kama[1])))
plot(kama, color = black, title = "KAMA", trackprice = false, style = line, linewidth = 3)
//Signals
up = false
dn = false
up := (type == "Crossing" and kama > kama[1]) or (type == "Trend" and close > kama)
dn := (type == "Crossing" and kama < kama[1]) or (type == "Trend" and close < kama)
//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn
strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))