অভিযোজিত প্রবণতা তারল্য মাল্টি-ফিল্টার ট্রেডিং কৌশল

EMA SMA MACD ATR HLC3
সৃষ্টির তারিখ: 2025-01-06 11:58:25 অবশেষে সংশোধন করুন: 2025-01-06 11:58:25
অনুলিপি: 0 ক্লিকের সংখ্যা: 617
1
ফোকাস
1617
অনুসারী

অভিযোজিত প্রবণতা তারল্য মাল্টি-ফিল্টার ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নীতি

কৌশলটির মূল যুক্তি একটি তিন-স্তর ফিল্টারিং প্রক্রিয়ার উপর ভিত্তি করে:

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

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

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

  1. দৃঢ় অভিযোজনযোগ্যতা: গতিশীলভাবে পরামিতি সামঞ্জস্য করে, কৌশলটি বিভিন্ন বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে।
  2. উন্নত ঝুঁকি নিয়ন্ত্রণ: একাধিক ফিল্টারিং প্রক্রিয়া মিথ্যা সংকেতের সম্ভাবনাকে উল্লেখযোগ্যভাবে হ্রাস করে।
  3. উচ্চ কাস্টমাইজেবিলিটি: ব্যবহারকারীরা তাদের ব্যক্তিগত ট্রেডিং স্টাইল অনুসারে বিভিন্ন পরামিতি সামঞ্জস্য করতে পারেন।
  4. অটোমেশনের উচ্চ মাত্রা: JSON ফর্ম্যাটে সতর্কতা বার্তা সমর্থন করে, স্বয়ংক্রিয় ট্রেডিং সিস্টেমের সাথে ইন্টারফেস করা সহজ করে তোলে।
  5. ভাল ভিজ্যুয়ালাইজেশন প্রভাব: প্রবণতা ব্যান্ড, সংকেত মার্কার, ইত্যাদি সহ সমৃদ্ধ ভিজ্যুয়াল প্রতিক্রিয়া প্রদান করে।

কৌশলগত ঝুঁকি

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

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

  1. অস্থিরতা অভিযোজন: ATR-এর উপর ভিত্তি করে একটি গতিশীল স্টপ লস মেকানিজম যোগ করুন।
  2. বাজারের পরিবেশ শনাক্তকরণ: একটি বাজারের অবস্থা শ্রেণীবিন্যাস ব্যবস্থা যোগ করুন এবং বিভিন্ন বাজার পরিবেশে বিভিন্ন প্যারামিটার সমন্বয় ব্যবহার করুন।
  3. সিগন্যালের গুণমান স্কোরিং: একটি সংকেত শক্তি স্কোরিং সিস্টেম স্থাপন করুন এবং সংকেত শক্তির উপর ভিত্তি করে গতিশীলভাবে অবস্থানগুলি সামঞ্জস্য করুন৷
  4. ফান্ড ম্যানেজমেন্ট অপ্টিমাইজেশান: আরও সুনির্দিষ্ট অবস্থান নিয়ন্ত্রণ অর্জনের জন্য আরও জটিল ফান্ড ম্যানেজমেন্ট অ্যালগরিদম প্রবর্তন করুন।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Adaptive Trend Flow Strategy with Filters for SPX", overlay=true, max_labels_count=500, 
     initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.01, slippage=2,
     margin_long=20, margin_short=20, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// User-defined inputs for trend logic
atr           = input.int(14, "Main Length", minval=2, group = "Find more strategies like this on pineindicators.com")
length        = input.int(2, "Main Length", minval=2)
smooth_len    = input.int(2, "Smoothing Length", minval=2)
sensitivity   = input.float(2.0, "Sensitivity", step=0.1)

// User-defined inputs for SMA filter
use_sma_filter = input.bool(true, "Enable SMA Filter?")
sma_length = input.int(4, "SMA Length", minval=1)

// User-defined inputs for MACD filter
use_macd_filter = input.bool(true, "Enable MACD Filter?")
macd_fast_length = input.int(2, "MACD Fast Length", minval=1)
macd_slow_length = input.int(7, "MACD Slow Length", minval=1)
macd_signal_length = input.int(2, "MACD Signal Length", minval=1)
// User-defined inputs for leverage
leverage_factor = input.float(4.5, "Leverage Factor", minval=1.0, step=0.1)
id           = input("besttrader123", title= "Your TradingView username", group = "Automate this strategy with plugpine.com")
key           = input("nc739ja84gf", title= "Unique identifier (UID)")
ticker        = input("SPX", title= "Ticker/symbol of your broker")
bullcolor     = #0097a7
bearcolor     = #ff195f
showbars      = input.bool(true, "Color Bars?")
showbg        = input.bool(true, "Background Color?")
showsignals   = input.bool(true, "Show Signals?")


// Trend calculation functions
calculate_trend_levels() =>
    typical = hlc3
    fast_ema = ta.ema(typical, length)
    slow_ema = ta.ema(typical, length * 2)
    basis = (fast_ema + slow_ema) / 2
    vol = ta.stdev(typical, length)
    smooth_vol = ta.ema(vol, smooth_len)
    upper = basis + (smooth_vol * sensitivity)
    lower = basis - (smooth_vol * sensitivity)
    [basis, upper, lower]

get_trend_state(upper, lower, basis) =>
    var float prev_level = na
    var int trend = 0
    if na(prev_level)
        trend := close > basis ? 1 : -1
        prev_level := trend == 1 ? lower : upper
    if trend == 1
        if close < lower
            trend := -1
            prev_level := upper
        else
            prev_level := lower
    else
        if close > upper
            trend := 1
            prev_level := lower
        else
            prev_level := upper
    [trend, prev_level]

[basis, upper, lower] = calculate_trend_levels()
[trend, level] = get_trend_state(upper, lower, basis)

// SMA filter
sma_value = ta.sma(close, sma_length)
sma_condition = use_sma_filter ? close > sma_value : true

// MACD filter
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
macd_condition = use_macd_filter ? macd_line > signal_line : true

// Signal detection with filters
long_signal = trend == 1 and trend[1] == -1 and sma_condition and macd_condition
short_signal = trend == -1 and trend[1] == 1

// Plotting visuals
p2 = plot(basis, color=trend == 1 ? bullcolor : bearcolor, linewidth=2)
p1 = plot(level, color=close > level ? bullcolor : bearcolor, linewidth=2, style=plot.style_linebr)
// if showsignals and ta.crossover(close, level)
//     label.new(bar_index, level, "▲", color=bullcolor, textcolor=chart.bg_color, style=label.style_label_upper_right)
// if showsignals and ta.crossunder(close, level)
//     label.new(bar_index, level, "▼", color=bearcolor, textcolor=chart.fg_color, style=label.style_label_lower_right)

qty = strategy.equity / close * leverage_factor

// Automated alerts
if long_signal
    alert('{"AccountID": "' + id + '","Key": "' + key + '", "symbol": "' + ticker + '", "action": "long", "volume": ' + str.tostring(qty) + '}', alert.freq_once_per_bar)
if short_signal
    alert('{"AccountID": "' + id + '","Key": "' + key + '", "symbol": "' + ticker + '", "action": "closelong"}', alert.freq_once_per_bar)

// Strategy entries and exits
if long_signal
    strategy.entry("Long", strategy.long, qty=qty)
if short_signal
    strategy.close("Long")

// Optional SMA and MACD plot
plot(use_sma_filter ? sma_value : na, color=color.new(color.blue, 80), title="SMA")
plot(use_macd_filter ? macd_line : na, color=color.new(color.orange, 80), title="MACD Line")
plot(use_macd_filter ? signal_line : na, color=color.new(color.red, 80), title="Signal Line")