بہتر ڈوئل پیوٹ پوائنٹ ریورسل ٹریڈنگ حکمت عملی

ATR PP RSI SL TP RR
تخلیق کی تاریخ: 2024-12-05 15:06:15 آخر میں ترمیم کریں: 2024-12-05 15:06:15
کاپی: 0 کلکس کی تعداد: 473
1
پر توجہ دیں
1617
پیروکار

بہتر ڈوئل پیوٹ پوائنٹ ریورسل ٹریڈنگ حکمت عملی

جائزہ

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

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

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

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

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

اسٹریٹجک رسک

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

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

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

خلاصہ کریں۔

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

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

//@version=5
strategy("Pivot of Pivot Reversal Strategy [MAD]", shorttitle="PoP Reversal Strategy", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// Inputs with Tooltips
leftBars = input.int(4, minval=1, title='PP Left Bars', tooltip='Number of bars to the left of the pivot point. Increasing this value makes the pivot more significant.')
rightBars = input.int(2, minval=1, title='PP Right Bars', tooltip='Number of bars to the right of the pivot point. Increasing this value delays the pivot detection but may reduce false signals.')
atr_length = input.int(14, minval=1, title='ATR Length', tooltip='Length for ATR calculation. ATR is used to assess market volatility.')
atr_mult = input.float(0.1, minval=0.0, step=0.1, title='ATR Multiplier', tooltip='Multiplier applied to ATR for pivot significance. Higher values require greater price movement for pivots.')

allowLongs = input.bool(true, title='Allow Long Positions', tooltip='Enable or disable long positions.')
allowShorts = input.bool(true, title='Allow Short Positions', tooltip='Enable or disable short positions.')

margin_amount = input.float(1.0, minval=1.0, maxval=100.0, step=1.0, title='Margin Amount (Leverage)', tooltip='Set the leverage multiplier (e.g., 3x, 5x, 10x). Note: Adjust leverage in strategy properties for accurate results.')

risk_reward_enabled = input.bool(false, title='Enable Risk/Reward Ratio', tooltip='Enable or disable the use of a fixed risk/reward ratio for trades.')
risk_reward_ratio = input.float(1.0, minval=0.1, step=0.1, title='Risk/Reward Ratio', tooltip='Set the desired risk/reward ratio (e.g., 1.0 for 1:1).')
risk_percent = input.float(1.0, minval=0.1, step=0.1, title='Risk Percentage per Trade (%)', tooltip='Percentage of entry price to risk per trade.')

trail_stop_enabled = input.bool(false, title='Enable Trailing Stop Loss', tooltip='Enable or disable the trailing stop loss.')
trail_percent = input.float(0.5, minval=0.0, step=0.1, title='Trailing Stop Loss (%)', tooltip='Percentage for trailing stop loss.')

start_year  = input.int(2018, title='Start Year', tooltip='Backtest start year.')
start_month = input.int(1,    title='Start Month', tooltip='Backtest start month.')
start_day   = input.int(1,    title='Start Day',   tooltip='Backtest start day.')

end_year  = input.int(2100, title='End Year', tooltip='Backtest end year.')
end_month = input.int(1,    title='End Month', tooltip='Backtest end month.')
end_day   = input.int(1,    title='End Day',   tooltip='Backtest end day.')

date_start = timestamp(start_year, start_month, start_day, 00, 00)
date_end   = timestamp(end_year,   end_month,   end_day,   00, 00)
time_cond = time >= date_start and time <= date_end

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr = ta.atr(atr_length)
    for i = 1 to left
        if high[right] < high[right + i] + atr * atr_mult
            pp_ok := false
    for i = 0 to right - 1
        if high[right] < high[i] + atr * atr_mult
            pp_ok := false
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr = ta.atr(atr_length)
    for i = 1 to left
        if low[right] > low[right + i] - atr * atr_mult
            pp_ok := false
    for i = 0 to right - 1
        if low[right] > low[i] - atr * atr_mult
            pp_ok := false
    pp_ok ? low[right] : na

swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig(leftBars, rightBars)

swh_cond = not na(swh)
var float hprice = 0.0
hprice := swh_cond ? swh : nz(hprice[1])

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

swl_cond = not na(swl)
var float lprice = 0.0
lprice := swl_cond ? swl : nz(lprice[1])

se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

// Pivots of pivots
var float ph1 = 0.0
var float ph2 = 0.0
var float ph3 = 0.0
var float pl1 = 0.0
var float pl2 = 0.0
var float pl3 = 0.0
var float pphprice = 0.0
var float pplprice = 0.0

ph3 := swh_cond ? nz(ph2[1]) : nz(ph3[1])
ph2 := swh_cond ? nz(ph1[1]) : nz(ph2[1])
ph1 := swh_cond ? hprice     : nz(ph1[1])

pl3 := swl_cond ? nz(pl2[1]) : nz(pl3[1])
pl2 := swl_cond ? nz(pl1[1]) : nz(pl2[1])
pl1 := swl_cond ? lprice     : nz(pl1[1])

pphprice := swh_cond and ph2 > ph1 and ph2 > ph3 ? ph2 : nz(pphprice[1])
pplprice := swl_cond and pl2 < pl1 and pl2 < pl3 ? pl2 : nz(pplprice[1])

// Entry and Exit Logic
if time_cond
    // Calculate order quantity based on margin amount
    float order_qty = na
    if margin_amount > 0
        order_qty := (strategy.equity * margin_amount) / close

    // Long Position
    if allowLongs and le and not na(pphprice) and pphprice != 0
        float entry_price_long = pphprice + syminfo.mintick
        strategy.entry("PivRevLE", strategy.long, qty=order_qty, comment="PivRevLE", stop=entry_price_long)
        if risk_reward_enabled or (trail_stop_enabled and trail_percent > 0.0)
            float stop_loss_price = na
            float take_profit_price = na
            float trail_offset_long = na
            float trail_points_long = na
            if risk_reward_enabled
                float risk_amount = entry_price_long * (risk_percent / 100)
                stop_loss_price := entry_price_long - risk_amount
                float profit_target = risk_amount * risk_reward_ratio
                take_profit_price := entry_price_long + profit_target
            if trail_stop_enabled and trail_percent > 0.0
                trail_offset_long := (trail_percent / 100.0) * entry_price_long
                trail_points_long := trail_offset_long / syminfo.pointvalue
            strategy.exit("PivRevLE Exit", from_entry="PivRevLE",
                          stop=stop_loss_price, limit=take_profit_price,
                          trail_points=trail_points_long, trail_offset=trail_points_long)
    // Short Position
    if allowShorts and se and not na(pplprice) and pplprice != 0
        float entry_price_short = pplprice - syminfo.mintick
        strategy.entry("PivRevSE", strategy.short, qty=order_qty, comment="PivRevSE", stop=entry_price_short)
        if risk_reward_enabled or (trail_stop_enabled and trail_percent > 0.0)
            float stop_loss_price = na
            float take_profit_price = na
            float trail_offset_short = na
            float trail_points_short = na
            if risk_reward_enabled
                float risk_amount = entry_price_short * (risk_percent / 100)
                stop_loss_price := entry_price_short + risk_amount
                float profit_target = risk_amount * risk_reward_ratio
                take_profit_price := entry_price_short - profit_target
            if trail_stop_enabled and trail_percent > 0.0
                trail_offset_short := (trail_percent / 100.0) * entry_price_short
                trail_points_short := trail_offset_short / syminfo.pointvalue
            strategy.exit("PivRevSE Exit", from_entry="PivRevSE",
                          stop=stop_loss_price, limit=take_profit_price,
                          trail_points=trail_points_short, trail_offset=trail_points_short)

// Plotting
plot(lprice, color=color.new(color.red, 55), title='Low Price')
plot(hprice, color=color.new(color.green, 55), title='High Price')
plot(pplprice, color=color.new(color.red, 0), linewidth=2, title='Pivot Low Price')
plot(pphprice, color=color.new(color.green, 0), linewidth=2, title='Pivot High Price')