یہ حکمت عملی مارکیٹ کے الٹ پوائنٹس کی نشاندہی کرنے اور ان کی بنیاد پر تجارتی فیصلے کرنے کے لئے محور پوائنٹس کا استعمال کرتی ہے۔ جب بائیں طرف آخری 4 موم بتیوں کے اندر محور اعلی تشکیل دیا جاتا ہے تو ، حکمت عملی ایک لمبی پوزیشن میں داخل ہوتی ہے۔ جب بائیں طرف آخری 4 موم بتیوں کے اندر محور کم تشکیل دی جاتی ہے تو ، حکمت عملی ایک مختصر پوزیشن میں داخل ہوتی ہے۔ اسٹاپ نقصان داخلہ قیمت سے اوپر یا نیچے ایک ٹک سائز (syminfo.mintick) پر مقرر کیا جاتا ہے۔ وہاں سے نکلنے کی دو شرائط ہیں: 1) اگلا مخالف محور نقطہ ظاہر ہونے پر باہر نکلیں؛ 2) باہر نکلیں جب فلوٹنگ نقصان 30٪ تک پہنچ جائے۔
یہ حکمت عملی محور پوائنٹ اشارے پر مبنی دو طرفہ تجارتی نظام تیار کرتی ہے ، جو محور اونچائیوں پر طویل اور محور کموں پر مختصر جا کر مارکیٹ کے الٹ جانے کے مواقع کو حاصل کرتی ہے۔ اس حکمت عملی کی ایک خاص نظریاتی بنیاد اور عملی قدر ہے ، لیکن محور پوائنٹ اشارے کی حدود کی وجہ سے ، حکمت عملی کو اصل آپریشن میں کچھ خطرات اور چیلنجوں کا سامنا کرنا پڑ سکتا ہے۔ محور پوائنٹ اشارے کی قسم ، پیرامیٹرز ، فلٹرنگ کے حالات ، اسٹاپ نقصان اور منافع لینے وغیرہ کو بہتر بنانے سے ، اس حکمت عملی کی استحکام اور منافع میں مزید بہتری کی توقع کی جاتی ہے۔
/*backtest start: 2023-04-24 00:00:00 end: 2024-04-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true) leftBars = input(4) rightBars = input(2) var float dailyEquity = na // Reset equity to $10,000 at the beginning of each day isNewDay = ta.change(time("D")) != 0 if (isNewDay) dailyEquity := 10000 // Calculate pivot highs and lows swh = ta.pivothigh(leftBars, rightBars) swl = ta.pivotlow(leftBars, rightBars) // Define long entry condition swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond ? true : (le[1] and high > hprice ? false : le[1]) // Enter long position if long entry condition is met if (le) strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick) // Define short entry condition swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) // Enter short position if short entry condition is met if (se) strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick) // Exit condition: Exit at the next pivot point exitAtNextPivot() => if strategy.opentrades > 0 if strategy.position_size > 0 // Exiting long position at next pivot low if not na(swl) strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick) else // Exiting short position at next pivot high if not na(swh) strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick) // Call exitAtNextPivot function exitAtNextPivot() // Exit condition: Exit if profit is less than 30% exitIfProfitLessThanThirtyPercent() => if strategy.opentrades > 0 if strategy.position_size > 0 // Calculate profit percentage for long position profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100 // Exiting long position if profit is less than 30% if profit_percentage_long < -30 strategy.close("PivRevLE") else // Calculate profit percentage for short position profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100 // Exiting short position if profit is less than 30% if profit_percentage_short < -30 strategy.close("PivRevSE") // Call exitIfProfitLessThanThirtyPercent function exitIfProfitLessThanThirtyPercent()