বহু-সময়ের SMA সূচকের উপর ভিত্তি করে ট্রেন্ড অনুসরণ কৌশল


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

বহু-সময়ের SMA সূচকের উপর ভিত্তি করে ট্রেন্ড অনুসরণ কৌশল

ওভারভিউ

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

কৌশল নীতি

  1. পাঁচটি ভিন্ন পিরিয়ডের এসএমএ গড় ব্যবহার করে, যথাক্রমে 10 পিরিয়ড, 20 পিরিয়ড, 50 পিরিয়ড, 100 পিরিয়ড এবং 200 পিরিয়ড।
  2. ট্রেন্ডের দিকনির্দেশের জন্য এই পাঁচটি গড়ের উত্থান ও পতনের দিকের তুলনা করুন। উদাহরণস্বরূপ, যখন 10 চক্র, 20 চক্র, 100 চক্র এবং 200 চক্রের এসএমএ গড় একই সাথে উত্থিত হয়, তখন এটি একটি উত্থানের প্রবণতা হিসাবে বিচার করা হয়; যখন গড় একই সাথে হ্রাস পায়, তখন এটি একটি পতনের প্রবণতা হিসাবে বিচার করা হয়।
  3. বিভিন্ন পিরিয়ডের এসএমএর মানের তুলনা করে ট্রেডিং সিগন্যাল তৈরি করা হয়। উদাহরণস্বরূপ, যখন 10 পিরিয়ডের এসএমএ-তে 20 পিরিয়ডের এসএমএ অতিক্রম করে, তখন প্রবেশের সংকেত তৈরি হয়। যখন 10 পিরিয়ডের এসএমএ-তে 20 পিরিয়ডের এসএমএ অতিক্রম করে, তখন প্রবেশের সংকেত তৈরি হয়।
  4. ZeroLagEMA ব্যবহার করুন প্রবেশের নিশ্চিতকরণ এবং প্রস্থান সংকেত হিসাবে। যখন দ্রুত চক্র ZeroLagEMA উপর ধীর গতির চক্র অতিক্রম করে তখন আরও বেশি করুন; যখন নিচে পরা হয় তখন আরও বেশি পজিশন। খালি সিগন্যালের বিচার পদ্ধতি বিপরীত।

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

  1. বিভিন্ন পিরিয়ডের এসএমএ গড়ের সমন্বয় ব্যবহার করে, মার্কেটের প্রবণতার দিকনির্দেশনা কার্যকরভাবে নির্ধারণ করা যায়।
  2. পর্যায়ক্রমিক এসএমএ মানের তুলনা ট্রেডিং সংকেত তৈরি করতে পারে, যা পরিমাণগত প্রবেশ এবং প্রস্থান নিয়ম গঠন করে।
  3. জিরো লেগেমা ফিল্টার অপ্রয়োজনীয় লেনদেন এড়াতে এবং কৌশলগত স্থিতিশীলতা বাড়াতে সহায়তা করে।
  4. ট্রেন্ড ট্র্যাকিং ট্রেডিং ট্রেডিং ট্র্যাকিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রে

কৌশলগত ঝুঁকি ও সমাধান

  1. যখন বাজারগুলি শক-সমাধানের পর্যায়ে প্রবেশ করে, এসএমএ-র গড়-রেখা সংকেতগুলি ঘন ঘন ক্রস হতে পারে, যার ফলে আরও বেশি অকার্যকর লেনদেন এবং ক্ষতির ঝুঁকি রয়েছে।
    • সমাধানঃ জিরো লেগেমা-র ফিলারিং প্যারামিটার বাড়ানো, যাতে অকার্যকর সংকেত প্রবেশ না করে।
  2. এসএমএ-র সময়কালের কারণে, সংকেতটি কিছুটা পিছিয়ে গেছে এবং স্বল্পমেয়াদী তীব্র দামের পরিবর্তনের সময়মত প্রতিক্রিয়া জানাতে পারে না।
    • সমাধানঃ আরও সংবেদনশীল পরিমাপক যেমন MACD এর সাহায্যে বিচার করা।

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

  1. এসএমএ চক্রের প্যারামিটারগুলিকে অনুকূলিত করুন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন।
  2. স্টপ লস কৌশল যেমন স্টপ লস ট্র্যাকিং এবং একক ক্ষতির উপর আরও নিয়ন্ত্রণ।
  3. পজিশন ম্যানেজমেন্টের ব্যবস্থা করা, যাতে প্রবণতা শক্তিশালী হলে পজিশন বাড়ানো যায় এবং অস্থিরতার সময় পজিশন কমানো যায়।
  4. এই কৌশলটি আরও সহায়ক সূচক যেমন MACD, KDJ, ইত্যাদির সাথে যুক্ত করা হয়েছে, যা কৌশলটির সামগ্রিক স্থিতিশীলতা বাড়ায়।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Forex MA Racer - SMA Performance /w ZeroLag EMA Trigger", shorttitle = "FX MA Racer (5x SMA, 2x zlEMA)", overlay=false )

// === INPUTS ===
hr0             = input(defval = true, title = "=== SERIES INPUTS ===")
smaSource       = input(defval = close, title = "SMA Source")
sma1Length      = input(defval = 10, title = "SMA 1 Length")
sma2Length      = input(defval = 20, title = "SMA 2 Length")
sma3Length      = input(defval = 50, title = "SMA 3 Length")
sma4Length      = input(defval = 100, title = "SMA 4 Length")
sma5Length      = input(defval = 200, title = "SMA 5 Length")
smaDirSpan      = input(defval = 4, title = "SMA Direction Span")
zlmaSource      = input(defval = close, title = "ZeroLag EMA Source")
zlmaFastLength  = input(defval = 9, title = "ZeroLag EMA Fast Length")
zlmaSlowLength  = input(defval = 21, title = "ZeroLag EMA Slow Length")
hr1             = input(defval = true, title = "=== PLOT TIME LIMITER ===")
useTimeLimit    = input(defval = true, title = "Use Start Time Limiter?")
// set up where we want to run from
startYear       = input(defval = 2018, title = "Start From Year", minval = 0, step = 1)
startMonth      = input(defval = 02, title = "Start From Month", minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day", minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour", minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute", minval = 0,step = 1)
hr2             = input(defval = true, title = "=== TRAILING STOP ===")
useStop     = input(defval = false, title = "Use Trailing Stop?")
slPoints    = input(defval = 200, title = "Stop Loss Trail Points", minval = 1)
slOffset    = input(defval = 400, title = "Stop Loss Trail Offset", minval = 1)
// === /INPUTS ===

// === SERIES SETUP ===
// Fast ZeroLag EMA
zema1=ema(zlmaSource, zlmaFastLength)
zema2=ema(zema1, zlmaFastLength)
d1=zema1-zema2
zlemaFast=zema1+d1

// Slow ZeroLag EMA
zema3=ema(zlmaSource, zlmaSlowLength)
zema4=ema(zema3, zlmaSlowLength)
d2=zema3-zema4
zlemaSlow=zema3+d2

// Simple Moving Averages
period10 = sma(close, sma1Length)
period20 = sma(close, sma2Length)
period50 = sma(close, sma3Length)
period100 = sma(close, sma4Length)
period200 = sma(close, sma5Length)
// === /SERIES SETUP ===

// === PLOT ===
// colors of plotted MAs
p1 = (close < period10) ? #FF0000 : #00FF00
p2 = (close < period20) ? #FF0000 : #00FF00
p3 = (close < period50) ? #FF0000 : #00FF00
p4 = (close < period100) ? #FF0000 : #00FF00
p5 = (close < period200) ? #FF0000 : #00FF00

plot(period10, title='10 Period', color = p1, linewidth=1)
plot(period20, title='20 Period', color = p2, linewidth=2)
plot(period50, title='50 Period', color = p3, linewidth=4)
plot(period100, title='100 Period', color = p4, linewidth=6)
plot(period200, title='200 Period', color = p5, linewidth=10)
// === /PLOT ===

//BFR = BRFIB ? (maFast+maSlow)/2 : abs(maFast - maSlow)

// === STRATEGY ===
// calculate SMA directions
direction10 = rising(period10, smaDirSpan) ? +1 : falling(period10, smaDirSpan) ? -1 : 0
direction20 = rising(period20, smaDirSpan) ? +1 : falling(period20, smaDirSpan) ? -1 : 0
direction50 = rising(period50, smaDirSpan) ? +1 : falling(period50, smaDirSpan) ? -1 : 0
direction100 = rising(period100, smaDirSpan) ? +1 : falling(period100, smaDirSpan) ? -1 : 0
direction200 = rising(period200, smaDirSpan) ? +1 : falling(period200, smaDirSpan) ? -1 : 0

// conditions
// SMA Direction Trigger
dirUp = direction10 > 0 and direction20 > 0 and direction100 > 0 and direction200 > 0
dirDn = direction10 < 0 and direction20 < 0 and direction100 < 0 and direction200 < 0

longCond = (period10>period20) and (period20>period50) and (period50>period100) and  dirUp//and (close > period10) and (period50>period100) //and (period100>period200)
shortCond = (period10<period20) and (period20<period50) and dirDn//and (period50<period100) and (period100>period200)

longExit = crossunder(zlemaFast, zlemaSlow) or crossunder(period10, period20)
shortExit = crossover(zlemaFast, zlemaSlow) or crossover(period10, period20)


// entries and exits
startTimeOk() =>
    // get our input time together
    inputTime   = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute)
    // check the current time is greater than the input time and assign true or false
    timeOk      = time > inputTime ? true : false
    // last line is the return value, we want the strategy to execute if..
    // ..we are using the limiter, and the time is ok -OR- we are not using the limiter
    r = (useTimeLimit and timeOk) or not useTimeLimit


if( true )
    // entries
    strategy.entry("long", strategy.long, when = longCond)
    strategy.entry("short", strategy.short, when = shortCond)

        
    // trailing stop
    if (useStop)
        strategy.exit("XL", from_entry = "long", trail_points = slPoints, trail_offset = slOffset)
        strategy.exit("XS", from_entry = "short", trail_points = slPoints, trail_offset = slOffset)

    // exits
    strategy.close("long", when = longExit)
    strategy.close("short", when = shortExit)
// === /STRATEGY ===