গতিশীলতা কৌশল হল এমন একটি কৌশল যা মূল্য পরিবর্তনের প্রবণতা অনুসারে লেনদেন করে। এই কৌশলটি একটি নির্দিষ্ট সময়ের মধ্যে দামের পরিবর্তনের বিষয়টি গণনা করে, মূল্য আন্দোলনের প্রবণতা নির্ধারণ করে এবং তারপরে লেনদেনের সংকেত দেয়। যখন দাম বাড়ার প্রবণতা দেখা দেয়, তখন একটি কেনার সংকেত তৈরি করে; যখন দাম নেমে যাওয়ার প্রবণতা দেখা দেয়, তখন একটি বিক্রয় সংকেত তৈরি করে। এই কৌশলটি দ্বি-গতিশীলতার সূচকগুলি ক্রস করে লেনদেনের সংকেত তৈরি করে।
এই কৌশলটি একটি নির্দিষ্ট সময়ের মধ্যে বন্ধের দামের পরিবর্তনের উপর ভিত্তি করে মূল্যের গতিশীলতা নির্ধারণ করে। বিশেষত, এটি N সময়ের আগে বন্ধের দামের পরিবর্তনের তুলনায় বন্ধের দামের পরিবর্তনকে গণনা করে।
প্রথমে প্রথম গতিশীলতা সূচক MOM0 গণনা করুন, সূত্রটি হলঃ
MOM0 = CLOSE - CLOSE[N]
এর মধ্যে, CLOSE হল বর্তমান চক্রের সমাপ্তি মূল্য, CLOSE[N] হল N চক্রের আগে ক্লোজিং মূল্য। সুতরাং MOM0>0 হল বর্তমান চক্রের তুলনায় N চক্রের আগে ক্লোজিং মূল্য বৃদ্ধি এবং MOM0 হল বর্তমান চক্রের তুলনায় N চক্রের আগে ক্লোজিং মূল্য পতন।
তারপর দ্বিতীয় গতিশীলতা সূচক MOM1 গণনা করা হয়, যার সূত্র হলঃ
MOM1 = MOM0 - MOM0[1]
অর্থাৎ, MOM0 এর বর্তমান চক্রের মানকে পূর্ববর্তী চক্রের মানকে বাদ দিয়ে গণনা করুন। MOM1>0 মানে MOM0 বেড়েছে, MOM1 মানে MOM0 কমেছে।
একই সময়ে তৃতীয় গতিশীলতা সূচক MOM2 গণনা করা হয়, সূত্রটি হলঃ
MOM2 = CLOSE - CLOSE[1]
অর্থাৎ, বর্তমান চক্রের সমাপ্তির মূল্যকে পূর্ববর্তী চক্রের সমাপ্তির মূল্যকে বাদ দিয়ে গণনা করা হয়েছে। MOM2>0 সমাপ্তির দাম বাড়ানোর জন্য, MOM2 সমাপ্তির দাম হ্রাস করার জন্য।
যখন MOM0>0 এবং MOM1>0 হয়, তখন ক্রমাগত বৃদ্ধি দেখায়, একটি ক্রয় সংকেত উত্পন্ন করে; যখন MOM0 এবং MOM2 হয়, তখন ক্রমাগত পতন দেখায়, বিক্রয় সংকেত উত্পন্ন করে।
কোডে সময় শর্ত time_cond যুক্ত করা হয়েছে, যা কেবলমাত্র সেট করা রিটার্নিং সময়ের মধ্যে লেনদেনের সংকেত তৈরি করবে। এছাড়াও, অর্ডার দেওয়ার আগে আবার পরীক্ষা করুন যে শর্তটি এখনও রয়েছে কিনা, সংকেতটি চলে যাওয়ার পরেও অর্ডার দেওয়া থেকে বিরত থাকুন।
ট্রেডিং ভলিউম ইন্ডিকেটর ব্যবহার করে ঝুঁকি কমানোর জন্য ট্রেডিং ভলিউম চক্র সংক্ষিপ্ত করা, ট্রেন্ডিং সিদ্ধান্ত নেওয়া বা স্টপ লস কনফিগার করা যেতে পারে।
গতিশীলতা কৌশলটি দামের পরিবর্তনের প্রবণতা অনুসরণ করে এবং দাম নিজেই নয়, কার্যকরভাবে বাজারের হট পয়েন্টের দিকনির্দেশনা নির্ধারণ করতে পারে এবং দামের উত্থান ও পতনের সুযোগকে কাজে লাগাতে পারে। তবে গতিশীলতাটি পিছিয়ে রয়েছে, প্যারামিটার নির্বাচন এবং পোর্টফোলিও অপ্টিমাইজেশন কৌশলটির কার্যকারিতার জন্য অত্যন্ত গুরুত্বপূর্ণ। এই কৌশলটি দ্বি-গতিশীল সূচকগুলির ক্রস-ভিত্তিক এবং আংশিক শব্দটি ফিল্টার করতে পারে। প্যারামিটারগুলি ক্রমাগত অপ্টিমাইজ করে, নতুন প্রযুক্তিগত সূচক যুক্ত করে এবং মেশিন লার্নিং ব্যবহার করে কৌশলটির কার্যকারিতা আরও বাড়িয়ে তুলতে পারে এবং ঝুঁকি নিয়ন্ত্রণ করতে পারে।
/*backtest
start: 2022-09-25 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)
// Calculate start/end date and time condition
startDate = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
time_cond = true
i_len = input(defval = 12, title = "Length", minval = 1)
i_src = input(defval = close, title = "Source")
i_percent = input(defval = true, title = "Percent?")
i_mom = input(defval = "MOM2", title = "MOM Choice", options = ["MOM1", "MOM2"])
momentum(seria, length, percent) =>
_mom = percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
_mom
mom0 = momentum(i_src, i_len, i_percent)
mom1 = momentum(mom0, 1, i_percent)
mom2 = momentum(i_src, 1, i_percent)
momX = mom1
if i_mom == "MOM2"
momX := mom2
if (mom0 > 0 and momX > 0 and time_cond)
strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
strategy.cancel("MomSE")
plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")