پریمیم ڈبل ٹرینڈ فلٹر ایم اے تناسب کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-28 17:37:14
ٹیگز:

img

جائزہ

یہ حکمت عملی دوہری حرکت پذیر اوسط تناسب اشارے پر مبنی ہے جس میں بولنگر بینڈ فلٹر اور ڈبل ٹرینڈ فلٹر اشارے کے ساتھ مل کر ہے۔ یہ رجحان کی پیروی کے لئے زنجیروں سے باہر نکلنے کے طریقہ کار کو اپناتا ہے۔ اس حکمت عملی کا مقصد حرکت پذیر اوسط تناسب اشارے کے ذریعہ درمیانی سے طویل مدتی رجحان کی سمت کی نشاندہی کرنا ہے۔ جب رجحان کی سمت واضح ہوتی ہے تو یہ بہتر اندراج پوائنٹس پر مارکیٹ میں داخل ہوتا ہے۔ یہ منافع میں مقفل کرنے اور نقصانات کو کم کرنے کے ل take منافع ، اسٹاپ نقصان سے باہر نکلنے کے طریقہ کار بھی مرتب کرتا ہے۔

حکمت عملی منطق

  1. تیز رفتار اوسط (10 دن) اور سست حرکت پذیر اوسط (50 دن) کا حساب لگائیں ، ان کا تناسب حاصل کریں جسے قیمتوں میں چلنے والی اوسط تناسب کہا جاتا ہے۔ یہ تناسب درمیانی سے طویل مدتی رجحان کی تبدیلیوں کی مؤثر طریقے سے نشاندہی کرسکتا ہے۔
  2. قیمت کے اوسط اوسط تناسب کو فیصد میں تبدیل کریں ، جو پچھلے ادوار میں موجودہ تناسب کی نسبتا strength طاقت کی نمائندگی کرتا ہے۔ اس فیصد کو آسکیلیٹر کے طور پر بیان کیا گیا ہے۔
  3. جب آسکیلیٹر خریدنے کے اندراج کی حد (10) سے اوپر عبور کرتا ہے تو ، طویل سگنل ٹرگر ہوتا ہے۔ جب فروخت کی حد (90) سے نیچے عبور کرتا ہے تو ، مختصر سگنل رجحان کی پیروی کے لئے ٹرگر ہوتا ہے۔
  4. سگنل فلٹرنگ کے لئے بولنگر بینڈس چوڑائی انڈیکس کے ساتھ مل کر۔ جب بی بی چوڑائی کم ہو جاتی ہے تو تجارت کریں۔
  5. ڈبل ٹرینڈ فلٹر اشارے کا استعمال کریں، صرف طویل وقت تک جب قیمت اپ ٹرینڈ چینل میں ہے اور کم ٹرینڈ میں ہے جب ریورس ٹریڈنگ سے بچنے کے لئے.
  6. چین سے باہر نکلنے کی حکمت عملی مقرر کی جاتی ہے ، جس میں منافع ، اسٹاپ نقصان ، اور مشترکہ باہر نکلنا شامل ہے۔ زیادہ سے زیادہ منافع سے باہر نکلنے کی ترجیح کے ساتھ متعدد باہر نکلنے کی شرائط پہلے سے طے کی جاسکتی ہیں۔

فوائد

  1. ڈبل رجحان فلٹر اہم رجحان کی نشاندہی میں وشوسنییتا کو یقینی بناتا ہے، ریورس ٹریڈنگ سے بچنے کے.
  2. ایم اے تناسب اشارے واحد ایم اے کے مقابلے میں بہتر رجحان کی تبدیلی کا پتہ لگاتا ہے۔
  3. بی بی چوڑائی مؤثر طریقے سے زیادہ قابل اعتماد سگنل کے لئے کم اتار چڑھاؤ کے ادوار کا پتہ لگاتا ہے.
  4. زنجیروں سے باہر نکلنے کا طریقہ کار مجموعی منافع کو زیادہ سے زیادہ کرتا ہے۔

خطرات اور حل

  1. مختلف مارکیٹوں کے دوران زیادہ غلط سگنل اور غیر واضح رجحان کے ساتھ الٹ۔ حل تنگ سگنل کے لئے بی بی چوڑائی فلٹر کے ساتھ مل کر ہے۔
  2. ایم اے میں تاخیر کا اثر ہوتا ہے ، فوری طور پر رجحان کی تبدیلی کا پتہ لگانے میں ناکام رہتا ہے۔ حل ایم اے پیرامیٹرز کو مناسب طریقے سے مختصر کرنا ہے۔
  3. اسٹاپ نقصان کو فوری طور پر قیمت کے فرق کے ساتھ مارا جاسکتا ہے ، جس سے بڑا نقصان ہوتا ہے۔ حل یہ ہے کہ اسٹاپ نقصان پیرامیٹر کو آسانی سے ترتیب دیا جائے۔

اصلاح کی ہدایات

  1. بہترین مجموعہ تلاش کرنے کے لئے مکمل ٹیسٹ کے ذریعے ایم اے ادوار، آسکیلیٹر کی حد، بی بی پیرامیٹرز پر پیرامیٹر کی اصلاح.
  2. درستگی کو بہتر بنانے کے لیے رجحان کی تبدیلی کا جائزہ لینے والے دیگر اشارے شامل کریں جیسے KD، MACD۔
  3. متحرک پیرامیٹر کی اصلاح کے لئے تاریخی اعداد و شمار کے ساتھ مشین لرننگ ماڈل ٹریننگ.

خلاصہ

یہ حکمت عملی درمیانی سے طویل مدتی رجحان کا تعین کرنے کے لئے ڈبل ایم اے تناسب اشارے اور بی بی کو مربوط کرتی ہے۔ یہ منسلک منافع لینے کے میکانزم کے ساتھ رجحان کی تصدیق کے بعد بہترین مقام پر مارکیٹ میں داخل ہوتا ہے۔ یہ انتہائی قابل اعتماد اور موثر ہے۔ پیرامیٹر کی اصلاح ، رجحان الٹنے کے اشارے اور مشین لرننگ کے ذریعہ مزید بہتری حاصل کی جاسکتی ہے۔


/*backtest
start: 2023-12-20 00:00:00
end: 2023-12-27 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Premium MA Ratio Strategy", overlay = true)

// Input: Adjustable parameters for Premium MA Ratio
fast_length = input(10, title = "Fast MA Length")
slow_length = input(50, title = "Slow MA Length")
oscillator_threshold_buy = input(10, title = "Oscillator Buy Threshold")
oscillator_threshold_sell = input(90, title = "Oscillator Sell Threshold")

// Input: Adjustable parameters for Bollinger Bands
bb_length = input(20, title = "Bollinger Bands Length")
bb_source = input(close, title = "Bollinger Bands Source")
bb_deviation = input(2.0, title = "Bollinger Bands Deviation")
bb_width_threshold = input(30, title = "BB Width Threshold")
use_bb_filter = input(true, title = "Use BB Width Filter?")

// Input: Adjustable parameters for Trend Filter
use_trend_filter = input(true, title = "Use Trend Filter?")
trend_filter_period_1 = input(50, title = "Trend Filter Period 1")
trend_filter_period_2 = input(200, title = "Trend Filter Period 2")
use_second_trend_filter = input(true, title = "Use Second Trend Filter?")

// Input: Adjustable parameters for Exit Strategies
use_exit_strategies = input(true, title = "Use Exit Strategies?")
use_take_profit = input(true, title = "Use Take Profit?")
take_profit_ticks = input(150, title = "Take Profit in Ticks")
use_stop_loss = input(true, title = "Use Stop Loss?")
stop_loss_ticks = input(100, title = "Stop Loss in Ticks")
use_combined_exit = input(true, title = "Use Combined Exit Strategy?")
combined_exit_ticks = input(50, title = "Combined Exit Ticks")

// Input: Adjustable parameters for Time Filter
use_time_filter = input(false, title = "Use Time Filter?")
start_hour = input(8, title = "Start Hour")
end_hour = input(16, title = "End Hour")

// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)

// Calculate the premium price moving average ratio
premium_ratio = fast_ma / slow_ma * 100

// Calculate the percentile rank of the premium ratio
percentile_rank(src, length) =>
    rank = 0.0
    for i = 1 to length
        if src > src[i]
            rank := rank + 1.0
    percentile = rank / length * 100

// Calculate the percentile rank for the premium ratio using slow_length periods
premium_ratio_percentile = percentile_rank(premium_ratio, slow_length)

// Calculate the oscillator based on the percentile rank
oscillator = premium_ratio_percentile

// Dynamic coloring for the oscillator line
oscillator_color = oscillator > 50 ? color.green : color.red

// Plot the oscillator on a separate subplot as a line
hline(50, "Midline", color = color.gray)
plot(oscillator, title = "Oscillator", color = oscillator_color, linewidth = 2)

// Highlight the overbought and oversold areas
bgcolor(oscillator > oscillator_threshold_sell ? color.red : na, transp = 80)
bgcolor(oscillator < oscillator_threshold_buy ? color.green : na, transp = 80)

// Plot horizontal lines for threshold levels
hline(oscillator_threshold_buy, "Buy Threshold", color = color.green)
hline(oscillator_threshold_sell, "Sell Threshold", color = color.red)

// Calculate Bollinger Bands width
bb_upper = sma(bb_source, bb_length) + bb_deviation * stdev(bb_source, bb_length)
bb_lower = sma(bb_source, bb_length) - bb_deviation * stdev(bb_source, bb_length)
bb_width = bb_upper - bb_lower

// Calculate the percentile rank of Bollinger Bands width
bb_width_percentile = percentile_rank(bb_width, bb_length)

// Plot the Bollinger Bands width percentile line
plot(bb_width_percentile, title = "BB Width Percentile", color = color.blue, linewidth = 2)

// Calculate the trend filters
trend_filter_1 = sma(close, trend_filter_period_1)
trend_filter_2 = sma(close, trend_filter_period_2)

// Strategy logic
longCondition = crossover(premium_ratio_percentile, oscillator_threshold_buy)
shortCondition = crossunder(premium_ratio_percentile, oscillator_threshold_sell)

// Apply Bollinger Bands width filter if enabled
if (use_bb_filter)
    longCondition := longCondition and bb_width_percentile < bb_width_threshold
    shortCondition := shortCondition and bb_width_percentile < bb_width_threshold

// Apply trend filters if enabled
if (use_trend_filter)
    longCondition := longCondition and (close > trend_filter_1)
    shortCondition := shortCondition and (close < trend_filter_1)

// Apply second trend filter if enabled
if (use_trend_filter and use_second_trend_filter)
    longCondition := longCondition and (close > trend_filter_2)
    shortCondition := shortCondition and (close < trend_filter_2)

// Apply time filter if enabled
if (use_time_filter)
    longCondition := longCondition and (hour >= start_hour and hour <= end_hour)
    shortCondition := shortCondition and (hour >= start_hour and hour <= end_hour)

// Generate trading signals with exit strategies
if (use_exit_strategies)
    strategy.entry("Buy", strategy.long, when = longCondition)
    strategy.entry("Sell", strategy.short, when = shortCondition)
    
    // Define unique exit names for each order
    buy_take_profit_exit = "Buy Take Profit"
    buy_stop_loss_exit = "Buy Stop Loss"
    sell_take_profit_exit = "Sell Take Profit"
    sell_stop_loss_exit = "Sell Stop Loss"
    combined_exit = "Combined Exit"
    
    // Exit conditions for take profit
    if (use_take_profit)
        strategy.exit(buy_take_profit_exit, from_entry = "Buy", profit = take_profit_ticks)
        strategy.exit(sell_take_profit_exit, from_entry = "Sell", profit = take_profit_ticks)
    
    // Exit conditions for stop loss
    if (use_stop_loss)
        strategy.exit(buy_stop_loss_exit, from_entry = "Buy", loss = stop_loss_ticks)
        strategy.exit(sell_stop_loss_exit, from_entry = "Sell", loss = stop_loss_ticks)
    
    // Combined exit strategy
    if (use_combined_exit)
        strategy.exit(combined_exit, from_entry = "Buy", loss = combined_exit_ticks, profit = combined_exit_ticks)



مزید