متعدد سٹاپ نقصان کے ساتھ حکمت عملی کے بعد دن کے اندر رجحان

مصنف:چاؤ ژانگ، تاریخ: 2023-12-27 15:30:07
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کا مرکز متعدد اے ٹی آر اسٹاپ نقصان کے طریقہ کار میں ہے۔ یہ اے ٹی آر اسٹاپ کے 3 گروپس طے کرتا ہے - 5 اے ٹی آر ، 10 اے ٹی آر اور 15 اے ٹی آر۔ جب قیمت ان 3 اسٹاپس کو نیچے کی طرف توڑتی ہے تو ، اس سے رجحان کی تبدیلی کا اشارہ ہوتا ہے ، جس سے پوزیشن سے باہر نکلنے کا اشارہ ہوتا ہے۔ اس طرح کی ٹرپل اسٹاپ سیٹنگ مختصر مدت کے شور سے غلط سگنل کو مؤثر طریقے سے فلٹر کرتی ہے۔

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

جب قیمت 3 اے ٹی آر اسٹاپس سے اوپر ٹوٹ جاتی ہے تو انٹری سگنل ٹرگر ہوتا ہے۔ جب قیمت کسی بھی اے ٹی آر اسٹاپ یا رینکو برک رنگ کی تبدیلیوں کو مار دیتی ہے تو باہر نکلیں۔

فوائد

  • ٹرپل اسٹاپس مؤثر طریقے سے خطرات کو کنٹرول کرتے ہیں
  • بہتر رینکو اینٹوں سے ابتدائی رکنے کی سہولت ملتی ہے
  • رجحان اور اینٹوں کے چارٹ کو یکجا کرنے سے رجحانات کو پکڑنے کا یقین ہے
  • کثیر ٹائم فریم تجزیہ رجحان کی نشاندہی کو زیادہ قابل اعتماد بناتا ہے
  • ایڈجسٹ کرنے کے قابل پیرامیٹرز مختلف مارکیٹ کے نظام کے مطابق ہیں

خطرات اور بہتری

اہم خطرہ اسٹاپ نقصان کی دخول ہے جس کی وجہ سے طویل نقصانات ہوتے ہیں۔

  • اے ٹی آر سٹاپ کے کئی گنا کو ایڈجسٹ کریں - مضبوط رجحانات میں آرام اور کمزور رجحانات میں سخت کریں
  • حساسیت اور استحکام کو متوازن کرنے کے لئے ٹھیک ٹیوننگ Renko اینٹوں ATR ادوار
  • قابل اعتماد کے لئے دیگر سٹاپ اشارے شامل کریں مثال کے طور پر Donchian چینل
  • کنسولیڈیشن کے دوران whipsaws سے بچنے کے لئے فلٹرز کو لاگو کریں

نتیجہ

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


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Lancelot vstop intraday strategy", overlay=true, currency=currency.NONE, initial_capital = 100, commission_type=strategy.commission.percent, 
     commission_value=0.075, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

///Volatility Stop///
lengtha = input(title="Vstop length", type=input.integer, defval=26, minval=1)
mult1a = 5

atr_a = atr(lengtha)
max1a = 0.0
min1a = 0.0
is_uptrend_preva = false
stopa = 0.0
vstop_preva = 0.0
vstop1a = 0.0
is_uptrenda = false
is_trend_changeda = false
max_a = 0.0
min_a = 0.0
vstopa = 0.0
max1a := max(nz(max_a[1]), ohlc4)
min1a := min(nz(min_a[1]), ohlc4)
is_uptrend_preva := nz(is_uptrenda[1], true)
stopa := is_uptrend_preva ? max1a - mult1a * atr_a : min1a + mult1a * atr_a
vstop_preva := nz(vstopa[1])
vstop1a := is_uptrend_preva ? max(vstop_preva, stopa) : min(vstop_preva, stopa)
is_uptrenda := ohlc4 - vstop1a >= 0
is_trend_changeda := is_uptrenda != is_uptrend_preva
max_a := is_trend_changeda ? ohlc4 : max1a
min_a := is_trend_changeda ? ohlc4 : min1a
vstopa := is_trend_changeda ? is_uptrenda ? max_a - mult1a * atr_a : min_a + mult1a * atr_a : 
   vstop1a

///Volatility Stop///
lengthb = input(title="Vstop length", type=input.integer, defval=26, minval=1)
mult1b = 10

atr_b = atr(lengthb)
max1b = 0.0
min1b = 0.0
is_uptrend_prevb = false
stopb = 0.0
vstop_prevb = 0.0
vstop1b = 0.0
is_uptrendb = false
is_trend_changedb = false
max_b = 0.0
min_b = 0.0
vstopb = 0.0
max1b := max(nz(max_b[1]), ohlc4)
min1b := min(nz(min_b[1]), ohlc4)
is_uptrend_prevb := nz(is_uptrendb[1], true)
stopb := is_uptrend_prevb ? max1b - mult1b * atr_b : min1b + mult1b * atr_b
vstop_prevb := nz(vstopb[1])
vstop1b := is_uptrend_prevb ? max(vstop_prevb, stopb) : min(vstop_prevb, stopb)
is_uptrendb := ohlc4 - vstop1b >= 0
is_trend_changedb := is_uptrendb != is_uptrend_prevb
max_b := is_trend_changedb ? ohlc4 : max1b
min_b := is_trend_changedb ? ohlc4 : min1b
vstopb := is_trend_changedb ? is_uptrendb ? max_b - mult1b * atr_b : min_b + mult1b * atr_b : 
   vstop1b
   
///Volatility Stop///
lengthc = input(title="Vstop length", type=input.integer, defval=26, minval=1)
mult1c = 15

atr_c = atr(lengthc)
max1c = 0.0
min1c = 0.0
is_uptrend_prevc = false
stopc = 0.0
vstop_prevc = 0.0
vstop1c = 0.0
is_uptrendc = false
is_trend_changedc = false
max_c = 0.0
min_c = 0.0
vstopc = 0.0
max1c := max(nz(max_c[1]), ohlc4)
min1c := min(nz(min_c[1]), ohlc4)
is_uptrend_prevc := nz(is_uptrendc[1], true)
stopc := is_uptrend_prevc ? max1c - mult1c * atr_c : min1c + mult1c * atr_c
vstop_prevc := nz(vstopc[1])
vstop1c := is_uptrend_prevc ? max(vstop_prevc, stopc) : min(vstop_prevc, stopc)
is_uptrendc := ohlc4 - vstop1c >= 0
is_trend_changedc := is_uptrendc != is_uptrend_prevc
max_c := is_trend_changedc ? ohlc4 : max1c
min_c := is_trend_changedc ? ohlc4 : min1c
vstopc := is_trend_changedc ? is_uptrendc ? max_c - mult1c * atr_c : min_c + mult1c * atr_c : 
   vstop1c

plot(vstopa, color=is_uptrenda ? color.green : color.red, style=plot.style_line, linewidth=1)
plot(vstopb, color=is_uptrendb ? color.green : color.red, style=plot.style_line, linewidth=1)
plot(vstopc, color=is_uptrendc ? color.green : color.red, style=plot.style_line, linewidth=1)

vstoplongcondition = close > vstopa and close > vstopb and close > vstopc and vstopa > vstopb and vstopa > vstopc and vstopb > vstopc
vstoplongclosecondition = crossunder(close, vstopa)
vstopshortcondition = close < vstopa and close < vstopb and close < vstopc and vstopa < vstopb and vstopa < vstopc and vstopb < vstopc
vstopshortclosecondition = crossover(close, vstopa)

///Renko///
TF = input(title='TimeFrame', type=input.resolution, defval="240")
ATRlength = input(title="ATR length", type=input.integer, defval=60, minval=2, maxval=100)
SMAlength = input(title="SMA length", type=input.integer, defval=5, minval=2, maxval=100)
SMACurTFlength = input(title="SMA CurTF length", type=input.integer, defval=20, minval=2, maxval=100)

HIGH = security(syminfo.tickerid, TF, high)
LOW = security(syminfo.tickerid, TF, low)
CLOSE = security(syminfo.tickerid, TF, close)
ATR = security(syminfo.tickerid, TF, atr(ATRlength))
SMA = security(syminfo.tickerid, TF, sma(close, SMAlength))
SMACurTF = sma(close, SMACurTFlength)

RENKOUP = float(na)
RENKODN = float(na)
H = float(na)
COLOR = color(na)
BUY = int(na)
SELL = int(na)
UP = bool(na)
DN = bool(na)
CHANGE = bool(na)

RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1]
COLOR := na(COLOR[1]) ? color.white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

if not CHANGE and close >= RENKOUP[1] + H * 3
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 3
    RENKODN := RENKOUP[1] + ATR * 2
    COLOR := color.lime
    SELL := 0
    BUY := BUY + 3
    BUY

if not CHANGE and close >= RENKOUP[1] + H * 2
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 2
    RENKODN := RENKOUP[1] + ATR
    COLOR := color.lime
    SELL := 0
    BUY := BUY + 2
    BUY

if not CHANGE and close >= RENKOUP[1] + H
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR
    RENKODN := RENKOUP[1]
    COLOR := color.lime
    SELL := 0
    BUY := BUY + 1
    BUY

if not CHANGE and close <= RENKODN[1] - H * 3
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 3
    RENKOUP := RENKODN[1] - ATR * 2
    COLOR := color.red
    BUY := 0
    SELL := SELL + 3
    SELL

if not CHANGE and close <= RENKODN[1] - H * 2
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 2
    RENKOUP := RENKODN[1] - ATR
    COLOR := color.red
    BUY := 0
    SELL := SELL + 2
    SELL

if not CHANGE and close <= RENKODN[1] - H
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR
    RENKOUP := RENKODN[1]
    COLOR := color.red
    BUY := 0
    SELL := SELL + 1
    SELL

plotshape(UP, style=shape.arrowup, location=location.abovebar, size=size.normal)
plotshape(DN, style=shape.arrowdown, location=location.belowbar, size=size.normal)

p1 = plot(RENKOUP, style=plot.style_line, linewidth=1, color=COLOR)
p2 = plot(RENKODN, style=plot.style_line, linewidth=1, color=COLOR)
fill(p1, p2, color=COLOR, transp=80)

///Long Entry///
longcondition = vstoplongcondition and UP
if (longcondition)
    strategy.entry("Long", strategy.long)
    
///Long exit///
closeconditionlong = vstoplongclosecondition or DN
if (closeconditionlong)
    strategy.close("Long")
    
// ///Short Entry///
// shortcondition = vstopshortcondition and DN
// if (shortcondition)
//     strategy.entry("Short", strategy.short)
    
// ///Short exit///
// closeconditionshort = vstopshortclosecondition or UP
// if (closeconditionshort)
//     strategy.close("Short")

مزید