متحرک سگنل لائن رجحان کی پیروی اور اتار چڑھاؤ کو فلٹر کرنے کی حکمت عملی

DSL ATR RSI ZLEMA SMA EMA
تخلیق کی تاریخ: 2024-11-29 17:02:33 آخر میں ترمیم کریں: 2024-11-29 17:02:33
کاپی: 2 کلکس کی تعداد: 502
1
پر توجہ دیں
1617
پیروکار

متحرک سگنل لائن رجحان کی پیروی اور اتار چڑھاؤ کو فلٹر کرنے کی حکمت عملی

جائزہ

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

حکمت عملی کا اصول

اس حکمت عملی کی بنیادی منطق تین اہم اجزاء پر مبنی ہے:

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

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

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

اسٹریٹجک فوائد

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

اسٹریٹجک رسک

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

حکمت عملی کی اصلاح کی سمت

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DailyPanda

//@version=5
strategy("DSL Strategy [DailyPanda]",
     initial_capital = 2000,
     commission_value=0.00,
     slippage=3,
     overlay = true)

//--------------------------------------------------------------------------------------------------------------------
// USER INPUTS
//--------------------------------------------------------------------------------------------------------------------

// DSL Indicator Inputs CP
int   len         = input.int(34, "Length", group="CP")      // Length for calculating DSL
int   offset      = input.int(30, "Offset", group="CP")      // Offset for threshold levels
float width       = input.float(1, "Bands Width", step = 0.1, maxval = 2, minval = 0.5, group="CP") // Width for ATR-based bands
float risk_reward = input.float(1.5, "Risk Reward", group="Risk Mgmt") // Risk Reward ratio

// Colors for upper and lower trends
color upper_col = input.color(color.lime, "+", inline = "col")
color lower_col = input.color(color.orange, "-", inline = "col")

// DSL-BELUGA
len_beluga  = input.int(10, "Beluga Length", group="BELUGA")
dsl_mode_inp = input.string("Fast", "DSL Lines Mode", options=["Fast", "Slow"], group="BELUGA")
dsl_mode    = dsl_mode_inp == "Fast" ? 2 : 1

// Colors for DSL-BELUGA
color color_up = #8BD8BD
color color_dn = #436cd3

i_lossPct = input.int(defval=100, title="% max day DD", minval=1, maxval=100, step=1, group="Risk Management")
i_goal = input.bool(title="Enable Daily Goal", defval=false, group="Risk Management")
i_goalPct = input.int(defval=4, title="% Daily Goal", minval=1, step=1, group="Risk Management")


//############################## RISK MANAGEMENT ##############################
// Set maximum intraday loss to our lossPct input
// strategy.risk.max_intraday_loss(i_lossPct, strategy.percent_of_equity)
//strategy.risk.max_intraday_loss(value=1200, type=strategy.cash)

// Store equity value from the beginning of the day
eqFromDayStart = ta.valuewhen(ta.change(dayofweek) > 0, strategy.equity, 0)
// Calculate change of the current equity from the beginning of the current day
eqChgPct = 100 * ((strategy.equity - eqFromDayStart - strategy.openprofit) / (strategy.equity-strategy.openprofit))
f_stopGain = eqChgPct >= i_goalPct and i_goal ? true : false


//--------------------------------------------------------------------------------------------------------------------
// INDICATOR CALCULATIONS
//--------------------------------------------------------------------------------------------------------------------

// Function to calculate DSL lines based on price
dsl_price(float price, int len) =>
    // Initialize DSL lines
    float dsl_up = na
    float dsl_dn = na
    float sma    = ta.sma(price, len)

    // Dynamic upper and lower thresholds calculated with offset
    float threshold_up = ta.highest(len)[offset] 
    float threshold_dn = ta.lowest(len)[offset] 

    // Calculate the DSL upper and lower lines based on price compared to the thresholds
    dsl_up := price > threshold_up ? sma : nz(dsl_up[1]) 
    dsl_dn := price < threshold_dn ? sma : nz(dsl_dn[1])

    // Return both DSL lines
    [dsl_up, dsl_dn]

// Function to calculate DSL bands based on ATR and width multiplier
dsl_bands(float dsl_up, float dsl_dn) =>
    float atr = ta.atr(200) * width // ATR-based calculation for bands
    float upper = dsl_up - atr       // Upper DSL band
    float lower = dsl_dn + atr       // Lower DSL band

    [upper, lower]

// Get DSL values based on the closing price
[dsl_up, dsl_dn] = dsl_price(close, len)

// Calculate the bands around the DSL lines
[dsl_up1, dsl_dn1] = dsl_bands(dsl_up, dsl_dn)


//--------------------------------------------------------------------------------------------------------------------
// DSL-BELUGA INDICATOR CALCULATIONS
//--------------------------------------------------------------------------------------------------------------------

// Calculate RSI with a period of 10
float RSI = ta.rsi(close, 10)

// Zero-Lag Exponential Moving Average function
zlema(src, length) =>
    int   lag      = math.floor((length - 1) / 2)
    float ema_data = 2 * src - src[lag]
    float ema2     = ta.ema(ema_data, length)
    ema2

// Discontinued Signal Lines function
dsl_lines(src, length)=>
    float up  = 0.
    float dn  = 0.
    up := (src > ta.sma(src, length)) ? nz(up[1]) + dsl_mode / length * (src - nz(up[1])) : nz(up[1])  
    dn := (src < ta.sma(src, length)) ? nz(dn[1]) + dsl_mode / length * (src - nz(dn[1])) : nz(dn[1])
    [up, dn]

// Calculate DSL lines for RSI
[lvlu, lvld] = dsl_lines(RSI, len_beluga)

// Calculate DSL oscillator using ZLEMA of the average of upper and lower DSL Lines
float dsl_osc = zlema((lvlu + lvld) / 2, 10)

// Calculate DSL Lines for the oscillator
[level_up, level_dn] = dsl_lines(dsl_osc, 10)

// Detect crossovers for signal generation
bool up_signal = ta.crossover(dsl_osc, level_dn) and dsl_osc < 55
bool dn_signal = ta.crossunder(dsl_osc, level_up) and dsl_osc > 50

//--------------------------------------------------------------------------------------------------------------------
// VISUALIZATION
//--------------------------------------------------------------------------------------------------------------------

// Plot the DSL lines on the chart
plot_dsl_up = plot(dsl_up, color=color.new(upper_col, 80), linewidth=1, title="DSL Up")
plot_dsl_dn = plot(dsl_dn, color=color.new(lower_col, 80), linewidth=1, title="DSL Down")

// Plot the DSL bands
plot_dsl_up1 = plot(dsl_up1, color=color.new(upper_col, 80), linewidth=1, title="DSL Upper Band")
plot_dsl_dn1 = plot(dsl_dn1, color=color.new(lower_col, 80), linewidth=1, title="DSL Lower Band")

// Fill the space between the DSL lines and bands with color
fill(plot_dsl_up, plot_dsl_up1, color=color.new(upper_col, 80))
fill(plot_dsl_dn, plot_dsl_dn1, color=color.new(lower_col, 80))

// Plot signals on the chart
plotshape(up_signal, title="Buy Signal", style=shape.triangleup, location=location.belowbar, size=size.tiny, text="Enter")
plotshape(dn_signal, title="Sell Signal", style=shape.triangledown, location=location.abovebar, size=size.tiny, text="Exit")

// Color the background on signal occurrences
bgcolor(up_signal ? color.new(color_up, 90) : na, title="Up Signal Background", editable = false)
bgcolor(dn_signal ? color.new(color_dn, 90) : na, title="Down Signal Background", editable = false)

//--------------------------------------------------------------------------------------------------------------------
// STRATEGY CONDITIONS AND EXECUTION
//--------------------------------------------------------------------------------------------------------------------

// Variables to hold stop loss and take profit prices
var float long_stop_loss_price  = na
var float long_take_profit_price = na
var float short_stop_loss_price = na
var float short_take_profit_price = na
float pos_size = math.abs(strategy.position_size)

// Long Entry Conditions
bool long_condition1 = not na(dsl_up1) and not na(dsl_dn) and dsl_up1 > dsl_dn
bool long_condition2 = open > dsl_up and close > dsl_up and open[1] > dsl_up and close[1] > dsl_up and open[2] > dsl_up and close[2] > dsl_up
bool long_condition3 = up_signal and pos_size == 0
bool long_condition  = long_condition1 and long_condition2 and long_condition3 and (not f_stopGain)

// Short Entry Conditions
bool short_condition1 = not na(dsl_dn1) and not na(dsl_up) and dsl_dn < dsl_up1
bool short_condition2 = open < dsl_dn1 and close < dsl_dn1 and open[1] < dsl_dn1 and close[1] < dsl_dn1 and open[2] < dsl_dn1 and close[2] < dsl_dn1
bool short_condition3 = dn_signal and pos_size == 0
bool short_condition  = short_condition1 and short_condition2 and short_condition3 and (not f_stopGain)

// Long Trade Execution
if (long_condition and not na(dsl_up1))
    long_stop_loss_price := dsl_up1
    float risk = close - long_stop_loss_price
    if (risk > 0)
        long_take_profit_price := close + risk * risk_reward
        strategy.entry("Long", strategy.long)
        strategy.exit("Exit Long", from_entry="Long", stop=long_stop_loss_price, limit=long_take_profit_price)
else if (strategy.position_size <= 0)
    // Reset when not in a long position
    long_stop_loss_price  := na
    long_take_profit_price := na

// Short Trade Execution
if (short_condition and not na(dsl_dn1))
    short_stop_loss_price := dsl_dn1
    float risk = short_stop_loss_price - close
    if (risk > 0)
        short_take_profit_price := close - risk * risk_reward
        strategy.entry("Short", strategy.short)
        strategy.exit("Exit Short", from_entry="Short", stop=short_stop_loss_price, limit=short_take_profit_price)
else if (strategy.position_size >= 0)
    // Reset when not in a short position
    short_stop_loss_price := na
    short_take_profit_price := na

//--------------------------------------------------------------------------------------------------------------------
// PLOTTING STOP LOSS AND TAKE PROFIT LEVELS
//--------------------------------------------------------------------------------------------------------------------

// Plot the stop loss and take profit levels only when in a position
float plot_long_stop_loss   = strategy.position_size > 0 ? long_stop_loss_price : na
float plot_long_take_profit = strategy.position_size > 0 ? long_take_profit_price : na

float plot_short_stop_loss   = strategy.position_size < 0 ? short_stop_loss_price : na
float plot_short_take_profit = strategy.position_size < 0 ? short_take_profit_price : na

plot(plot_long_stop_loss, title="Long Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr, editable=false)
plot(plot_long_take_profit, title="Long Take Profit", color=color.green, linewidth=2, style=plot.style_linebr, editable=false)

plot(plot_short_stop_loss, title="Short Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr, editable=false)
plot(plot_short_take_profit, title="Short Take Profit", color=color.green, linewidth=2, style=plot.style_linebr, editable=false)