রিসোর্স লোড হচ্ছে... লোডিং...

ডাইরেকশনাল মুভমেন্ট ইনডেক্স ডুয়াল-ডাইরেকশন ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-১৯ 14:13:52
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি পণ্যগুলির দিকনির্দেশক আন্দোলন সূচক (ডিআই) গণনা করে এবং দ্বি-নির্দেশক ট্রেডিং বাস্তবায়নের জন্য এটিকে সীমা পরামিতিগুলির সাথে একত্রিত করে। ডিআই + একটি সীমা পরামিতি দ্বারা ডিআই + এর চেয়ে বড় হলে এটি দীর্ঘ হয় এবং ডিআই - একটি সীমা পরামিতি দ্বারা ডিআই + এর চেয়ে বড় হলে এটি সংক্ষিপ্ত হয়।

কৌশল নীতি

এই কৌশলটির মূল সূচক হল দিকনির্দেশক আন্দোলন সূচক (ডিআই) । ডিআই নিম্নলিখিত সূত্র দ্বারা গণনা করা হয়ঃ

ডিআই+ = (ডিএম+ / সত্যিকারের পরিসীমা) × ১০০ ডিআই- = (ডিএম- / সত্য পরিসীমা) × ১০০

যেখানে DM+ হল দিকনির্দেশক গতির ইতিবাচক, DM- হল দিকনির্দেশক গতির নেতিবাচক। সত্যিকারের পরিসীমা হ'ল তিন দিনের মধ্যে আগের দিনের সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্য এবং বন্ধের মূল্যের সর্বাধিক মান গণনা করে সাম্প্রতিক অস্থিরতা।

ডিআই এর সংজ্ঞা অনুসারে, যখন ডিআই+ > ডিআই- এর অর্থ বর্তমান বাজারের গতি আরও শক্তিশালী, যা একটি ষাঁড়ের বাজারের অন্তর্গত; যখন ডিআই- > ডিআই + এর অর্থ হ'ল ভালুকের গতি তুলনায় ভালুকের গতি আরও শক্তিশালী, যা একটি ভালুকের বাজারের অন্তর্গত।

এই কৌশলটি এই বৈশিষ্ট্যটি ব্যবহার করে এবং একটি সীমা প্যারামিটার সেট করে। যখন ডিআই + ডিআই- এর চেয়ে একটি সীমা প্যারামিটারে বেশি হয়, তখন এটি নির্ধারণ করে যে বর্তমান বাজারটি একটি ষাঁড়ের বাজার এবং দীর্ঘ যায়। যখন ডিআই- ডিআই + এর চেয়ে একটি সীমা প্যারামিটারে বেশি হয়, তখন এটি নির্ধারণ করে যে বর্তমান বাজারটি একটি ভালুক বাজার এবং শর্ট যায়।

উদাহরণস্বরূপ, যদি সীমা প্যারামিটারটি 3 এ সেট করা থাকে, তবে নির্দিষ্ট ট্রেডিং নিয়মগুলি হলঃ

  1. যখন ডিআই+ - ডিআই- > ৩, লং যান
  2. যখন ডিআই- - ডিআই+ > ৩, তখন শর্ট

যেহেতু ডিআই+ এবং ডিআই-এর মধ্যে প্রায়শই ছোটখাট পরিবর্তনশীল পার্থক্য থাকে, তাই একটি সীমা পরামিতি নির্ধারণ করে উল্লেখযোগ্য দিকনির্দেশকতা ছাড়াই কিছু ট্রেড ফিল্টার করতে পারে এবং অপ্রয়োজনীয় ট্রেডগুলি হ্রাস করতে পারে। এটি এই কৌশলটির একটি সুবিধা।

সুবিধা বিশ্লেষণ

এই কৌশলটির প্রধান সুবিধাগুলো হল:

  1. ডিআই বাজারের দিকনির্দেশনা সম্পর্কে নির্ভরযোগ্য

    ডিআই সরাসরি বাজার প্রবণতা গণনা করে ষাঁড় এবং ভালুকের শক্তি গণনা করে। তত্ত্বটি জটিল অ্যালগরিদম যেমন বক্ররেখা ফিটিং ছাড়া সহজ এবং নির্ভরযোগ্য।

  2. সীমা পরামিতি কার্যকরভাবে সংকেত ফিল্টার করতে পারেন

    সীমানা প্যারামিটারটি উল্লেখযোগ্য দিকনির্দেশনা ছাড়াই ছোটখাট ওঠানামা ফিল্টার করে, কেবলমাত্র বাণিজ্যের জন্য উল্লেখযোগ্য দিকনির্দেশনা সহ বিভাগগুলি নির্বাচন করে, ফাঁদে পড়া এড়ানো।

  3. স্বয়ংক্রিয়ভাবে দ্বি-দিকের লেনদেন অর্জন

    ডিআই সূচকের উপর ভিত্তি করে লং এবং শর্ট পজিশনগুলি ম্যানুয়াল বিচার ছাড়াই স্বয়ংক্রিয়ভাবে স্যুইচ করা যায়, যা ট্রেডিংয়ের অসুবিধা হ্রাস করে।

  4. কাস্টমাইজযোগ্য ট্রেডিং সময়সীমা

    শুধুমাত্র একটি কাস্টমাইজযোগ্য তারিখ পরিসীমা মধ্যে ট্রেডিং সেটিং সমর্থন করে এবং স্বয়ংক্রিয়ভাবে পরে সব অবস্থানের বন্ধ, নমনীয় এবং সুবিধাজনক।

  5. শুধুমাত্র দীর্ঘ বা সংক্ষিপ্ত নির্বাচনযোগ্য

    দীর্ঘ এবং সংক্ষিপ্ত সুইচগুলির মাধ্যমে, বিভিন্ন বাজারের পরিবেশের জন্য উপযুক্ত দীর্ঘ বা সংক্ষিপ্ত শুধুমাত্র কৌশলগুলি বাস্তবায়নের জন্য কেবলমাত্র একমুখী সংকেতগুলি নির্বাচন করা যেতে পারে।

ঝুঁকি বিশ্লেষণ

এই কৌশলটির সাথে কিছু ঝুঁকিও রয়েছেঃ

  1. ডিআই ভুল সংকেত দেওয়ার সম্ভাবনা

    ডিআই যখন বাজারে মারাত্মক ওঠানামা হয় তখন স্বল্পমেয়াদী ভুল সংকেত দিতে পারে, যার ফলে ব্যর্থ ট্রেড হয়। যাচাইয়ের জন্য অন্যান্য সূচকগুলি একত্রিত করা প্রয়োজন।

  2. সীমাবদ্ধ পরামিতির অপ্রয়োজনীয় সেটিংস

    ভুল উচ্চ বা নিম্ন সীমা পরামিতি সেটিং খুব কম বা খুব বেশি ট্রেডিং সংকেত হতে পারে। পরামিতি বাজারের অনুযায়ী সামঞ্জস্য করা প্রয়োজন।

  3. প্রবণতা শেষ পয়েন্ট নির্ধারণ করা যায়নি

    ডিআই শুধুমাত্র বর্তমান প্রবণতার দিকনির্দেশনা নির্ধারণ করতে পারে এবং প্রবণতা শেষ হয়েছে বা বিপরীত হয়েছে কিনা তা বিচার করতে পারে না। অন্যান্য সূচকগুলি একত্রিত করা প্রয়োজন।

ঝুঁকিগুলির সমাধানগুলির মধ্যে রয়েছেঃ

  1. ডিআই সংকেত ফিল্টার করার জন্য চলমান গড় এবং অন্যান্য সূচক একত্রিত করুন

  2. ব্যাকটেস্টের ফলাফলের উপর ভিত্তি করে সীমা পরামিতিগুলি সামঞ্জস্য করুন

  3. প্রবণতা বিপরীত হয় কিনা তা নির্ধারণ করতে ভলিউম, এমএসিডি ইত্যাদি একত্রিত করুন

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত উপায়ে আরও অপ্টিমাইজ করা যেতে পারেঃ

  1. মার্কেট প্রোফাইলের মতো অন্যান্য প্রবণতা মূল্যায়ন সূচকগুলি একত্রিত করুন

    মার্কেট প্রোফাইলের মতো সূচকগুলির সংমিশ্রণ যা ডিআইয়ের সাথে স্বজ্ঞাতভাবে দীর্ঘ স্বল্প ক্ষমতাও বিচার করে, বিচারের নির্ভুলতা উন্নত করতে পারে।

  2. স্টপ-লাভ এবং স্টপ-লস কৌশল যোগ করুন

    স্টপ লস, সময় বা শতাংশ স্টপ লস নির্ধারণ করলে লাভ এবং ক্ষতি হ্রাস করা যায়।

  3. নির্দিষ্ট পণ্যগুলির জন্য পরামিতিগুলি সামঞ্জস্য করুন

    বিভিন্ন পণ্যের বৈশিষ্ট্য অনুসারে সীমা পরামিতি এবং ট্রেডিংয়ের সময়গুলি সামঞ্জস্য করা কৌশলটির কার্যকারিতা উন্নত করতে পারে।

  4. মেশিন লার্নিং ব্যবহার করে গতিশীল অপ্টিমাইজেশন

    লাইভ সিগন্যালের উপর ভিত্তি করে প্যারামিটার সেটিংসকে গতিশীলভাবে অপ্টিমাইজ করার জন্য রিইনফোর্সমেন্ট লার্নিং অ্যালগরিদম ব্যবহার করা।

সংক্ষিপ্তসার

সংক্ষেপে, এই কৌশলটি তুলনামূলকভাবে সহজ এবং ব্যবহারিক। এটি বাজারের দিকনির্দেশ নির্ধারণের জন্য ডিআই এর গণনা ব্যবহার করে; সীমানা পরামিতিগুলির মাধ্যমে সংকেতগুলি ফিল্টার করে; দ্বৈত-নির্দেশ ট্রেডিং বা কেবল দীর্ঘ / সংক্ষিপ্ত সমর্থন করে; ট্রেডিং সময় ফ্রেম সেট করার অনুমতি দেয়। প্রধান সুবিধাগুলি উচ্চ নির্ভরযোগ্যতা এবং কার্যকর সংকেত ফিল্টারিং। এর ভুল সংকেত এবং পরামিতি সেটিংসের মতো সমস্যাও রয়েছে। আমরা অন্যান্য সূচকগুলি একত্রিত করে, স্টপ-লস / মুনাফা সেট করে, পরামিতিগুলি সামঞ্জস্য করে ইত্যাদি উন্নত করতে পারি, বা মেশিন লার্নিংয়ের সাথে এটি গতিশীলভাবে অনুকূল করে। সামগ্রিকভাবে এটি শালীন ফলাফলের জন্য অন্যান্য কৌশলগুলির সাথে একত্রিত করার জন্য একটি দিকনির্দেশক সূচক হিসাবে উপযুক্ত।


/*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()

আরো