এক্সপোনেনশিয়াল মুভিং এভারেজ ক্রসওভার বি-এক্সট্রেন্ডার কৌশল


সৃষ্টির তারিখ: 2024-02-20 14:45:17 অবশেষে সংশোধন করুন: 2024-02-20 14:45:17
অনুলিপি: 0 ক্লিকের সংখ্যা: 1666
1
ফোকাস
1617
অনুসারী

এক্সপোনেনশিয়াল মুভিং এভারেজ ক্রসওভার বি-এক্সট্রেন্ডার কৌশল

ওভারভিউ

এই কৌশলটি একটি সূচকীয় সমান্তরাল ক্রস নীতির উপর ভিত্তি করে একটি ট্রেডিং কৌশল। এটি একই সময়ে RSI সূচক এবং সমান্তরাল ফিল্টারকে একত্রিত করে, যা একটি সম্পূর্ণ প্রবণতা ট্র্যাকিং এবং বিপরীত ট্রেডিং সিস্টেম গঠন করে।

কৌশল নীতি

  1. ইন্ডেক্স মুভিং এভারেজের দ্রুত এবং ধীর ক্রস ব্যবহার করে ট্রেডিং সিগন্যাল তৈরি করা হয়। দ্রুত লাইন প্যারামিটারটি 5 এবং 20 তম লাইনের ইএমএ ক্রস এবং ধীর লাইন প্যারামিটারটি 20 এবং 15 তম লাইনের ইএমএ ক্রস।
  2. দ্রুত লাইনে ধীর লাইন অতিক্রম করার সময় অতিরিক্ত করুন, দ্রুত লাইনের নীচে ধীর লাইন অতিক্রম করার সময় খালি করুন। আরএসআই সূচকটি ব্যবহার করে দ্বিতীয় যাচাইকরণ করুন, কেবলমাত্র যখন আরএসআইও সমান্তরাল হয় তখন ট্রেডিং সিগন্যালের কার্যকারিতা যাচাই করুন।
  3. 200-দিনের চলমান গড়কে ফিল্টার হিসেবে ব্যবহার করে, শুধুমাত্র যখন দাম এই গড়কে অতিক্রম করে তখনই ট্রেডিং সিগন্যাল প্রেরণ করা হয়, যার ফলে অস্থিরতার সময় একাধিক ভুয়া ক্রস এড়ানো যায়।

কৌশলগত সুবিধা

  1. ডাবল ইএমএ ক্রস আরএসআই সূচকগুলির সাথে মিলিত হয়, যা সংকেতের নির্ভরযোগ্যতা ব্যাপকভাবে বাড়ায় এবং মিথ্যা সংকেতের হার হ্রাস করে।
  2. ট্রেডিং সিগন্যালের সংবেদনশীলতা বিবেচনা করে এবং সিগন্যালের স্থিতিশীলতা নিশ্চিত করে EMA প্যারামিটারগুলিকে দ্রুত এবং ধীরে ধীরে একত্রিত করা হয়েছে।
  3. সমান্তরাল ফিল্টার যুক্ত করা হয়েছে, যা কার্যকরভাবে কম্পন পরিস্থিতিতে শব্দ ফিল্টার করে এবং অপ্রয়োজনীয় লেনদেন এড়ায়।

কৌশলগত ঝুঁকি

  1. EMA হল একটি লেগেইড সূচক, যেখানে দামের তীব্র পরিবর্তনের সময় একটি সুস্পষ্ট লেগেইড থাকে। এর ফলে ক্ষতি বাড়তে পারে বা সংকেত মিস হওয়ার ঝুঁকি থাকে।
  2. RSI প্যারামিটার ভুলভাবে সেট করাও সিগন্যালের বিলম্ব ঘটায়।
  3. যদিও গড়-রেখা ফিল্টারিং বাজারের অস্থিরতা এড়াতে পারে, তবে এটি প্রবণতার শুরুতে প্রাথমিক প্রবেশের সুযোগগুলিও ফিল্টার করতে পারে।

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

  1. EMA প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করুন, বিভিন্ন সময়কালে সর্বোত্তম প্যারামিটার সমন্বয় নির্বাচন করুন।
  2. আরএসআই এর সাথে ম্যাকডের মতো অন্যান্য সূচকগুলিকে একত্রিত করার চেষ্টা করুন।
  3. অপ্টিমাইজ সমান্তরাল ফিল্টার প্যারামিটার, শব্দহীনতা এবং সুযোগের মধ্যে একটি ভারসাম্য খুঁজে।

সারসংক্ষেপ

এই কৌশলটি সামগ্রিকভাবে একটি সম্পূর্ণ সূচকীয় মুভিং এভারেজ ট্রেডিং সিস্টেম তৈরি করার জন্য। এটি ট্রেডিং সিগন্যালের উপর ভিত্তি করে, অতিরিক্ত আরএসআই সূচকটি বহু স্তরের যাচাইয়ের জন্য প্রবর্তন করে। এটি নিঃসন্দেহে সিগন্যালের গুণমানকে ব্যাপকভাবে উন্নত করতে পারে, এটি একটি শেখার এবং অপ্টিমাইজ করার যোগ্য কৌশল। অবশ্যই, সূচকটির পিছনের বৈশিষ্ট্যগুলির কারণে, সময়মতো স্টপ লস এবং অন্যান্য ঝুঁকি প্রতিরোধেও মনোযোগ দেওয়া উচিত।

কৌশল সোর্স কোড
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © QuantTherapy
//@version=4
strategy("B-Xtrender [Backtest Edition] @QuantTherapy")

i_short_l1  = input(5 , title="[Short] L1")
i_short_l2  = input(20, title="[Short] L2")
i_short_l3  = input(15, title="[Short] L3")

i_long_l1   = input(20, title="[Long] L1")
i_long_l2   = input(15, title="[Long] L2")

i_ma_use    = input(true , title="[MA Filter] Yes/No" )
i_ma_len    = input(200  , title="[MA Filter] length" )
i_ma_type   = input("EMA", title="[MA Filter] type", options = ["SMA", "EMA"])

shortTermXtrender = rsi( ema(close, i_short_l1) - ema(close, i_short_l2), i_short_l3 ) - 50
longTermXtrender  = rsi( ema(close, i_long_l1), i_long_l2 ) - 50

shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
plot(shortTermXtrender, color=shortXtrenderCol, style=plot.style_columns, linewidth=1, title="B-Xtrender Osc. - Histogram", transp = 40)

longXtrenderCol   = longTermXtrender> 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
macollongXtrenderCol =  longTermXtrender > longTermXtrender[1] ? color.lime : color.red
plot(longTermXtrender , color=longXtrenderCol, style=plot.style_columns, linewidth=2, title="B-Xtrender Trend - Histogram", transp = 90)

plot(longTermXtrender , color=#000000             , style=plot.style_line, linewidth=5, title="B-Xtrender Trend - Line", transp = 100)
plot(longTermXtrender , color=macollongXtrenderCol, style=plot.style_line, linewidth=3, title="B-Xtrender Trend - Line", transp = 100)

// --- Initialize MA Filter
ma = i_ma_type == "EMA" ? ema(close, i_ma_len) : sma(close, i_ma_len)
maFilterLong = true
maFilterShort = true
if i_ma_use
    maFilterLong  := close > ma ? true : false
    maFilterShort := close < ma ? true : false

long  = shortTermXtrender > 0 and longTermXtrender > 0 and maFilterLong
closeLong = shortTermXtrender < 0 or longTermXtrender < 0 
short = shortTermXtrender < 0 and longTermXtrender < 0 and maFilterShort
closeShort = shortTermXtrender > 0 or longTermXtrender > 0 

plotshape(long[1]==true  and long[2]==false  ? 0 : na , location=location.absolute, style=shape.labelup  , color=color.lime, size=size.small, transp=10)
plotshape(short[1]==true and short[2]==false ? 0 : na, location=location.absolute, style=shape.labeldown, color=color.red , size=size.small, transp=10)
plotshape(closeLong[1]==true and closeLong[2]==false
 or closeShort[1]==true and closeShort[2]==false ? 0 : na, location=location.absolute, style=shape.circle, color=color.orange , size=size.small)

i_perc     = input(defval = 20.0, title = "[TSL-%] Percent"  , minval = 0.1 )
i_src = close // constant for calculation
sl_val = i_src * i_perc / 100

strategy.entry("Long", strategy.long, when = long ) 
strategy.close("Long", when = closeLong)

strategy.entry("Short", strategy.short, when = short) 
strategy.close("Short", when = closeShort)

// Calculate SL
longStopPrice = 0.0, shortStopPrice = 0.0
longStopPrice := if (strategy.position_size > 0)
    stopValue = close - sl_val
    max(stopValue, longStopPrice[1])
else
    0

shortStopPrice := if (strategy.position_size < 0)
    stopValue = close + sl_val
    min(stopValue, shortStopPrice[1])
else
    syminfo.mintick*1000000

// For TSL Visualisation on Chart    
// plot(series=(strategy.position_size > 0) ? longStopPrice : na,
//      color=color.fuchsia, style = plot.style_circles,
//      linewidth=1, title="Long Trail Stop")
     
// plot(series=(strategy.position_size < 0) ? shortStopPrice : na,
//      color=color.fuchsia, style = plot.style_circles,
//      linewidth=1, title="Short Trail Stop")

if (strategy.position_size > 0)
    strategy.exit(id="TSL Long", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="TSL Short", stop=shortStopPrice)