واضح ٹرینڈ ٹریکنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-28 16:07:12
ٹیگز:

جائزہ

اس حکمت عملی میں متعدد تکنیکی اشارے کو یکجا کیا گیا ہے تاکہ واضح رجحانات کا سراغ لگایا جاسکے۔ اس کے اہم اجزاء یہ ہیں:

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

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

اصول

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

دوسرا، اسٹوکاسٹک اوسیلیٹر سے KD لائنز کا استعمال oversold/overbought حالات کا پتہ لگانے کے لئے کیا جاتا ہے، جو عام طور پر الٹ جانے کے مواقع کا مطلب ہوتا ہے۔

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

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

آخر میں، قیمت اور آر ایس آئی کے درمیان اختلافات بھی آنے والے رجحان کی تبدیلی کی نشاندہی کرسکتے ہیں۔

ان تمام سگنلز کو یکجا کرکے ، رجحان کی زیادہ درست شناخت کی جاسکتی ہے۔ جب ایم اے کے مابین سنہری کراس ظاہر ہوتا ہے تو حکمت عملی لمبی ہوگی ، اور جب مردہ کراس ہوتا ہے تو مختصر ہوجائے گی۔

فوائد

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

خطرات

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

خطرے کا انتظام:

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

اصلاحات

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

  1. مختلف مصنوعات کے لئے پیرامیٹرز کو خود کار طریقے سے ایڈجسٹ کرنے کے لئے مشین سیکھنے کا استعمال کریں

  2. مارکیٹ کے حالات کی بنیاد پر اشارے کے وزن کو متحرک طور پر ایڈجسٹ کرنے کے لئے ماڈل کی تشخیص شامل کریں

  3. مارکیٹ کی اتار چڑھاؤ کی بنیاد پر موافقت پذیر اسٹاپ نقصان کو نافذ کریں

  4. زیادہ درست رجحان کی پیشن گوئی کے لئے گہری سیکھنے کو شامل کریں

  5. تنازعات کو حل کرنے اور جھوٹے سگنل کو کم کرنے کے لئے آٹو سگنل مفاہمت بنائیں

  6. مجموعی نظام کی پیشن گوئی کے لئے مزید اشارے کو ضم کریں

  7. پیرامیٹر انحصار کو کم کرنے کے لئے پیرامیٹر کے بغیر اشارے کی تلاش کریں

نتیجہ

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


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

//@version=3
//Market Cipher Update 2 - updated 8th Oct 2019

//Momentum Curves with green and red dots
strategy(title="MarketCipher B", shorttitle="MarketCipher B")
n1 = input(9, "Channel Length")
n2 = input(12, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
osLevel3 = input(-100, "Over Sold Level 2")

 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,3)

plot(0, color=gray, title="Zero Line")
plot(obLevel1, color=red, style=3, title="Bottom")
plot(osLevel1, color=green, style=3, title="Top")
plot(wt1, color=#BFE4FF, style=4, title= "Lt Blue Wave")
plot(wt2, color=#673ab7, style=4, title="Blue Wave", transp=40)
plot(wt1-wt2, color=yellow, style=4, transp=40, title="wave1-wave2")

//green dots and crosses
plotshape(crossover(wt1, wt2) and osLevel1 ? wt2 : na, title="Pos Crossover", location=location.absolute, style=shape.cross, size=size.tiny, color=#3FFF00, transp=20)
plotshape(crossover(wt2, wt1) and osLevel1 ? wt1 : na, title="Neg Crossover", location=location.absolute, style=shape.cross, size=size.tiny, color=red, transp=20)
plotshape(crossover(wt1, wt2) and wt2 < -59 ? wt2 : na, title="Pos Crossover", location=location.bottom, style=shape.circle, size=size.tiny, color=#3FFF00, transp=20)
plotshape(crossover(wt2, wt1) and wt1 > 59 ? wt2 : na, title="Neg Crossover", location=location.top, style=shape.circle, size=size.tiny, color=red, transp=20)

buy= crossover(wt1,wt2) // Define our buy/sell conditions, using pine inbuilt functions.
sell= crossover(wt2,wt1)
ordersize=floor(strategy.equity/close) // To dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when=buy) // Buys when buy condition met
strategy.close("long", when = sell ) // Closes position when sell condition met
strategy.entry("short",strategy.short,ordersize,when=sell)
strategy.close("short",when = buy )

//soch RSI with divergences
smoothKw = input(3, minval=1)
smoothDw = input(3, minval=1)
lengthRSIw = input(14, minval=1)
lengthStochw = input(14, minval=1)
uselogw = input(true, title="Log")
srcInw = input(close,  title="Source")
showdivsw = input(true, title="Show Divergences")
showhiddenw = input(false, title="Show Hidden Divergences")
showchanw = input(false, title="Show Divergences Channel")


srcw = uselogw ? log(srcInw) : srcInw
rsi1w = rsi(srcw, lengthRSIw)
kkw = sma(stoch(rsi1w, rsi1w, rsi1w, lengthStochw), smoothKw)
dw = sma(kkw, smoothDw)
hmw = input(false, title="Use Average of both K & D")
kw = hmw ? avg(kkw, dw) : kkw

aw = plot(kkw, color=blue, linewidth=1, transp=0, title="K")
bw = plot(dw, color=orange, linewidth=1, transp=0, title="D")
fw = kkw >= dw ? blue : orange
fill(aw, bw, title="KD Fill", color=white)


//------------------------------
//@RicardoSantos' Divergence Script

f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0]
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0]
f_fractalize(_src)=>f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0
//-------------------------
fractal_top = f_fractalize(kw) > 0 ? kw[2] : na
fractal_bot = f_fractalize(kw) < 0 ? kw[2] : na

high_prev = valuewhen(fractal_top, kw[2], 0)[2]
high_price = valuewhen(fractal_top, high[2], 0)[2]
low_prev = valuewhen(fractal_bot, kw[2], 0)[2]
low_price = valuewhen(fractal_bot, low[2], 0)[2]

regular_bearish_diva = fractal_top and high[2] > high_price and kw[2] < high_prev
hidden_bearish_diva = fractal_top and high[2] < high_price and kw[2] > high_prev
regular_bullish_diva = fractal_bot and low[2] < low_price and kw[2] > low_prev
hidden_bullish_diva = fractal_bot and low[2] > low_price and kw[2] < low_prev
//-------------------------
plot(showchanw?fractal_top:na, title="Top Div Channel", offset=-2, color=gray)
plot(showchanw?fractal_bot:na, title="Bottom Div Channel", offset=-2, color=gray)

col1 = regular_bearish_diva ? red : hidden_bearish_diva and showhiddenw ? red : na
col2 = regular_bullish_diva ? green : hidden_bullish_diva and showhiddenw ? green : na
col3 = regular_bearish_diva ? red : hidden_bearish_diva and showhiddenw ? red : showchanw ? gray : na
col4 = regular_bullish_diva ? green : hidden_bullish_diva and showhiddenw ? green : showchanw ? gray : na

plot(title='H F', series=showdivsw and fractal_top ? kw[2] : na, color=col1, linewidth=2, offset=-2)
plot(title='L F', series=showdivsw and fractal_bot ? kw[2] : na, color=col2, linewidth=2, offset=-2)
plot(title='H D', series=showdivsw and fractal_top ? kw[2] : na, style=circles, color=col3, linewidth=3, offset=-2)
plot(title='L D', series=showdivsw and fractal_bot ? kw[2] : na, style=circles, color=col4, linewidth=3, offset=-2)

plotshape(title='+RBD', series=showdivsw and regular_bearish_diva ? kw[2] : na, text='R', style=shape.labeldown, location=location.absolute, color=red, textcolor=white, offset=-2)
plotshape(title='+HBD', series=showdivsw and hidden_bearish_diva and showhiddenw ? kw[2] : na, text='H', style=shape.labeldown, location=location.absolute, color=red, textcolor=white, offset=-2)
plotshape(title='-RBD', series=showdivsw and regular_bullish_diva ? kw[2] : na, text='R', style=shape.labelup, location=location.absolute, color=green, textcolor=white, offset=-2)
plotshape(title='-HBD', series=showdivsw and hidden_bullish_diva  and showhiddenw ? kw[2] : na, text='H', style=shape.labelup, location=location.absolute, color=green, textcolor=white, offset=-2)


//money flow
colorRed = #ff0000
colorGreen = #03ff00

ma(matype, src, length) =>
    if matype == "RMA"
        rma(src, length)
    else
        if matype == "SMA"
            sma(src, length)
        else
            if matype == "EMA"
                ema(src, length)
            else
                if matype == "WMA"
                    wma(src, length)
                else
                    if matype == "VWMA"
                        vwma(src, length)
                    else
                        src

rsiMFIperiod = input(60, "RSI+MFI Period")
rsiMFIMultiplier = input(190, "RSI+MFI Area multiplier")
MFRSIMA = input(defval="SMA", title="MFRSIMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA"])

candleValue = (close - open) / (high - low)
MVC = ma(MFRSIMA, candleValue, rsiMFIperiod)
color_area = MVC > 0 ? green : red

RSIMFIplot = plot(MVC * rsiMFIMultiplier, title="RSI+MFI Area", color=color_area, transp=35)
fill(RSIMFIplot, plot(0), color_area, transp=50)

//rsi
//Bullish Divergence (green triangle)
//Hidden Bullish Divergence (green circle)
//Bearish Divergence (red triangle)
//Hidden Bearish Divergence (red circle)

lend = 14
bearish_div_rsi = input(60, "Min Bearish RSI",  minval=50, maxval=100)
bullish_div_rsi = input(40, "Max Bullish RSI",  minval=0, maxval=50)

// RSI code
rsi = rsi(close, lend)
plot(rsi,  color=#6DFFE1, linewidth=2, transp=0, title="RSI")

// DIVS code
xbars = 60
hb = abs(highestbars(rsi, xbars)) // Finds bar with highest value in last X bars
lb = abs(lowestbars(rsi, xbars)) // Finds bar with lowest value in last X bars

// Defining variable values, mandatory in Pine 3
max = na
max_rsi = na
min = na
min_rsi = na
bearish_div = na
bullish_div = na
hidden_bearish_div = na
hidden_bullish_div = na
div_alert = na
hidden_div_alert = na

// If bar with lowest / highest is current bar, use it's value
max := hb == 0 ? close : na(max[1]) ? close : max[1]
max_rsi := hb == 0 ? rsi : na(max_rsi[1]) ? rsi : max_rsi[1]
min := lb == 0 ? close : na(min[1]) ? close : min[1]
min_rsi := lb == 0 ? rsi : na(min_rsi[1]) ? rsi : min_rsi[1]

// Compare high of current bar being examined with previous bar's high
// If curr bar high is higher than the max bar high in the lookback window range
if close > max // we have a new high
    max := close // change variable "max" to use current bar's high value
if rsi > max_rsi // we have a new high
    max_rsi := rsi // change variable "max_rsi" to use current bar's RSI value
if close < min // we have a new low
    min := close // change variable "min" to use current bar's low value
if rsi < min_rsi // we have a new low
    min_rsi := rsi // change variable "min_rsi" to use current bar's RSI value

// Detects divergences between price and indicator with 1 candle delay so it filters out repeating divergences
if (max[1] > max[2]) and (rsi[1] < max_rsi) and (rsi <= rsi[1]) and (rsi[1] >= bearish_div_rsi)
    bearish_div := true
	div_alert := true
if (min[1] < min[2]) and (rsi[1] > min_rsi) and (rsi >= rsi[1]) and (rsi[1] <= bullish_div_rsi)
    bullish_div := true
	div_alert := true
// Hidden divergences
if (max[1] < max[2]) and (rsi[1] < max_rsi)
	hidden_bearish_div := true
	hidden_div_alert := true
if (min[1] > min[2]) and (rsi[1] > min_rsi)
	hidden_bullish_div := true
	hidden_div_alert := true
// Alerts
alertcondition(div_alert, title='RSI Divergence', message='RSI Divergence')
alertcondition(hidden_div_alert, title='Hidden RSI Divergence', message='Hidden RSI Divergence')

// Plots divergences with offest
plotshape((bearish_div ? rsi[1] + 3 : na), location=location.absolute, style=shape.diamond, color=#ff0000, size=size.tiny, transp=0, offset=0, title="RSI Bear Div")
plotshape((bullish_div ? rsi[1] - 3 : na), location=location.absolute, style=shape.diamond, color=#00ff01, size=size.tiny, transp=0, offset=0, title="RSI Bull Div")
plotshape((hidden_bearish_div ? rsi[1] + 3 : na), location=location.absolute, style=shape.circle, color=#ff0000, size=size.tiny, transp=0, offset=0, title="RSI Bear hDiv")
plotshape((hidden_bullish_div ? rsi[1] - 3 : na), location=location.absolute, style=shape.circle, color=#00ff01, size=size.tiny, transp=0, offset=0, title="RSI Bull hDiv")


//wave divergences
WTCross = cross(wt1, wt2)
WTCrossUp = wt2 - wt1 <= 0
WTCrossDown = wt2 - wt1 >= 0
WTFractal_top = f_fractalize(wt1) > 0 and wt1[2] ? wt1[2] : na
WTFractal_bot = f_fractalize(wt1) < 0 and wt1[2] ? wt1[2] : na

WTHigh_prev  = valuewhen(WTFractal_top, wt1[2], 0)[2]
WTHigh_price = valuewhen(WTFractal_top, high[2], 0)[2]
WTLow_prev  = valuewhen(WTFractal_bot, wt1, 0)[2]
WTLow_price  = valuewhen(WTFractal_bot, low[2], 0)[2]

WTRegular_bearish_div = WTFractal_top and high[2] > WTHigh_price and wt1[2] < WTHigh_prev
WTRegular_bullish_div = WTFractal_bot and low[2] < WTLow_price and wt1[2] > WTLow_prev

bearWTSignal = WTRegular_bearish_div and WTCrossDown
bullWTSignal = WTRegular_bullish_div and WTCrossUp

WTCol1 = bearWTSignal ? #ff0000 : na
WTCol2 = bullWTSignal ? #00FF00EB : na

plot(series = WTFractal_top ? wt1[2] : na, title='Bearish Divergence', color=WTCol1, linewidth=5, transp=60)
plot(series = WTFractal_bot ? wt1[2] : na, title='Bullish Divergence', color=WTCol2, linewidth=5, transp=60)


//2nd wave
WTFractal_topa = f_fractalize(wt2) > 0 and wt2[2] ? wt2[2] : na
WTFractal_bota = f_fractalize(wt2) < 0 and wt2[2] ? wt2[2] : na

WTHigh_preva  = valuewhen(WTFractal_topa, wt2[2], 0)[2]
WTHigh_pricea = valuewhen(WTFractal_topa, high[2], 0)[2]
WTLow_preva  = valuewhen(WTFractal_bota, wt2, 0)[2]
WTLow_pricea  = valuewhen(WTFractal_bota, low[2], 0)[2]


WTRegular_bearish_diva = WTFractal_topa and high[2] > WTHigh_pricea and wt2[2] < WTHigh_preva
WTRegular_bullish_diva = WTFractal_bota and low[2] < WTLow_pricea and wt2[2] > WTLow_preva

bearWTSignala = WTRegular_bearish_diva and WTCrossDown
bullWTSignala = WTRegular_bullish_diva and WTCrossUp

WTCol1a = bearWTSignala ? #ff0000 : na
WTCol2a = bullWTSignala ? #00FF00EB : na

plot(series = WTFractal_topa ? wt2[2] : na, title='Bearish Divergence', color=WTCol1a, linewidth=5, transp=60)
plot(series = WTFractal_bota ? wt2[2] : na, title='Bullish Divergence', color=WTCol2a, linewidth=5, transp=60)


مزید