ڈوئل موونگ ایوریج اور StochRSI کراس اوور کے ساتھ رجحان کی پیروی کرنے والی حکمت عملی


تخلیق کی تاریخ: 2024-01-25 15:21:46 آخر میں ترمیم کریں: 2024-01-25 15:21:46
کاپی: 0 کلکس کی تعداد: 1136
1
پر توجہ دیں
1617
پیروکار

ڈوئل موونگ ایوریج اور StochRSI کراس اوور کے ساتھ رجحان کی پیروی کرنے والی حکمت عملی

جائزہ

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

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

یہ حکمت عملی ایک دوہری متحرک اوسط سسٹم بناتی ہے جس میں تیز رفتار اوسط EMA ((12) اور سست رفتار اوسط EMA ((25) کا استعمال کیا جاتا ہے ، جس میں ایک خرید سگنل پیدا ہوتا ہے جب تیز رفتار لائن پر سست رفتار لائن کو عبور کیا جاتا ہے ، اور فروخت سگنل پیدا ہوتا ہے جب تیز رفتار لائن کے نیچے سست رفتار لائن کو عبور کیا جاتا ہے ، جس سے بڑے رجحان کی سمت کا تعین کیا جاسکتا ہے۔

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

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

طاقت کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس سے پہلے ہی رجحان کی سمت اور ممکنہ داخلے کے مقامات کا پتہ لگایا جاسکتا ہے۔ جب رجحان شروع ہوتا ہے تو ایک منتقل اوسط نظام سگنل پیدا کرسکتا ہے ، جبکہ اسٹچ آر ایس آئی اشارے کا اضافہ جعلی توڑ کو مؤثر طریقے سے فلٹر کرسکتا ہے اور غلط تجارت سے بچ سکتا ہے۔

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

خطرے کا تجزیہ

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

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

اصلاح کی سمت

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

  1. ڈبل منتقل اوسط کے پیرامیٹرز کو ایڈجسٹ کریں تاکہ اوسط لائن کا دورانیہ استعمال کیا جاسکے جو رجحانات کو پکڑنے کے لئے زیادہ موزوں ہے۔

  2. اسٹوک آر ایس آئی کے پیرامیٹرز کو بہتر بنانے کے لئے ، زیادہ معقول اوورلوڈ اور اوور سیلنگ کے لئے معیارات تیار کرنے کے لئے؛

  3. زیادہ منافع کے حصول کے لئے ایکٹ کی مقدار میں اضافہ یا اسٹاپ نقصان کی سطح کو ایڈجسٹ کرنا؛

  4. دوسرے اشارے کے ساتھ مل کر فلٹرنگ کی شرائط کے طور پر ، غیر موثر سگنل کو مزید کم کریں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
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/
// © btc_charlie / @TheParagonGrp

//@version=5
strategy('BlackBit Trader XO Macro Trend Scanner', overlay=true)

// Variables
var ok = 0
var countBuy = 0
var countSell = 0
src = input(close, title='OHLC Type')
i_fastEMA = input(12, title='Fast EMA')
i_slowEMA = input(25, title='Slow EMA')
i_defEMA = input(25, title='Consolidated EMA')

// Allow the option to show single or double EMA
i_bothEMAs = input(title='Show Both EMAs', defval=true)

// Define EMAs
v_fastEMA = ta.ema(src, i_fastEMA)
v_slowEMA = ta.ema(src, i_slowEMA)
v_biasEMA = ta.ema(src, i_defEMA)

// Color the EMAs
emaColor = v_fastEMA > v_slowEMA ? color.green : v_fastEMA < v_slowEMA ? color.red : #FF530D

// Plot EMAs
plot(i_bothEMAs ? na : v_biasEMA, color=emaColor, linewidth=3, title='Consolidated EMA')
plot(i_bothEMAs ? v_fastEMA : na, title='Fast EMA', color=emaColor)
plot(i_bothEMAs ? v_slowEMA : na, title='Slow EMA', color=emaColor)

// Colour the bars
buy = v_fastEMA > v_slowEMA
sell = v_fastEMA < v_slowEMA

if buy
    countBuy += 1
    countBuy

if buy
    countSell := 0
    countSell

if sell
    countSell += 1
    countSell

if sell
    countBuy := 0
    countBuy

buysignal = countBuy < 2 and countBuy > 0 and countSell < 1 and buy and not buy[1]
sellsignal = countSell > 0 and countSell < 2 and countBuy < 1 and sell and not sell[1]

barcolor(buysignal ? color.green : na)
barcolor(sellsignal ? color.red : na)


bull = countBuy > 1
bear = countSell > 1

barcolor(bull ? color.green : na)
barcolor(bear ? color.red : na)

// Set Alerts

// alertcondition(ta.crossover(v_fastEMA, v_slowEMA), title='Bullish EMA Cross', message='Bullish EMA crossover')
// alertcondition(ta.crossunder(v_fastEMA, v_slowEMA), title='Bearish EMA Cross', message='Bearish EMA Crossover')

// Stoch RSI code

smoothK = input.int(3, 'K', minval=1)
smoothD = input.int(3, 'D', minval=1)
lengthRSI = input.int(14, 'RSI Length', minval=1)
lengthStoch = input.int(14, 'Stochastic Length', minval=1)

rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

bandno0 = input.int(80, minval=1, title='Upper Band', group='Bands (change this instead of length in Style for Stoch RSI colour to work properly)')
bandno2 = input.int(50, minval=1, title='Middle Band', group='Bands (change this instead of length in Style for Stoch RSI colour to work properly)')
bandno1 = input.int(20, minval=1, title='Lower Band', group='Bands (change this instead of length in Style for Stoch RSI colour to work properly)')

// Alerts

crossoverAlertBgColourMidOnOff = input.bool(title='Crossover Alert Background Colour (Middle Level) [ON/OFF]', group='Crossover Alerts', defval=false)
crossoverAlertBgColourOBOSOnOff = input.bool(title='Crossover Alert Background Colour (OB/OS Level) [ON/OFF]', group='Crossover Alerts', defval=false)

crossoverAlertBgColourGreaterThanOnOff = input.bool(title='Crossover Alert >input [ON/OFF]', group='Crossover Alerts', defval=false)
crossoverAlertBgColourLessThanOnOff = input.bool(title='Crossover Alert <input [ON/OFF]', group='Crossover Alerts', defval=false)

maTypeChoice = input.string('EMA', title='MA Type', group='Moving Average', options=['EMA', 'WMA', 'SMA', 'None'])
maSrc = input.source(close, title='MA Source', group='Moving Average')
maLen = input.int(200, minval=1, title='MA Length', group='Moving Average')

maValue = if maTypeChoice == 'EMA'
    ta.ema(maSrc, maLen)
else if maTypeChoice == 'WMA'
    ta.wma(maSrc, maLen)
else if maTypeChoice == 'SMA'
    ta.sma(maSrc, maLen)
else
    0

crossupCHECK = maTypeChoice == 'None' or open > maValue and maTypeChoice != 'None'
crossdownCHECK = maTypeChoice == 'None' or open < maValue and maTypeChoice != 'None'

crossupalert = crossupCHECK and ta.crossover(k, d) and (k < bandno2 or d < bandno2)
crossdownalert = crossdownCHECK and ta.crossunder(k, d) and (k > bandno2 or d > bandno2)
crossupOSalert = crossupCHECK and ta.crossover(k, d) and (k < bandno1 or d < bandno1)
crossdownOBalert = crossdownCHECK and ta.crossunder(k, d) and (k > bandno0 or d > bandno0)

aboveBandalert = ta.crossunder(k, bandno0)
belowBandalert = ta.crossover(k, bandno1)

bgcolor(color=crossupalert and crossoverAlertBgColourMidOnOff ? #4CAF50 : crossdownalert and crossoverAlertBgColourMidOnOff ? #FF0000 : na, title='Crossover Alert Background Colour (Middle Level)', transp=70)
bgcolor(color=crossupOSalert and crossoverAlertBgColourOBOSOnOff ? #fbc02d : crossdownOBalert and crossoverAlertBgColourOBOSOnOff ? #000000 : na, title='Crossover Alert Background Colour (OB/OS Level)', transp=70)

bgcolor(color=aboveBandalert and crossoverAlertBgColourGreaterThanOnOff ? #ff0014 : crossdownalert and crossoverAlertBgColourMidOnOff ? #FF0000 : na, title='Crossover Alert - K > Upper level', transp=70)
bgcolor(color=belowBandalert and crossoverAlertBgColourLessThanOnOff ? #4CAF50 : crossdownalert and crossoverAlertBgColourMidOnOff ? #FF0000 : na, title='Crossover Alert - K < Lower level', transp=70)

// alertcondition(crossupalert or crossdownalert, title='Stoch RSI Crossover', message='STOCH RSI CROSSOVER')

// Calculate start/end date and time condition
startDate = input(timestamp('2000-12-24T00:00:00'),group = "---------TIME RANGE SETTINGS---------")
finishDate = input(timestamp('2029-02-26T00:00:00'),group = "---------TIME RANGE SETTINGS---------")
time_cond = true


//ema filter
emalen = input(200,"EMA Filter Length",group = "EMA FILTER SETTINGS")
emasource = input(close,"EMA Filter Source",group = "EMA FILTER SETTINGS")
ema_fil = ta.ema(emasource,emalen)
plot(ema_fil,"EMA Filter")

//macd
fast_length = input(title="Fast Length", defval=26,group = "MACD FILTER SETTINGS")
slow_length = input(title="Slow Length", defval=100,group = "MACD FILTER SETTINGS")
src_macd = input(title="Source", defval=close,group = "MACD FILTER SETTINGS")
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9,group = "MACD FILTER SETTINGS")
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"],group = "MACD FILTER SETTINGS")
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"],group = "MACD FILTER SETTINGS")

// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

//tpsl
takeprofit=input.float(defval=0.3,title="Enter The Take Profit %",group="TP/SL CONDITION INPUTS HERE")/100
stoploss=input.float(defval=0.16,title="Enter The Stop %",group="TP/SL CONDITION INPUTS HERE")/100
tp = strategy.opentrades.entry_price(0)*takeprofit/syminfo.mintick
sl = strategy.opentrades.entry_price(0)*stoploss/syminfo.mintick

lg_rule = buysignal and hist > 0 and close > ema_fil
sh_rule = sellsignal and hist < 0 and close < ema_fil

// Plot Bull/Bear

plotshape(lg_rule, title='Bull', text='Bull', style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.black, 0), size=size.tiny)
plotshape(sh_rule, title='Bear', text='Bear', style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.black, 0), size=size.tiny)

//alert
lg_entryal = input("Long entry","Long entry alert",group = "ALERT MESSAGE SETTINGS")
sh_entryal = input("Short entry","Short entry alert",group = "ALERT MESSAGE SETTINGS")

if lg_rule and time_cond and barstate.isconfirmed
    strategy.entry("LONG",strategy.long)
    alert(lg_entryal,alert.freq_once_per_bar_close)
if strategy.position_size > 0
    strategy.exit("LONG EX","LONG",loss = sl,profit = tp,comment_loss = "LONG SL",comment_profit = "LONG TP")

if sh_rule and time_cond and barstate.isconfirmed
    strategy.entry("SHORT",strategy.short)
    alert(sh_entryal,alert.freq_once_per_bar_close)

if strategy.position_size < 0
    strategy.exit("SHORT EX","SHORT",loss = sl,profit = tp,comment_loss = "SHORT SL",comment_profit = "SHORT TP")

//end