اعلی کم بریکر بیک ٹیسٹ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-27 15:37:13
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

اس حکمت عملی کا بنیادی منطق ایک خاص تعداد میں سلاخوں (ڈیفالٹ 50 بار) پر سب سے زیادہ قیمت اور سب سے کم قیمت کا حساب لگانا ہے۔ سب سے زیادہ / کم قیمتوں کا حساب لگاتے وقت ، یہ قریبی قیمتوں یا اصل اعلی / کم قیمتوں کا استعمال کرنے کی اجازت دیتا ہے۔ پھر یہ چیک کرتا ہے کہ آیا موجودہ بار کی بندش کی قیمت یا اعلی قیمت حالیہ مدت میں سب سے زیادہ قیمت سے تجاوز کرتی ہے۔ اگر ہاں اور یہ آخری سب سے زیادہ قیمت بار کے بعد سے کم سے کم تعداد میں سلاخوں (ڈیفالٹ 30 بار) سے زیادہ ہے تو ، یہ خرید سگنل پیدا کرتا ہے۔ اسی طرح ، اگر موجودہ بار کی بندش کی قیمت یا کم قیمت حالیہ مدت میں سب سے کم قیمت کو توڑ دیتی ہے اور آخری کم قیمت سے گزرنے کے بعد کم سے کم تعداد میں سلاخیں ، یہ فروخت سگنل پیدا کرتی ہے۔

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

فوائد کا تجزیہ

یہ اعلی کم بریکر بیک ٹیسٹ کی حکمت عملی مندرجہ ذیل فوائد ہیں:

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

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں:

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

مندرجہ ذیل پہلو ان خطرات کو کم کرنے میں مدد کرسکتے ہیں:

  1. روکنے کے نقصان کی دوری کو کم کرنے کے لئے انتظار کا وقت بڑھانے کے لئے.
  2. کثرت سے اندراجات سے بچنے کے لئے مزید اندراج کے معیار شامل کریں.
  3. بہترین مجموعے تلاش کرنے کے لئے پیرامیٹرز کو بہتر بنائیں.
  4. دوسرے اشارے کے ساتھ فلٹر کے حالات شامل کریں.

اصلاح کی ہدایات

اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:

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

خلاصہ

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


/*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)


مزید