ہائی لو بریکر بیک ٹیسٹ حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو اس بات کا تعین کرنے کے لئے اسٹاک کی تاریخی اونچائیوں اور نچلی سطحوں کا استعمال کرتی ہے کہ آیا قیمت ان اعلی نچلی حدود سے باہر نکلتی ہے۔ یہ ایک خاص مدت میں سب سے زیادہ قیمت اور سب سے کم قیمت کا حساب لگاتا ہے ، اور جب موجودہ مدت کی قیمت حالیہ مدت میں سب سے زیادہ قیمت سے تجاوز کرتی ہے تو خریدنے کے سگنل تیار کرتا ہے ، اور جب قیمت حالیہ مدت میں سب سے کم قیمت سے نیچے ہوتی ہے تو سگنل فروخت کرتا ہے۔ رجحان کی پیروی کرنے والی حکمت عملی کی ایک قسم کے طور پر ، یہ اسٹاک کی قیمتوں کی کچھ رجحان کی خصوصیات کو پکڑ سکتی ہے اور براہ راست تجارت کے لئے عملی قدر رکھتی ہے۔
اس حکمت عملی کا بنیادی منطق ایک خاص تعداد میں سلاخوں (ڈیفالٹ 50 بار) پر سب سے زیادہ قیمت اور سب سے کم قیمت کا حساب لگانا ہے۔ سب سے زیادہ / کم قیمتوں کا حساب لگاتے وقت ، یہ قریبی قیمتوں یا اصل اعلی / کم قیمتوں کا استعمال کرنے کی اجازت دیتا ہے۔ پھر یہ چیک کرتا ہے کہ آیا موجودہ بار کی بندش کی قیمت یا اعلی قیمت حالیہ مدت میں سب سے زیادہ قیمت سے تجاوز کرتی ہے۔ اگر ہاں اور یہ آخری سب سے زیادہ قیمت بار کے بعد سے کم سے کم تعداد میں سلاخوں (ڈیفالٹ 30 بار) سے زیادہ ہے تو ، یہ خرید سگنل پیدا کرتا ہے۔ اسی طرح ، اگر موجودہ بار کی بندش کی قیمت یا کم قیمت حالیہ مدت میں سب سے کم قیمت کو توڑ دیتی ہے اور آخری کم قیمت سے گزرنے کے بعد کم سے کم تعداد میں سلاخیں ، یہ فروخت سگنل پیدا کرتی ہے۔
خریدنے کے سگنل پیدا کرنے پر ، حکمت عملی اس قیمت پر طویل پوزیشنوں میں داخل ہوتی ہے ، جس میں اسٹاپ نقصان کی قیمت اور منافع کی قیمت مقرر ہوتی ہے۔ جب اسٹاپ نقصان کی قیمت کو چھو لیا جاتا ہے تو یہ اسٹاپ نقصان کے ساتھ پوزیشن سے باہر نکل جاتا ہے ، اور جب منافع کی قیمت کو چھو لیا جاتا ہے تو منافع لے کر باہر نکل جاتا ہے۔ فروخت سگنل کے لئے منطق اسی طرح کی ہے۔
یہ اعلی کم بریکر بیک ٹیسٹ کی حکمت عملی مندرجہ ذیل فوائد ہیں:
اس حکمت عملی میں کچھ خطرات بھی ہیں:
مندرجہ ذیل پہلو ان خطرات کو کم کرنے میں مدد کرسکتے ہیں:
اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
خلاصہ یہ ہے کہ ، ہائی لو بریکر بیک ٹیسٹ حکمت عملی ایک آسان اور عملی رجحان کی پیروی کرنے والی حکمت عملی ہے۔ یہ قیمتوں کو توڑنے والی وقتا فوقتا اعلی / کم قیمتوں کی بنیاد پر تجارتی سگنل تیار کرتی ہے۔ اس حکمت عملی کے فوائد جیسے سادگی ، رجحان کی پیروی اور پیرامیٹر کی اصلاح ، لیکن اس کے ساتھ ہی زیادہ سے زیادہ تجارت اور اتار چڑھاؤ والی منڈیوں کو سنبھالنے میں ناکامی جیسے خطرات بھی ہیں۔ اس کی کارکردگی کو بہتر بنانے کے لئے پیرامیٹرز ، سگنل فلٹرز ، پوزیشن سائزنگ وغیرہ کے آس پاس مزید اصلاحات کی جاسکتی ہیں۔
/*backtest start: 2023-11-25 00:00:00 end: 2023-11-26 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("High/Low Breaker Backtest 1.0", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=700) // Strategy Settings takeProfitPercentageLong = input(.1, title='Take Profit Percentage Long', type=float)/100 stopLossPercentageLong = input(0.15, title='Stop Loss Percentage Long', type=float)/100 takeProfitPercentageShort = input(.1, title='Take Profit Percentage Short', type=float)/100 stopLossPercentageShort = input(0.15, title='Stop Loss Percentage Short', type=float)/100 candlesBack = input(title="Number of candles back", defval=50) useHighAndLows = input(true, title="Use high and lows (uncheck to use close)", defval=true) lastBarsBackMinimum = input(title="Number of candles back to ignore for last high/low", defval=30) showHighsAndLows = input(true, title="Show high/low lines", defval=true) getIndexOfLowestInSeries(series, period) => index = 0 current = series for i = 1 to period if series[i] <= current index := i current := series[i] index getIndexOfHighestInSeries(series, period) => index = 0 current = series for i = 1 to period if series[i] >= current index := i current := series[i] index indexOfHighestInRange = getIndexOfHighestInSeries(useHighAndLows ? high : close, candlesBack) indexOfLowestInRange = getIndexOfLowestInSeries(useHighAndLows ? low : close, candlesBack) max = useHighAndLows ? high[indexOfHighestInRange] : close[indexOfHighestInRange] min = useHighAndLows ? low[indexOfLowestInRange] : close[indexOfLowestInRange] barsSinceLastHigh = indexOfHighestInRange barsSinceLastLow = indexOfLowestInRange isNewHigh = (useHighAndLows ? high > max[1] : close > max[1]) and (barsSinceLastHigh[1] + 1 > lastBarsBackMinimum) isNewLow = (useHighAndLows ? low < min[1] : close < min[1]) and (barsSinceLastLow[1] + 1 > lastBarsBackMinimum) alertcondition(condition=isNewHigh, title="New High", message="Last High Broken") alertcondition(condition=isNewLow, title="New Low", message="Last Low Broken") if high > max max := high barsSinceLastHigh := 0 if low < min min := low barsSinceLastLow := 0 plot( showHighsAndLows ? max : na, color=red, style=line, title="High", linewidth=3) plot( showHighsAndLows ? min : na, color=green, style=line, title="Low", linewidth=3) // Strategy Entry/Exit Logic goLong =isNewHigh longStopLevel = strategy.position_avg_price * (1 - stopLossPercentageLong) longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentageLong) goShort = isNewLow shortStopLevel = strategy.position_avg_price * (1 + stopLossPercentageShort) shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentageShort) strategy.entry("Long", strategy.long, when=goLong) strategy.exit("Long Exit", "Long", stop=longStopLevel, limit=longTakeProfitLevel) strategy.entry("Short", strategy.short, when=goShort) strategy.exit("Short Exit", "Short", stop=shortStopLevel, limit=shortTakeProfitLevel) plot(goShort ? shortStopLevel : na, color=yellow, style=linebr, linewidth=2) plot(goShort ? shortTakeProfitLevel : na, color=blue, style=linebr, linewidth=2) plot(goLong ? longStopLevel : na, color=yellow, style=linebr, linewidth=2) plot(goLong ? longTakeProfitLevel : na, color=blue, style=linebr, linewidth=2)