গাউসিয়ান চ্যানেল মাল্টিপল ফিল্টারিং কৌশল: কীভাবে একটি শক্তিশালী পরিমাণগত ট্রেডিং সিস্টেম তৈরি করবেন

GAUSSIAN Kijun-Sen VAPI ATR TRAILING
সৃষ্টির তারিখ: 2025-09-02 18:22:32 অবশেষে সংশোধন করুন: 2025-09-09 09:39:46
অনুলিপি: 0 ক্লিকের সংখ্যা: 333
2
ফোকাস
319
অনুসারী

গাউসিয়ান চ্যানেল মাল্টিপল ফিল্টারিং কৌশল: কীভাবে একটি শক্তিশালী পরিমাণগত ট্রেডিং সিস্টেম তৈরি করবেন গাউসিয়ান চ্যানেল মাল্টিপল ফিল্টারিং কৌশল: কীভাবে একটি শক্তিশালী পরিমাণগত ট্রেডিং সিস্টেম তৈরি করবেন

কেন ঐতিহ্যবাহী প্রযুক্তিগত সূচকগুলি জটিল বাজারে ব্যর্থ হচ্ছে?

কোয়ান্টাম ট্রেডিংয়ের ক্ষেত্রে, আমরা প্রায়শই একটি মূল সমস্যার মুখোমুখি হইঃ একটি একক প্রযুক্তিগত সূচক বাজারের গোলমালের মধ্যে ভুয়া সংকেত তৈরি করতে পারে, যার ফলে ঘন ঘন স্টপ লস এবং তহবিল প্রত্যাহার হয়। সুতরাং, কীভাবে এমন একটি ট্রেডিং সিস্টেম তৈরি করা যায় যা প্রবণতা ধরে এবং গোলমালকে কার্যকরভাবে ফিল্টার করে?

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

মূল প্রযুক্তিগত কাঠামোঃ চারটি ফিল্টারিং সিস্টেম কিভাবে একসাথে কাজ করে?

1. গাউসিয়ান চ্যানেল - ট্রেন্ড সনাক্তকরণের কেন্দ্রবিন্দু

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

কী প্যারামিটার সেটিংঃ

  • গাউস পয়েন্ট সংখ্যাঃ 4 (সমতুল্য স্থবিরতা এবং মসৃণতা)
  • স্যাম্পলিং চক্রঃ ১৪৪ (মধ্যমেয়াদী প্রবণতা ধরা)
  • ফিলিপিনো গুণিতকঃ 1.414 ((স্ট্যান্ডার্ড ডিফারেনশিয়াল গুণিতক, কন্ট্রোল চ্যানেল প্রস্থ)

২. কিজুন-সেন লাইন (১৩০ চক্র) - মধ্য ও দীর্ঘমেয়াদী প্রবণতা নিশ্চিত

কিজুন-সেন লাইনটি প্রবণতা ফিল্টার হিসাবে ব্যবহৃত হয়, যা ঐতিহ্যগত ২৬ টি চক্রের পরিবর্তে ১৩০ টি চক্রের। এই সমন্বয়টি কী বোঝায়?

দীর্ঘতর চক্রের সেটিংঃ

  • মিথ্যা ভাঙ্গন সংকেত কমানো
  • মূল প্রবণতা অনুযায়ী ট্রেডিং নিশ্চিত করা
  • সিগন্যালের গুণগত মান উন্নত করা এবং লেনদেনের ঘনত্ব হ্রাস করা

৩. ভিএপিআই সূচক - লেনদেনের পরিমাণ এবং মূল্য বিশ্লেষণ

ভলিউম অ্যাডজাস্টেড প্রাইস ইন্ডিকেটর (VAPI) লেনদেনের পরিমাণ এবং দামের পরিবর্তনের সম্পর্ক বিশ্লেষণ করে বাজারের অংশগ্রহণকারীদের আসল উদ্দেশ্য নির্ধারণ করে। VAPI > 0 হলে সমর্থন বেশি, < 0 হলে সমর্থন খালি।

৪. ATR গতিশীল ক্ষতি - ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা

১১-চক্রের ATR-এর ৪.৫ গুণ ব্যবহার করা হয়েছে, যা বাজারের অস্থিরতা বিবেচনা করে এবং বাজারের শব্দ দ্বারা প্ররোচিত খুব ঘনিষ্ঠ স্টপ এড়াতে সাহায্য করে।

ফান্ড ম্যানেজমেন্ট ইনোভেশনঃ ৭৫/২৫ শেয়ারের কৌশল

এই কৌশলটির সবচেয়ে গুরুত্বপূর্ণ অংশ হল এর অনন্য অর্থ ব্যবস্থাপনা পদ্ধতিঃ

ডিসপোজেবল লজিকঃ

  • ৭৫% পজিশনঃ ৩.৫ গুণ বেশি রিস্ক রিটার্ন
  • 25% অবস্থানঃ গতিশীল ট্র্যাকিং স্টপ লস

কেন এইভাবে ডিজাইন করা হয়েছে?

  1. মৌলিক আয় নিশ্চিত করা৭৫% পজিশনের ফিক্সড স্টপ গ্যারান্টি দেয় যে বেশিরভাগ অর্থের জন্য স্থিতিশীল রিটার্ন রয়েছে
  2. অতিরিক্ত মুনাফা ধরাট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং ট্রেডিং
  3. ঝুঁকি বিচ্ছিন্নতাবিবিসির প্রতিবেদনে বলা হয়েছে, “বিভিন্ন প্রস্থান ব্যবস্থা একক কৌশল ব্যর্থ হওয়ার ঝুঁকি কমিয়ে দেয়।

ঝুঁকি নিয়ন্ত্রণ ব্যবস্থাঃ বহুস্তরীয় সুরক্ষা ব্যবস্থা

১. প্রবেশের ঝুঁকি নিয়ন্ত্রণ

  • প্রতিটি লেনদেনের ঝুঁকি অ্যাকাউন্টের তহবিলের 3% এর মধ্যে সীমাবদ্ধ
  • এটিআর ভিত্তিক গতিশীল অবস্থান গণনা

২. পজিশনের ঝুঁকি ব্যবস্থাপনা

  • প্রধান ক্ষতিঃ এটিআর এর ৪.৫ গুণ
  • ট্র্যাকিং স্টপ লসঃ গতিশীল সমন্বয়, লকড ফ্ল্যাশ
  • অতিরিক্ত স্টপঃ 10% ফিক্সড ইনকাম সুরক্ষা

৩. সিগন্যাল ফিল্টারিং চারটি প্রযুক্তিগত সূচক একই সাথে নিশ্চিত করেছে যে ভুয়া সংকেতের সম্ভাবনা অনেকটাই কমেছে।

কৌশলগত শক্তি এবং সীমাবদ্ধতা বিশ্লেষণ

মূল সুবিধাঃ

  1. সংকেতের গুণমানমাল্টি-ফিল্টারিং সিস্টেম ট্রেডিং সিগন্যালের নির্ভরযোগ্যতা উল্লেখযোগ্যভাবে উন্নত করেছে
  2. ঝুঁকি নিয়ন্ত্রণে: সুসংহত স্টপ লস এবং পজিশন ম্যানেজমেন্ট সিস্টেম
  3. অভিযোজনযোগ্যএটিআর-এর গতিশীলতা বিভিন্ন বাজারের অস্থিরতার সাথে সামঞ্জস্যপূর্ণ
  4. আয় অনুকূলিতকরণবিভাজন কৌশল স্থিতিশীল উপার্জন এবং অতিরিক্ত উপার্জনের মধ্যে ভারসাম্য বজায় রেখেছে

সম্ভাব্য সীমাবদ্ধতাঃ

  1. প্রবণতা নির্ভরতামার্কেটের ঝড়ের মধ্যে খারাপ হতে পারেঃ
  2. প্যারামিটার সংবেদনশীলবিভিন্ন জাতের জন্য বিভিন্ন প্যারামিটার অপ্টিমাইজ করা প্রয়োজনঃ
  3. পিছিয়ে পড়ামাল্টি-ফিল্টারিং দেরিতে প্রবেশের কারণ হতে পারে

যুদ্ধক্ষেত্রে ব্যবহারের পরামর্শ

১. জাত নির্বাচন প্রধান মুদ্রা জোড়া, শেয়ার ইন্ডেক্স ফিউচার ইত্যাদির মতো প্রবণতাযুক্ত জাতগুলিকে অগ্রাধিকার দিন

২. প্যারামিটার অপ্টিমাইজেশন এটি সুপারিশ করা হয় যে নির্দিষ্ট ট্রেডিং জাতের ঐতিহাসিক তথ্যের উপর ভিত্তি করে পুনরাবৃত্তির অপ্টিমাইজেশন করা হবে, বিশেষত নিম্নলিখিত বিষয়গুলিতে মনোযোগ দেওয়া হবেঃ

  • গস খালের নমুনা গ্রহণের সময়কাল
  • কিজুন-সেনের চক্রের দৈর্ঘ্য
  • ATR স্টপ লস গুণক

৩. বাজার পরিস্থিতির সাথে খাপ খাইয়ে নেওয়া স্পষ্টতই অস্থির বাজারে, আপনি স্থগিত কৌশল বা প্যারামিটার সেটিং সামঞ্জস্য বিবেচনা করতে পারেন।

সংক্ষিপ্ত বিবরণঃ পরিমাণগত লেনদেনের পদ্ধতিগত চিন্তাভাবনা

এই কৌশলটির মূল্য শুধু প্রযুক্তিগত দিক দিয়ে নয়, বরং এর মধ্যে যে পদ্ধতিগত চিন্তাভাবনা রয়েছে তা থেকেও বেশিঃ

  1. বহু-মাত্রিক প্রমাণীকরণ: ট্রেডিং সিগন্যালগুলিকে প্রবণতা, লেনদেনের পরিমাণ এবং অস্থিরতা সহ বিভিন্ন দিক থেকে যাচাই করুন
  2. ঝুঁকি অগ্রাধিকার“একটি ভাল ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা একটি কৌশলগত ভিত্তি”
  3. আয় অনুকূলিতকরণ: বিভিন্ন উপার্জন লক্ষ্যমাত্রা ভারসাম্য বজায় রাখার জন্য পোজিশনিং কৌশল

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

মনে রাখবেন, সেরা কৌশলটি সবচেয়ে জটিল নয়, বরং আপনার ট্রেডিং স্টাইল এবং বাজারের পরিবেশের জন্য সবচেয়ে উপযুক্ত।

কৌশল সোর্স কোড
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

// @version=6
strategy("Gaussian Channel Strategy – GC + Kijun (120) + VAPI Gate + ATR(4.5x) + 75/25 TP-TRAIL + Extra %TP",
     overlay=true)

// =============================
// ======= INPUTS ==============
// =============================
N_poles   = input.int(4,   "Gaussian Poles", minval=1, maxval=9)
per       = input.int(144, "Sampling Period", minval=2)
mult      = input.float(1.414, "Filtered TR Multiplier", step=0.001)
src       = input.source(hlc3, "Source")
modeLag   = input.bool(false, "Reduced Lag Mode")
modeFast  = input.bool(false, "Fast Response Mode")

kijunLen  = input.int(130, "Kijun-Sen Period")

vapiLen   = input.int(10, "VAPI Length")
vapiThresh= input.float(0.0, "VAPI Threshold (0 = zero line)")

atrLen    = input.int(11, "ATR Length (RMA)")
slATRmul  = input.float(4.5, "SL = ATR ×", step=0.1)
rr_fixed  = input.float(3.5, "Fixed TP RR (Leg A)", step=0.1)
allocA    = input.float(75,  "Allocation %: Fixed TP Leg", minval=1, maxval=99)
riskPct   = input.float(3.0, "Risk % of Equity per Trade", step=0.1, minval=0.1, maxval=10)

tpEnable    = input.bool(true,  "Enable Extra % Take Profit")
tpPctLong   = input.float(10.0, "Extra Long TP % of Entry",  step=0.1, minval=0)
tpPctShort  = input.float(10.0, "Extra Short TP % of Entry", step=0.1, minval=0)

// =============================
// ===== CORE COMPONENTS =======
// =============================
atr = ta.rma(ta.tr(true), atrLen)

donchian_avg(len) => (ta.highest(high, len) + ta.lowest(low, len)) / 2.0
kijun = donchian_avg(kijunLen)

// --- VAPI_LB (LazyBear) ---
rs(x, len) => ta.cum(x) - nz(ta.cum(x)[len])
v_x   = (2*close - high - low) / math.max(high - low, syminfo.mintick)
v_tva = rs(volume * v_x, vapiLen)
v_tv  = rs(volume, vapiLen)
v_va  = 100 * (v_tva / v_tv)

// =============================
// ===== Gaussian Channel ======
// =============================
f_filt9x(_a, _s, _i) =>
    int _m2 = 0, int _m3 = 0, int _m4 = 0, int _m5 = 0, int _m6 = 0,
    int _m7 = 0, int _m8 = 0, int _m9 = 0, float _f = 0.0, _x = (1 - _a)
    _m2 := _i == 9 ? 36  : _i == 8 ? 28 : _i == 7 ? 21 : _i == 6 ? 15 : _i == 5 ? 10 : _i == 4 ? 6 : _i == 3 ? 3 : _i == 2 ? 1 : 0
    _m3 := _i == 9 ? 84  : _i == 8 ? 56 : _i == 7 ? 35 : _i == 6 ? 20 : _i == 5 ? 10 : _i == 4 ? 4 : _i == 3 ? 1 : 0
    _m4 := _i == 9 ? 126 : _i == 8 ? 70 : _i == 7 ? 35 : _i == 6 ? 15 : _i == 5 ? 5  : _i == 4 ? 1 : 0
    _m5 := _i == 9 ? 126 : _i == 8 ? 56 : _i == 7 ? 21 : _i == 6 ? 6  : _i == 5 ? 1  : 0 
    _m6 := _i == 9 ? 84  : _i == 8 ? 28 : _i == 7 ? 7  : _i == 6 ? 1  : 0 
    _m7 := _i == 9 ? 36  : _i == 8 ? 8  : _i == 7 ? 1  : 0 
    _m8 := _i == 9 ? 9   : _i == 8 ? 1  : 0 
    _m9 := _i == 9 ? 1   : 0
    _f := math.pow(_a, _i) * nz(_s) +
         _i  *     _x      * nz(_f[1])      - (_i >= 2 ?
         _m2 * math.pow(_x, 2)  * nz(_f[2]) : 0) + (_i >= 3 ?
         _m3 * math.pow(_x, 3)  * nz(_f[3]) : 0) - (_i >= 4 ?
         _m4 * math.pow(_x, 4)  * nz(_f[4]) : 0) + (_i >= 5 ?
         _m5 * math.pow(_x, 5)  * nz(_f[5]) : 0) - (_i >= 6 ?
         _m6 * math.pow(_x, 6)  * nz(_f[6]) : 0) + (_i >= 7 ?
         _m7 * math.pow(_x, 7)  * nz(_f[7]) : 0) - (_i >= 8 ?
         _m8 * math.pow(_x, 8)  * nz(_f[8]) : 0) + (_i == 9 ?
         _m9 * math.pow(_x, 9)  * nz(_f[9]) : 0)

f_pole(_a, _s, _i) =>
    _f1 =            f_filt9x(_a, _s, 1),      _f2 = (_i >= 2 ? f_filt9x(_a, _s, 2) : 0), _f3 = (_i >= 3 ? f_filt9x(_a, _s, 3) : 0)
    _f4 = (_i >= 4 ? f_filt9x(_a, _s, 4) : 0), _f5 = (_i >= 5 ? f_filt9x(_a, _s, 5) : 0), _f6 = (_i >= 6 ? f_filt9x(_a, _s, 6) : 0)
    _f7 = (_i >= 7 ? f_filt9x(_a, _s, 7) : 0), _f8 = (_i >= 8 ? f_filt9x(_a, _s, 8) : 0), _f9 = (_i == 9 ? f_filt9x(_a, _s, 9) : 0)
    _fn = _i == 1 ? _f1 : _i == 2 ? _f2 : _i == 3 ? _f3 : _i == 4 ? _f4 : _i == 5 ? _f5 : _i == 6 ? _f6 : _i == 7 ? _f7 : _i == 8 ? _f8 : _i == 9 ? _f9 : na
    [_fn, _f1]

beta  = (1 - math.cos(4*math.asin(1)/per)) / (math.pow(1.414, 2/N_poles) - 1)
alpha = - beta + math.sqrt(math.pow(beta, 2) + 2*beta)

lag = (per - 1) / (2.0 * N_poles)

srcdata = modeLag ? src + (src - nz(src[lag])) : src
tr_raw  = ta.tr(true)
trdata  = modeLag ? tr_raw + (tr_raw - nz(tr_raw[lag])) : tr_raw

[filt_n, filt_1]       = f_pole(alpha, srcdata, N_poles)
[filt_n_tr, filt_1_tr] = f_pole(alpha, trdata,  N_poles)

filt   = modeFast ? (filt_n + filt_1)/2.0 : filt_n
filttr = modeFast ? (filt_n_tr + filt_1_tr)/2.0 : filt_n_tr

hband = filt + filttr * mult
lband = filt - filttr * mult

// =============================
// ===== Signals & Filters =====
// =============================
doLong  = close > filt and close > kijun and v_va > vapiThresh
doShort = close < filt and close < kijun and v_va < -vapiThresh

// =============================
// ===== Position Sizing =======
// =============================
riskValue   = strategy.equity * (riskPct/100.0)
slDist      = atr * slATRmul
qtyTotal    = slDist > 0 ? riskValue / slDist : 0.0
qtyA        = qtyTotal * (allocA/100.0)
qtyB        = qtyTotal * ((100 - allocA)/100.0)

// =============================
// ===== Order Execution =======
// =============================
var float trailStopL = na
var float trailStopS = na

inLong  = strategy.position_size > 0
inShort = strategy.position_size < 0
entryPx = strategy.position_avg_price

// Entries
if doLong and not inLong and strategy.position_size <= 0
    strategy.order("L-A", strategy.long, qty=qtyA)
    strategy.order("L-B", strategy.long, qty=qtyB)
    trailStopL := na
if doShort and not inShort and strategy.position_size >= 0
    strategy.order("S-A", strategy.short, qty=qtyA)
    strategy.order("S-B", strategy.short, qty=qtyB)
    trailStopS := na

// LONG management
if inLong
    slL = entryPx - slDist
    tpA = entryPx + rr_fixed * slDist

    // Leg A: 固定RR止盈 + 止损
    strategy.exit("TP/SL-LA", from_entry="L-A", limit=tpA, stop=slL)

    // Leg B: 追踪止损
    trailStopL := na(trailStopL[1]) or strategy.position_size[1] <= 0 ? slL : math.max(trailStopL[1], close - slDist)
    strategy.exit("Trail-LB", from_entry="L-B", stop=trailStopL)

    // 额外百分比止盈
    if tpEnable and high >= entryPx * (1 + tpPctLong/100.0)
        strategy.close("L-A", comment="ExtraTP")
        strategy.close("L-B", comment="ExtraTP")

// SHORT management
if inShort
    slS = entryPx + slDist
    tpA = entryPx - rr_fixed * slDist

    // Leg A: 固定RR止盈 + 止损
    strategy.exit("TP/SL-SA", from_entry="S-A", limit=tpA, stop=slS)

    // Leg B: 追踪止损
    trailStopS := na(trailStopS[1]) or strategy.position_size[1] >= 0 ? slS : math.min(trailStopS[1], close + slDist)
    strategy.exit("Trail-SB", from_entry="S-B", stop=trailStopS)

    // 额外百分比止盈
    if tpEnable and low <= entryPx * (1 - tpPctShort/100.0)
        strategy.close("S-A", comment="ExtraTP")
        strategy.close("S-B", comment="ExtraTP")

// =============================
// ===== 图表绘制 ==============
// =============================
fcolor = filt > nz(filt[1]) ? color.new(color.lime, 0) : filt < nz(filt[1]) ? color.new(color.red, 0) : color.new(color.gray, 0)
plotFilter = plot(filt,  title="GC Filter",    color=fcolor, linewidth=2)
plotH      = plot(hband, title="GC High Band", color=fcolor)
plotL      = plot(lband, title="GC Low Band",  color=fcolor)
fill(plotH, plotL, color=color.new(fcolor, 80))

plot(kijun, "Kijun-Sen", color=color.new(color.maroon, 0))

// 信号标记
plotshape(doLong,  title="Long Setup",  style=shape.triangleup,   location=location.belowbar, color=color.new(color.lime, 0), size=size.tiny, text="ENTRY L")
plotshape(doShort, title="Short Setup", style=shape.triangledown, location=location.abovebar, color=color.new(color.fuchsia, 0), size=size.tiny, text="ENTRY S")