
এই কৌশলটি পণ্যের গতিশীলতার সূচক ((ডিআই) গণনা করে এবং সীমাবদ্ধতার প্যারামিটারগুলির সাথে মিলিত করে পণ্যের দ্বি-মুখী লেনদেনের অনুমতি দেয়। যখন ডিআই + ডিআই-এর চেয়ে বেশি হয় তখন অতিরিক্ত হয় এবং যখন ডিআই-এর চেয়ে বেশি হয় তখন খালি হয়।
এই কৌশলটির কেন্দ্রীয় সূচক হল ডায়নামিক ইনডেক্স ((DI) । ডিআই নিম্নলিখিত সূত্র দ্বারা গণনা করা হয়ঃ
DI+ = (DM+ / বাস্তব পরিসীমা) × 100 DI- = (DM- / বাস্তব পরিসীমা) × 100
যেখানে DM+ মানে মাল্টি হেড মুভমেন্ট, DM- মানে খালি হেড মুভমেন্ট। সত্যিকারের পরিসীমাটি তিন দিনের সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্য এবং গতকালের বন্ধ মূল্যের ওঠানামা গণনা করে সাম্প্রতিক ওঠানামা প্রতিনিধিত্ব করে।
ডিআই এর সংজ্ঞা অনুসারে, যখন ডিআই+ > ডিআই- হয়, তখন বোঝা যায় যে বর্তমান পরিস্থিতিতে খালি মাথা শক্তির চেয়ে বেশি শক্তি রয়েছে, এটি খালি মাথা বাজারের অন্তর্গত; যখন ডিআই- > ডিআই+ হয়, তখন বোঝা যায় যে খালি মাথা শক্তি খালি মাথা শক্তির চেয়ে শক্তিশালী, এটি খালি মাথা বাজারের অন্তর্গত।
এই কৌশলটি এই বৈশিষ্ট্যটি ব্যবহার করে এবং একটি সীমাবদ্ধতা প্যারামিটার সেট করে। যখন ডিআই + ডিআই-এর চেয়ে বড় হয়, তখন এটি একটি মাল্টি-হেড বাজার হিসাবে বিবেচিত হয়। যখন ডিআই-এর চেয়ে বড় হয়, তখন এটি একটি খালি-হেড বাজার হিসাবে বিবেচিত হয়।
উদাহরণস্বরূপ, যদি সীমাবদ্ধতা প্যারামিটারটি 3 তে সেট করা হয়, তবে নির্দিষ্ট ট্রেডিং নিয়মগুলি হলঃ
যেহেতু DI+ এবং DI- এর মধ্যে প্রায়শই কম পার্থক্যের ওঠানামা থাকে, তাই সীমাবদ্ধতার প্যারামিটারগুলি সেট করা এই কৌশলটির একটি সুবিধা যে এটি অপ্রয়োজনীয় ব্যবসায়কে হ্রাস করে এমন কিছু ট্রেডিং সিগন্যালকে ফিল্টার করতে পারে যার কোনও স্পষ্ট দিকনির্দেশনা নেই।
এই কৌশলটির প্রধান সুবিধাগুলো হলঃ
ডিআই (Differential Analysis) বাজার চলার বিষয়ে সরাসরি সিদ্ধান্ত নেওয়ার জন্য পলিথিনের দুই পক্ষের শক্তির তুলনা করে, কোন জটিল অ্যালগরিদম যেমন কার্ভ ফিট নেই, তত্ত্বটি সহজ এবং নির্ভরযোগ্য।
প্যারামিটার ফিল্টারিংয়ের মাধ্যমে কোন সুস্পষ্ট দিকনির্দেশনা নেই, শুধুমাত্র ট্রেডিংয়ের জন্য সুস্পষ্ট দিকনির্দেশনার শক্তিশালী অংশগুলি বেছে নিন।
মাল্টি-ফ্রি পজিশনগুলি ডিআই সূচক অনুসারে স্বয়ংক্রিয়ভাবে স্যুইচ করা যায়, কোনও ম্যানুয়াল বিচার ছাড়াই, লেনদেনের অসুবিধা হ্রাস করে।
শুধুমাত্র কাস্টমাইজড তারিখের মধ্যে ট্রেডিং সমর্থন করে, সমাপ্তির পরে স্বয়ংক্রিয়ভাবে পজিশনের সমাপ্তি, নমনীয় এবং সুবিধাজনক।
একাধিক ফাঁকা সুইচ দ্বারা শুধুমাত্র একমুখী সংকেত নির্বাচন করা যেতে পারে, কেবলমাত্র বা কেবলমাত্র খালি করার জন্য, বিভিন্ন বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
যখন বাজারে তীব্র ওঠানামা দেখা দেয়, ডিআই স্বল্পমেয়াদে ভুল সংকেত দিতে পারে, যার ফলে লেনদেন ব্যর্থ হয়। অন্যান্য সূচকগুলির সংমিশ্রণ প্রয়োজন যাচাইয়ের জন্য।
সীমাবদ্ধতা প্যারামিটার সেট খুব বড় বা খুব ছোট হতে পারে কারণ কম বা খুব বেশি ট্রেডিং সিগন্যাল, বাজারের উপর নির্ভর করে প্যারামিটারগুলি সামঞ্জস্য করতে হবে।
ডিআই কেবলমাত্র বর্তমান প্রবণতার দিকনির্দেশনা নির্ধারণ করতে পারে, তবে প্রবণতাটি শেষ হয়েছে বা বিপরীত হয়েছে কিনা তা নির্ধারণ করতে পারে না, অন্যান্য সূচকগুলির সংমিশ্রণ প্রয়োজন।
ঝুঁকি মোকাবিলার উপায়গুলো হলঃ
চলমান গড়ের সাথে মিলিত ডিআইআই সংকেতগুলি ফিল্টার করুন
রিটার্নিং ফলাফলের উপর ভিত্তি করে সীমাবদ্ধতা প্যারামিটারগুলি সামঞ্জস্য করুন
Volumes, MACD ইত্যাদির সাথে মিলিত হয়ে ট্রেন্ড রিভার্সালের বিচার করা
এই কৌশলটি আরও উন্নত করা যেতে পারে নিম্নলিখিত উপায়েঃ
ডিআই এর সাথে যুক্ত হয়ে, জনমতের বন্যা চিত্রের মতো আরও স্বজ্ঞাত শক্তির সূচকগুলি আরও সঠিকভাবে বিচার করতে পারে।
মুভিং স্টপ, টাইম বা রেট স্টপ লস পয়েন্ট সেট করুন, যা লাভকে লক করতে এবং ক্ষতি হ্রাস করতে পারে।
বিভিন্ন জাতের লেনদেনের বৈশিষ্ট্য অনুসারে সীমাবদ্ধতা প্যারামিটার এবং লেনদেনের সময়গুলি সামঞ্জস্য করা কৌশলটির কার্যকারিতা বাড়িয়ে তুলতে পারে।
রিয়েল-ডিস্ক সংকেত অপ্টিমাইজেশান পরামিতিগুলির উপর ভিত্তি করে রেফারেনশিয়াল লার্নিং এবং অন্যান্য প্রযুক্তি প্রয়োগ করুন।
এই কৌশলটি সামগ্রিকভাবে সহজ এবং ব্যবহারিক। এটি ডিআইয়ের গণনা পদ্ধতি ব্যবহার করে ট্রেডের দিক নির্ধারণ করে; প্যারামিটার ফিল্টার সংকেত সীমাবদ্ধ করে; দ্বি-মুখী লেনদেন করা যেতে পারে, কেবলমাত্র অতিরিক্ত বা শূন্য হতে পারে; ব্যবসায়ের সময়কাল সেট করার জন্য সমর্থন। প্রধান সুবিধা হ’ল উচ্চ নির্ভরযোগ্যতা, কার্যকর ফিল্টার সংকেত। একই সাথে ত্রুটিযুক্ত সংকেত, প্যারামিটার সেটিং ইত্যাদির সমস্যা রয়েছে। আমরা অন্যান্য সূচকগুলির সাথে মিলিত হয়ে কৌশলটির কার্যকারিতা বাড়িয়ে তুলতে পারি, স্টপ লস স্টপ সেট করতে পারি, প্যারামিটারগুলি সামঞ্জস্য করতে পারি ইত্যাদি, এবং গতিশীল অপ্টিমাইজেশনের জন্য মেশিন লার্নিং ব্যবহার করতে পারি।
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Noro's DI Strategy", overlay = false, 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 = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
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")
//DI
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]
//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)
//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()