
এই কৌশলটি হল Hull Moving Average ((HMA) এর 1, 2, 3 এবং 4 পর্যায়ের সময়রেখার উপর ভিত্তি করে বিনিয়োগ করা। এটি একটি নির্দিষ্ট পরিমাণ অর্থ বিনিয়োগ করে। এন্ট্রি পয়েন্টটি 2, 3 এবং 4 পর্যায়ের নির্দেশকের প্রবণতা দ্বারা চিহ্নিত করা হয়, এবং এক্সট্রি পয়েন্টটি একটি নতুন এন্ট্রি পয়েন্ট বা ট্র্যাকিং স্টপ লস শতাংশে তৈরি করা হয়।
এই কৌশলটি প্রথমে HMA গণনা করে। হালের চলমান গড় একটি ওজনের চলমান গড় যা নিম্নলিখিত সূত্র ব্যবহার করে গণনা করা হয়ঃ
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
যেখানে src হল মূল্য, এবং sm হল একটি ইনপুট প্যারামিটার যা গড়ের দৈর্ঘ্য নিয়ন্ত্রণ করে।
এরপর এই কৌশলটি গতির (১ম শ্রেণির), ত্বরণের (২ম শ্রেণির), কম্পনের (৩ম শ্রেণির) এবং কম্পনের (৪ম শ্রেণির) হিসাব করে। এই হিসাবগুলো HMA এবং তার স্থগিত মানের মধ্যে পার্থক্য গণনা করে এবং তারপরে দৈর্ঘ্যের দ্বারা ভাগ করে। উদাহরণস্বরূপ, গতির হিসাবের সূত্রটি হলঃ
speed = (hullma-hullma[len])/len
অন্যান্য ধ্রুবক গণনা করা হয় অনুরূপভাবে:
কৌশলটি ত্বরণ, কম্পন এবং উত্তেজনার ধনাত্মক এবং নেতিবাচক দিকগুলি দেখে প্রবেশ এবং প্রস্থান নির্ধারণ করে। যদি তিনটি সূচকই ইতিবাচক হয় তবে এটি একটি অতিরিক্ত কার্ড খুলবে। যদি তিনটি সূচকই নেতিবাচক হয় তবে এটি একটি খালি কার্ড খুলবে।
এছাড়াও, এই কৌশলটি মুনাফা লক করার জন্য ট্রেইলিং স্টপ লস ব্যবহার করে। মাল্টি-ওভার পজিশনগুলি একটি সামঞ্জস্যযোগ্য ইনপুট শতাংশের উপর ভিত্তি করে স্টপ লস সেট করে, খালি-ওভার পজিশনগুলি একই রকম।
এই কৌশলটির একটি প্রধান সুবিধা হল এটি একাধিক কন্ডিশনারকে প্রবেশ এবং প্রস্থান সংকেত হিসাবে ব্যবহার করে, যা কিছু ভুয়া সংকেতগুলিকে ফিল্টার করতে পারে। কেবলমাত্র গতির উপর নির্ভর করে (১ম শ্রেণীর কন্ডিশনার) প্রবেশের সিদ্ধান্ত নেওয়া সাধারণত খুব দুর্বল হয়, তবে ২, ৩, ৪ম শ্রেণীর কন্ডিশনারের সাথে মিলিত হয়ে একটি তুলনামূলকভাবে শক্তিশালী সিস্টেম তৈরি করা যায়।
আরেকটি সুবিধা হল এই কৌশলটি খুবই নমনীয়। এটির অনেকগুলি পরিবর্তনযোগ্য প্যারামিটার রয়েছে, যার মধ্যে রয়েছে HMA দৈর্ঘ্য, বিভিন্ন ডাইরেক্টরির দৈর্ঘ্য, স্টপ লস শতাংশ ইত্যাদি, যা বিভিন্ন বাজারের জন্য অপ্টিমাইজ করা যায়।
এডজাস্টেবল ট্র্যাকিং স্টপ লস ব্যবহার করাও একটি সুবিধা। এটি কৌশলকে ট্রেন্ডিং পরিস্থিতিতে বেশি মুনাফা অর্জনে সহায়তা করতে পারে, যখন ঝড়ের পরিস্থিতিতে সময়মতো প্রস্থান করে, সর্বাধিক প্রত্যাহারকে সীমাবদ্ধ করে।
এই কৌশলটির প্রধান ঝুঁকি হ’ল অপ্রত্যাশিত ঘটনার কারণে হিট হ্রাস। যদি প্রাসঙ্গিক ফিল্টারিং নিয়ম না থাকে তবে বড় সংবাদ ঘটনার পরে একাধিক কন্ডাক্টর একই সাথে ভুল সংকেত দিতে পারে, যার ফলে বড় ক্ষতি হয়। এই ঝুঁকি হ্রাস করার জন্য কিছু সংবাদ ফিল্টার সেট আপ করা যেতে পারে বা অপ্রত্যাশিত ঘটনার পরে কৌশলটি কিছু সময়ের জন্য স্থগিত করা যেতে পারে।
আরেকটি ঝুঁকি হ’ল প্যারামিটারগুলি সহজেই ওভারফিট করা যায়। এইচএমএ দৈর্ঘ্য, প্রতিটি ডাইরেক্টরির দৈর্ঘ্য এবং অন্যান্য প্যারামিটারগুলি ফলাফলকে প্রভাবিত করতে পারে। এর জন্য কঠোরভাবে পুনরাবৃত্তি পদ্ধতি ব্যবহার করা প্রয়োজন, বিভিন্ন বাজারে এই প্যারামিটারগুলির স্থায়িত্বের মূল্যায়ন করা। এছাড়াও, ট্র্যাকিংয়ের জন্য সতর্কতা অবলম্বন করা উচিত যে ক্ষতির শতাংশটি খুব বড় হওয়া উচিত নয়, অন্যথায় ক্ষতির বিস্তার হতে পারে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
গুরুত্বপূর্ণ নিউজ ইভেন্টের পর ট্রেডিং স্থগিত করার জন্য আপডেট-ভিত্তিক ফিল্টারিং ব্যবস্থা যুক্ত করা হয়েছে, যাতে এন্ট্রি পয়েন্টগুলি মিস না করে অত্যধিক লোকসান এড়ানো যায়
প্যারামিটারগুলির স্থিতিশীলতা নিশ্চিত করার জন্য মাল্টি-মার্কেট পুনর্বিবেচনা করুন। বিভিন্ন জাতের, বিভিন্ন সময়কালের ডেটা পুনর্বিবেচনা করতে পারে, প্যারামিটার সেটিংয়ের স্থিতিশীলতা মূল্যায়ন করতে পারে
চেষ্টা করুন এন্ট্রি-ফিল্ড লজিক পরিবর্তন করতে। মেশিন লার্নিং অ্যালগরিদমগুলিকে প্রবণতা সনাক্ত করার পরিবর্তে স্বয়ংক্রিয়ভাবে প্রবণতা সনাক্ত করতে পারে।
স্টপিং পদ্ধতির উন্নতি করা হয়েছে। স্টপিংয়ের পরিবর্তে সহজ শতাংশ ট্র্যাকিংয়ের পরিবর্তে ওলট-পালট হার বা মেশিন লার্নিং স্টপ ব্যবহার করা যেতে পারে
স্টপ-আউট বা টার্গেট প্রফিট-আউট বাড়ানোর জন্য অতিরিক্ত স্টপ-আউট বা টার্গেট প্রফিট-আউট যুক্ত করুন। বিদ্যমান লজিকটি মূলত স্টপ-লসের উপর নির্ভর করে
এই কৌশলটি একটি বহু-সময়-স্কেল প্রবণতা-অনুসরণ কৌশল। এটি হালের চলমান গড়ের একাধিক ডেরিভেটিভকে পজিশনিং এবং পজিশনিং সিগন্যাল হিসাবে ব্যবহার করে এবং স্টপ লস ট্র্যাকিং ব্যবহার করে লাভের জন্য লক করে। প্রধান সুবিধা হল মিথ্যা সংকেতগুলি ফিল্টার করার জন্য একাধিক ডেরিভেটিভ ব্যবহার করা, কৌশলগত প্যারামিটারগুলির নমনীয়তা ইত্যাদি। যে ঝুঁকিগুলির দিকে মনোযোগ দেওয়া দরকার তার মধ্যে রয়েছে অপ্রত্যাশিত ঘটনাগুলির প্রভাব এবং প্যারামিটারগুলি খুব সহজেই ফিট করে। এই কৌশলটি ফিল্টারিং প্রক্রিয়া যুক্ত করা, প্যারামিটার স্থিতিশীলতা উন্নত করা, প্রবেশের প্রস্থান লজিক পরিবর্তন করা ইত্যাদির মতো দিক থেকে অপ্টিমাইজ করা যেতে পারে, এটি একটি আরও নির্ভরযোগ্য এবং স্থিতিশীল অটোমেটেড ট্রেডিং সিস্টেম তৈরি করে।
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
stopValue=ohlc4*(1-longTrailPerc)
max(stopValue,longStopPrice[1])
else
0
shortStopPrice:=if(strategy.position_size<0)
stopValue=ohlc4*(1+shortTrailPerc)
min(stopValue,shortStopPrice[1])
else
999999
if(strategy.position_size>0)
strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
strategy.exit(id="closeshort",stop=shortStopPrice)