اعلی-کم بریک آؤٹ بیک ٹیسٹنگ حکمت عملی


تخلیق کی تاریخ: 2023-11-27 15:37:13 آخر میں ترمیم کریں: 2023-11-27 15:37:13
کاپی: 0 کلکس کی تعداد: 689
1
پر توجہ دیں
1617
پیروکار

اعلی-کم بریک آؤٹ بیک ٹیسٹنگ حکمت عملی

جائزہ

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

حکمت عملی کا اصول

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

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

طاقت کا تجزیہ

اس طرح کی اعلی یا کم توڑنے کی حکمت عملی کے کچھ فوائد ہیں:

  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)