
یہ حکمت عملی محور پوائنٹس پر مبنی ہے تاکہ مارکیٹ میں الٹ پوائنٹس کی نشاندہی کی جاسکے اور اس کی بنیاد پر تجارت کی جاسکے۔ جب مارکیٹ بائیں طرف 4K لائن کے اندر محور پوائنٹس کی اونچائی پر ہوتی ہے تو حکمت عملی زیادہ پوزیشن کھولتی ہے۔ جب مارکیٹ بائیں طرف 4K لائن کے اندر محور پوائنٹس کی نچلی سطح پر ہوتی ہے تو حکمت عملی خالی پوزیشن کھولتی ہے۔ حکمت عملی کا اسٹاپ نقصان کھولنے کی قیمت کے اگلے سب سے کم قیمت میں تبدیلی کی اکائی پر ہوتا ہے۔ حکمت عملی کے باہر نکلنے کی دو شرائط ہیں: 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()