موونگ ایوریج اور سپر ٹرینڈ پر مبنی ٹریلنگ اسٹاپ نقصان کی حکمت عملی


تخلیق کی تاریخ: 2023-10-20 16:50:01 آخر میں ترمیم کریں: 2023-10-20 16:50:01
کاپی: 2 کلکس کی تعداد: 727
1
پر توجہ دیں
1617
پیروکار

موونگ ایوریج اور سپر ٹرینڈ پر مبنی ٹریلنگ اسٹاپ نقصان کی حکمت عملی

جائزہ

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

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

یہ حکمت عملی خرید و فروخت کے سگنل کا تعین کرنے کے لئے دو FRAMA اوسط لائنوں کا استعمال کرتی ہے اور سپر ٹرینڈ اشارے کے ساتھ مل کر فلٹرنگ کرتی ہے۔

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

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

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

ان خطرات کو کم کرنے کے لئے، آپ کو منتقل اوسط پیرامیٹرز کو ایڈجسٹ کر سکتے ہیں، سپر ٹرینڈ اشارے کی ترتیب کو بہتر بنانے کے، اور معقول طور پر ٹریکنگ سٹاپ نقصان کا استعمال کرتے ہوئے.

اصلاح کی سمت

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

  1. متحرک اوسط پیرامیٹرز کو بہتر بنائیں اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں

ہموار اثر اور حساسیت کا بہترین توازن تلاش کرنے کے لئے مختلف دورانیہ پیرامیٹرز کے مجموعے کی جانچ کی جاسکتی ہے۔

  1. اپنی مرضی کے مطابق سپر ٹرینڈ اشارے پیرامیٹرز

مختلف اے ٹی آر سائیکل اور ضرب پیرامیٹرز کی جانچ کی جاسکتی ہے ، جس سے اسٹاپ نقصان کو بہتر بنایا جاسکتا ہے۔

  1. دوسرے اشارے کے لیے فلٹر شامل کریں

مزید فلٹرنگ سگنل کے لئے ، تجارتی چینل کے اشارے ، اتار چڑھاؤ کے اشارے وغیرہ کو شامل کرنے کی جانچ کی جاسکتی ہے۔

  1. ٹریکنگ سٹاپ نقصان پیرامیٹرز کو بہتر بنائیں

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

  1. دیگر سٹاپ نقصان کی حکمت عملی کے ساتھ مل کر

جنرل اسٹاپ ، شاک اسٹاپ ، اور متحرک اسٹاپ جیسے حکمت عملیوں کے ساتھ مل کر ٹیسٹ کیا جاسکتا ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 03.freeman

//@version=4
// strategy("FRAMA strategy", overlay=true,precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR)
ma_src = input(title="MA FRAMA Source", type=input.source, defval=close)
ma_frama_len = input(title="MA FRAMA Length", type=input.integer, defval=12)
res = input(title="Resolution", type=input.resolution, defval="1W")
frama_FC = input(defval=1,minval=1, title="* Fractal Adjusted (FRAMA) Only - FC")
frama_SC = input(defval=200,minval=1, title="* Fractal Adjusted (FRAMA) Only - SC")
High = security(syminfo.tickerid, res, high)
Low = security(syminfo.tickerid, res, low)
source = security(syminfo.tickerid, res, ma_src)
enterRule = input(false,title = "Use supertrend for enter")
exitRule = input(false,title = "Use supertrend for exit")

ma(src, len) =>
    float result = 0
    int len1 = len/2
    e = 2.7182818284590452353602874713527
    w = log(2/(frama_SC+1)) / log(e) // Natural logarithm (ln(2/(SC+1))) workaround
    H1 = highest(High,len1)
    L1 = lowest(Low,len1)
    N1 = (H1-L1)/len1
    H2_ = highest(High,len1)
    H2 = H2_[len1]
    L2_ = lowest(Low,len1)
    L2 = L2_[len1]
    N2 = (H2-L2)/len1
    H3 = highest(High,len)
    L3 = lowest(Low,len)
    N3 = (H3-L3)/len
    dimen1 = (log(N1+N2)-log(N3))/log(2)
    dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
    alpha1 = exp(w*(dimen-1))
    oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
    oldN = (2-oldalpha)/oldalpha
    N = (((frama_SC-frama_FC)*(oldN-1))/(frama_SC-1))+frama_FC
    alpha_ = 2/(N+1)
    alpha = alpha_<2/(frama_SC+1)?2/(frama_SC+1):(alpha_>1?1:alpha_)
    frama = 0.0
    frama :=(1-alpha)*nz(frama[1]) + alpha*src
    result := frama
    result

frama = ma(sma(source,1),ma_frama_len)
signal = ma(frama,ma_frama_len)
plot(frama, color=color.red)
plot(signal, color=color.green)


longCondition = crossover(frama,signal)
shortCondition = crossunder(frama,signal)

Factor=input(3, minval=1,maxval = 100)
Pd=input(7, minval=1,maxval = 100)


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))

TrendUp = 0.0
TrendDown = 0.0
Trend = 0.0
Tsl = 0.0
TrendUp :=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown :=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl := Trend==1? TrendUp: TrendDown

linecolor = Trend == 1 ? color.green : color.red

//plot(Tsl, color = linecolor , style =  plot.style_line , linewidth = 2,title = "SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,color.green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, color.red,0,0)

plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=color.lime, maxheight=60, minheight=50, transp=0)
plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=color.red, maxheight=60, minheight=50, transp=0)


//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => enterRule? (longCondition and Trend ==1):longCondition                                             // functions can be used to wrap up and work out complex conditions
exitLong() => exitRule and Trend == -1

strategy.entry(id = "Buy", long = true, when = enterLong() )             // use function or simple condition to decide when to get in
strategy.close(id = "Buy", when = exitLong() )                         // ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => enterRule? (shortCondition and Trend ==-1):shortCondition
exitShort() => exitRule and Trend == 1

strategy.entry(id = "Sell", long = false, when = enterShort())
strategy.close(id = "Sell", when = exitShort() )

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()