اوسط حقیقی رینج پر مبنی حکمت عملی کے بعد رجحان


تخلیق کی تاریخ: 2024-01-05 16:28:48 آخر میں ترمیم کریں: 2024-01-05 16:28:48
کاپی: 0 کلکس کی تعداد: 612
1
پر توجہ دیں
1617
پیروکار

اوسط حقیقی رینج پر مبنی حکمت عملی کے بعد رجحان

جائزہ

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

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

اس حکمت عملی میں تین اہم پیرامیٹرز استعمال کیے جاتے ہیں: مدت ، ضرب ضرب اور داخلی / خارجی نقطہ۔ ڈیفالٹ پیرامیٹرز 14 مدت کے اے ٹی آر اور 4 گنا ضرب ہیں۔

یہ حکمت عملی پہلے کثیر سر اوسط قیمت ((buyavg) اور خالی سر اوسط قیمت ((sellavg) کا حساب لگاتی ہے ، اور پھر موجودہ رجحان کی سمت کا تعین کرنے کے لئے قیمتوں کا موازنہ کرتی ہے۔ اگر قیمت خالی سر اوسط قیمت سے زیادہ ہے تو ، اسے کثیر سر سمجھا جاتا ہے۔ اگر قیمت کثیر سر اوسط قیمت سے کم ہے تو ، اسے خالی سر سمجھا جاتا ہے۔

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

جب اسٹاپ نقصان کا آغاز ہوتا ہے تو ، حکمت عملی منافع کو ختم کردیتی ہے۔

اسٹریٹجک فوائد

  1. رجحانات کی بنیاد پر ، مسلسل منافع بخش
  2. اے ٹی آر کا استعمال کرتے ہوئے متحرک طور پر روکنے کے فاصلے کو ایڈجسٹ کریں تاکہ خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکے
  3. خرید و فروخت کے مقامات کا حساب لگانا آسان ، براہ راست اور آسانی سے سمجھنے کے قابل ہے

خطرات اور ان کا مقابلہ

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

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Trend Strategy by zdmre', shorttitle='Trend Strategy', overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=10000, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.005)
show_STOPLOSSprice = input(true, title='Show TrailingSTOP Prices')
src = input(close, title='Source')
out2 = ta.ema(src, 20)

buyavg = (close + high) / 2.02 - high * (1 - open / close) * (1 - low * open / (high * close))
sellavg = ((low + close) / 1.99 + low * (1 - low / open) * (1 - low * open / (close * high)) / 1.1 + out2 )/ 2

// === INPUT BACKTEST RANGE ===
fromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
fromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
fromYear = input.int(defval=2021, title='From Year', minval=1970)
thruMonth = input.int(defval=1, title='Thru Month', minval=1, maxval=12)
thruDay = input.int(defval=1, title='Thru Day', minval=1, maxval=31)
thruYear = input.int(defval=2100, title='Thru Year', minval=1970)

// === INPUT SHOW PLOT ===
showDate = input(defval=true, title='Show Date Range')

// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() => true


// === TRAILING STOP LOSS === //

ATR_Period = input(14)
ATR_Mult = input(4.0)
var float ATR_TrailSL = na
var int pos = na
atr = ta.rma (ta.tr(true), 14)
xATR = ta.atr(ATR_Period)
nLoss = ATR_Mult * xATR

iff_1 = close > nz(ATR_TrailSL[1], 0) ? close - nLoss : close + nLoss
iff_2 = close < nz(ATR_TrailSL[1], 0) and close[1] < nz(ATR_TrailSL[1], 0) ? math.min(nz(ATR_TrailSL[1]), close + nLoss) : iff_1
ATR_TrailSL := close > nz(ATR_TrailSL[1], 0) and close[1] > nz(ATR_TrailSL[1], 0) ? math.max(nz(ATR_TrailSL[1]), close - nLoss) : iff_2

iff_3 = close[1] > nz(ATR_TrailSL[1], 0) and close < nz(ATR_TrailSL[1], 0) ? -1 : nz(pos[1], 0)
pos := close[1] < nz(ATR_TrailSL[1], 0) and close > nz(ATR_TrailSL[1], 0) ? 1 : iff_3

atr_color = pos == -1 ? color.green : pos == 1 ? color.red : color.aqua
atrtrend = plot(ATR_TrailSL, 'Trailing StopLoss', atr_color, linewidth=2)

// ===  Stop Loss === //
slGroup = 'Stop Loss'
useSL = input.bool(false, title='╔══════   Enable   ══════╗', group=slGroup, tooltip='If you are using this strategy for Scalping or Futures market, we do not recommend using Stop Loss.')
SLbased = input.string(title='Based on', defval='Percent', options=['ATR', 'Percent'], group=slGroup, tooltip='ATR: Average True Range\nPercent: eg. 5%.')
multiATR = input.float(10.0, title='ATR   Mult', group=slGroup, inline='atr')
lengthATR = input.int(14, title='Length', group=slGroup, inline='atr')
SLPercent = input.float(5, title='Percent', group=slGroup) * 0.01
Shortposenter = input.bool(false, title='ShortPosition')

longStop = 0.0
shortStop = 0.0

if SLbased == 'ATR'
    longStop := ta.valuewhen(pos == 1, low, 0) - ta.valuewhen(pos == 1, ta.rma(ta.tr(true), lengthATR), 0) * multiATR
    longStopPrev = nz(longStop[1], longStop)
    longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

    shortStop := ta.valuewhen(pos == -1, ta.rma(ta.tr(true), lengthATR), 0) * multiATR + ta.valuewhen(pos == -1, high, 0)
    shortStopPrev = nz(shortStop[1], shortStop)
    shortStop := close[1] > shortStopPrev ? math.max(shortStop, shortStopPrev) : shortStop
    shortStop
if SLbased == 'Percent'
    longStop := strategy.position_avg_price * (1 - SLPercent)
    shortStop := strategy.position_avg_price * (1 + SLPercent)
    shortStop
exitLong  = pos == -1 

// === PlotColor === //
buySignal = pos == 1 and pos[1] == -1
plotshape(buySignal, title="Long", location=location.belowbar, style=shape.labelup, size=size.normal, color=color.new(color.green,50), text='Buy', textcolor=color.white)
exitSignal = pos == -1 and pos[1] == 1
plotshape(exitSignal, title="Exit", location=location.abovebar, style=shape.labeldown, size=size.normal, color=color.new(color.red,50), text='Exit', textcolor=color.white)

hPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0, editable = false)
longFill = (pos == 1 ? color.new(color.green,80) : na) 
shortFill = (pos == -1 ? color.new(color.red,80) : na)
fill(hPlot, atrtrend,color=longFill)
fill(hPlot,atrtrend, color=shortFill)

// === Strategy === //
strategy.entry('Long', strategy.long,limit = buyavg, when=window() and pos == 1,comment="Entry: "+str.tostring(buyavg))
strategy.close('Long', when=window() and exitLong , comment='Exit: '+str.tostring(sellavg) )

if Shortposenter
    strategy.entry('Short', strategy.short, when=window() and pos== -1,comment="Entry: "+str.tostring(close))
    strategy.close('Short', when=window() and pos == 1 , comment='Exit: ')

if useSL
    strategy.exit('Stop Loss', 'Long', stop=longStop)
    
// === Show StopLoss Price === //
if show_STOPLOSSprice
    if pos == -1
        label ShortStop = label.new(bar_index, na, 'SL: ' + str.tostring(ATR_TrailSL), color=color.green, textcolor=color.white, style=label.style_none, yloc=yloc.abovebar, size=size.small)
        label.delete(ShortStop[1])

    if pos == 1
        label LongStop = label.new(bar_index, na, 'SL: ' + str.tostring(ATR_TrailSL), color=color.red, textcolor=color.white, style=label.style_none, yloc=yloc.belowbar, size=size.small)
        label.delete(LongStop[1])