یہ حکمت عملی محور نقطہ تجزیہ پر مبنی ایک جدید تجارتی نظام ہے جو مارکیٹ میں اہم موڑ کے مقامات کی نشاندہی کرکے ممکنہ رجحان کی تبدیلیوں کی پیش گوئی کرتا ہے۔ یہ حکمت عملی پوزیشن مینجمنٹ کے لئے اے ٹی آر اشارے کے ساتھ مل کر ایک جدید
اس حکمت عملی کا بنیادی مقصد دو سطحوں کے محور نقطہ تجزیہ کے ذریعے مارکیٹ میں الٹ جانے کے مواقع کی نشاندہی کرنا ہے۔ پہلی سطح کے محور پوائنٹس بنیادی اونچائی اور نچلی سطح ہیں ، جبکہ دوسری سطح کے محور پوائنٹس پہلی سطح کے محور پوائنٹس سے منتخب اہم موڑ کے مقامات ہیں۔ جب قیمت ان اہم سطحوں سے گزرتی ہے تو تجارتی سگنل پیدا ہوتے ہیں۔ حکمت عملی اسٹاپ نقصان ، منافع لینے کی سطح اور پوزیشن سائزنگ کا تعین کرنے کے لئے مارکیٹ میں اتار چڑھاؤ کی پیمائش کے لئے اے ٹی آر اشارے کا بھی استعمال کرتی ہے۔
یہ ایک اچھی طرح سے ڈیزائن کردہ رجحان الٹ ٹریڈنگ حکمت عملی ہے جو دو تہوں کے محور نقطہ تجزیہ اور اے ٹی آر اتار چڑھاؤ کے انتظام کے ذریعے ایک مضبوط تجارتی نظام تیار کرتی ہے۔ حکمت عملی کی طاقت اس کی موافقت اور جامع رسک مینجمنٹ میں ہے ، لیکن تاجروں کو اب بھی احتیاط سے فائدہ اٹھانے اور پیرامیٹرز کو مستقل طور پر بہتر بنانے کی ضرورت ہے۔ تجویز کردہ اصلاح کی سمتوں کے ذریعے ، حکمت عملی میں بہتری کی گنجائش ہے۔ یہ حکمت عملی قدامت پسند تاجروں کے لئے موزوں ہے اور یہ ایک تجارتی نظام ہے جس کا مطالعہ اور گہرائی میں مشق کرنے کے قابل ہے۔
/*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')