ইএমএ ক্রসওভার কৌশল সহ এমএসিডি দোলক

লেখক:চাওঝাং, তারিখ: ২০২৩-০৯-২৩ 15:24:12
ট্যাগঃ

সারসংক্ষেপ

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

কৌশলগত যুক্তি

এর মূল উপাদানগুলো হল:

  1. এমএসিডিঃ মূল্যের গতির পরিবর্তন বিচার করা।

  2. ইএমএ: মূল্যের প্রবণতার দিকনির্দেশ নির্ধারণ করে।

  3. সময় শর্তঃ বৈধ কৌশল সময়সীমা নির্ধারণ করা।

  4. লং/শর্ট অপশনঃ লং বা শর্ট দিক বেছে নেওয়া।

ব্যবসায়ের নিয়ম হল:

  1. লং/এক্সাইট শর্টঃ যখন ইএমএ এর উপরে বন্ধ হয়, তখন এমএসিডি হিস্টোগ্রাম ইতিবাচক হয় এবং বর্তমান মোমবাতি পূর্ববর্তী মোমবাতি থেকে বেশি থাকে।

  2. শর্ট/এক্সাইট লংঃ যখন ইএমএ এর নিচে বন্ধ হয়, তখন এমএসিডি হিস্টোগ্রাম নেতিবাচক হয় এবং বর্তমান মোমবাতি পূর্ববর্তী মোমবাতি থেকে কম হয়।

কৌশলটি একটি সহজ এবং কার্যকর সিস্টেমে প্রবণতা অনুসরণ এবং গতিকে একত্রিত করে।

সুবিধা

একক সূচকের তুলনায় এর প্রধান সুবিধাগুলো হল:

  1. এমএসিডি স্বল্পমেয়াদী গতি নির্ধারণ করে, ইএমএ প্রবণতার দিক নির্ধারণ করে।

  2. সহজ এবং সুস্পষ্ট নিয়ম, সহজেই বোঝা এবং বাস্তবায়ন।

  3. বিভিন্ন পণ্য এবং সময়সীমার জন্য নমনীয় প্যারামিটার টিউনিং।

  4. শুধুমাত্র দীর্ঘ/সংক্ষিপ্ত বা দ্বি-মুখী ট্রেডিংয়ের বিকল্প।

  5. অপ্রয়োজনীয় লেনদেন এড়ানোর জন্য বৈধ কৌশল সময় নির্ধারণ করতে পারেন।

  6. বছরের পর বছর ধরে স্থিতিশীল পারফরম্যান্স।

  7. ট্রেড প্রতি নিয়ন্ত্রিত ঝুঁকি।

  8. মেশিন লার্নিং দিয়ে আরও অপ্টিমাইজ করার সম্ভাবনা।

ঝুঁকি

উপকারিতা সত্ত্বেও, বিবেচনা করার ঝুঁকিঃ

  1. বিস্তৃত পরামিতি সমন্বয় অতিরিক্ত ফিটিং ঝুঁকি।

  2. কোন স্টপ নেই, সীমাহীন ক্ষতির ঝুঁকি আছে।

  3. ভলিউম ফিল্টার নেই, ভুয়া ব্রেকআউটের ঝুঁকি আছে।

  4. প্রবণতা বাঁক ধরা মধ্যে বিলম্ব, সব ক্ষতি এড়াতে পারবেন না.

  5. বাজারের পরিবর্তনের ফলে পারফরম্যান্সের অবনতি।

  6. শুধুমাত্র ঐতিহাসিক তথ্যের উপর ভিত্তি করে, মডেলের দৃঢ়তা মূল বিষয়।

  7. উচ্চ ব্যবসায়ের ঘনত্ব লেনদেনের খরচ বৃদ্ধি করে।

  8. রিটার্ন/রিস্ক রেসিও এবং ইক্যুইটি কার্ভ পর্যবেক্ষণের প্রয়োজন।

উন্নতি

কৌশলটি নিম্নলিখিতগুলির মাধ্যমে উন্নত করা যেতে পারেঃ

  1. ভলিউম ফিল্টার যোগ করা হচ্ছে মিথ্যা breakouts এড়াতে.

  2. ট্রেড প্রতি ক্ষতি নিয়ন্ত্রণের জন্য স্টপ বাস্তবায়ন।

  3. সময়সীমার মধ্যে প্যারামিটার কার্যকারিতা মূল্যায়ন।

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

  5. বিভিন্ন বাজারে স্থিতিশীলতা পরীক্ষা।

  6. ফ্রিকোয়েন্সি কমানোর জন্য অবস্থানের আকার সামঞ্জস্য করা।

  7. ঝুঁকি ব্যবস্থাপনা কৌশল অপ্টিমাইজ করা।

  8. ফ্রিকোয়েন্সি বাড়ানোর জন্য স্প্রেড ইনস্ট্রুমেন্ট পরীক্ষা করা হচ্ছে।

  9. অতিরিক্ত ফিটিং রোধ করার জন্য ক্রমাগত ব্যাকটেস্টিং।

সিদ্ধান্ত

সংক্ষেপে, কৌশলটি এমএসিডি এবং ইএমএ সংমিশ্রণ থেকে একটি সহজ তবে শক্তিশালী সিস্টেম গঠন করে। তবে পরিবর্তিত বাজারের অবস্থার সাথে মানিয়ে নিতে যে কোনও কৌশলটির জন্য অবিচ্ছিন্ন অপ্টিমাইজেশন এবং স্থিতিশীলতা পরীক্ষা অত্যন্ত গুরুত্বপূর্ণ। ট্রেডিং কৌশলগুলিকে বিকশিত থাকতে হবে।


// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("My Script", overlay=true)

//heiking ashi calculation
UseHAcandles    = input(false, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

//timecondition
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 //monday and session 
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//ema data  -- moving average
len = input(9, minval=1, title="Length")
src = input(hl2, title="Source")
out = ema(src, len)
//plot(out, title="EMA", color=color.blue)

//histogram
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


//main variables to apply conditions are going to be out(moving avg) and hist(macd)

long = haClose > out and haClose > haClose[1] and out > out[1] and hist> 0 and hist[1] < 0 and time_cond
short = haClose < out and haClose < haClose[1] and out < out[1] and hist < 0 and hist[1] > 0 and time_cond

//limit to 1 entry
var longOpeneda = false
var shortOpeneda = false
var int timeOfBuya = na



longCondition= long and not longOpeneda 

if longCondition
    longOpeneda := true
    timeOfBuya := time


longExitSignala = short
exitLongCondition = longOpeneda[1] and longExitSignala

if exitLongCondition
    longOpeneda := false
    timeOfBuya := na


plotshape(longCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="BUY", text="BUY", textcolor=color.white)
plotshape(exitLongCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="SELL", text="SELL", textcolor=color.white)

//automatization

longEntry= input(true)
shortEntry=input(false)

if(longEntry)
    strategy.entry("long",strategy.long,when=longCondition)
    strategy.close("long",when=exitLongCondition)

if(shortEntry)
    strategy.entry("short",strategy.short,when=exitLongCondition)
    strategy.close("short",when=longCondition)



আরো