یہ حکمت عملی رجحان کی سمت اور انٹری پوائنٹس کی نشاندہی کرنے کے لئے ڈبل چلتی اوسط اور اسٹاک آر ایس آئی اشارے کو جوڑتی ہے۔ اس کی بنیادی خصوصیت یہ ہے کہ یہ رجحان کے ابتدائی مرحلے میں مارکیٹ میں داخل ہوسکتا ہے ، جبکہ اسٹاک آر ایس آئی کی زیادہ خرید / فروخت کی خصوصیات کو غلط بریک آؤٹس کو فلٹر کرنے کے لئے استعمال کرتا ہے۔
یہ حکمت عملی دوہری حرکت پذیر اوسط نظام کی تعمیر کے لئے تیز رفتار اوسط ای ایم اے (12) اور سست حرکت پذیر اوسط ای ایم اے (25) کا استعمال کرتی ہے۔ جب تیز لائن سست لائن سے اوپر عبور کرتی ہے تو ، خرید کا اشارہ پیدا ہوتا ہے۔ جب تیز لائن سست لائن سے نیچے عبور کرتی ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے۔ اس کا استعمال اہم رجحان کی سمت کا تعین کرنے کے لئے کیا جاتا ہے۔
اس کے ساتھ ہی ، حکمت عملی میں اسٹاک آر ایس آئی کراس اوور شامل ہے تاکہ انٹری ٹائمنگ کی مزید نشاندہی کی جاسکے۔ اسٹاک آر ایس آئی اسٹوکاسٹک کے ڈی جے اور آر ایس آئی کو جوڑتا ہے۔ جب K لائن oversold زون سے اوپر کی طرف D لائن کو عبور کرتی ہے تو ، خرید سگنل تیار ہوتا ہے۔ جب K لائن overbought زون سے نیچے کی طرف D لائن کو عبور کرتی ہے تو ، فروخت سگنل تیار ہوتا ہے۔
صرف اس صورت میں جب ڈبل حرکت پذیر اوسط سگنل پیدا کرتا ہے اور اسٹاک آر ایس آئی بھی اسی سگنل کو تیار کرتا ہے تو ، یہ حکمت عملی پوزیشنیں کھول دے گی۔ اس سے کچھ جھوٹے بریک آؤٹ کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے اور غلط تجارت سے بچا جاسکتا ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ رجحان کی سمت اور ممکنہ انٹری پوائنٹس کو جلد ہی اندازہ لگانے کے قابل ہے۔ چلتی اوسط نظام رجحان کے آغاز پر سگنل تیار کرسکتا ہے ، جبکہ اسٹاک آر ایس آئی کا اضافہ مؤثر طریقے سے جھوٹے بریک آؤٹ کو فلٹر کرتا ہے اور غلط تجارت سے بچتا ہے۔
اس کے علاوہ ، اس حکمت عملی میں رجحان تجزیہ اور زیادہ خرید / فروخت کا فیصلہ دونوں کا امتزاج ہوتا ہے ، جس میں رجحان کی پیروی اور اوسط الٹ دونوں کی طاقت ہوتی ہے۔ چاہے رجحانات کی پیروی کریں یا کم خریدیں اور زیادہ فروخت کریں ، یہ حکمت عملی تمام پہلوؤں میں مواقع حاصل کرسکتی ہے۔
اس حکمت عملی کا بنیادی خطرہ خود ڈبل حرکت پذیر اوسط نظام کی تاخیر میں ہے۔ جب مارکیٹ میں اچانک پرتشدد تبدیلیاں آتی ہیں تو ، ڈبل حرکت پذیر اوسط نظام کو سگنل پیدا کرنے میں اکثر وقت لگتا ہے ، آسانی سے بہترین انٹری ٹائمنگ سے محروم ہوجاتا ہے۔
اس کے علاوہ ، اسٹاک آر ایس آئی غلط سگنل بھی پیدا کرسکتا ہے ، جس کی وجہ سے غیر ضروری تجارت ہوتی ہے ، خاص طور پر اس طرح کے بازاروں میں جہاں K اور D لائن اکثر کراس ہوسکتی ہے ، جس سے غیر قانونی کارروائیوں کا زیادہ خطرہ لاحق ہوتا ہے۔
اس حکمت عملی کی اصلاح بنیادی طور پر کئی پہلوؤں پر مرکوز ہے:
دوہری چلتی اوسط کے پیرامیٹرز کو ایڈجسٹ کریں تاکہ چلتی اوسط کے ادوار کو اپنایا جا سکے جو رجحانات کو پکڑنے کے لئے زیادہ سازگار ہوں۔
اسٹاک آر ایس آئی کے پیرامیٹرز کو بہتر بنائیں تاکہ زیادہ سمجھدار اوور بک / اوور سیلنگ کے معیار پیدا کیے جائیں۔
آرڈر کا سائز بڑھانا یا زیادہ منافع حاصل کرنے کے لئے اسٹاپ نقصان / منافع حاصل کرنے کو ایڈجسٹ کرنا۔
غلط سگنل کو مزید کم کرنے کے لئے فلٹر کے حالات کے طور پر دیگر اشارے شامل کریں.
مجموعی طور پر ، یہ حکمت عملی درمیانی سے طویل مدتی رجحانات کو پکڑنے کے لئے بہت موزوں ہے ، جس میں رجحانات کے ابتدائی مرحلے میں منافع کی بڑی صلاحیت موجود ہے۔ اسٹاک آر ایس آئی کو معاون جج کے طور پر جوڑنے سے گمراہ کن سگنل کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے اور غیر ضروری نقصانات سے بچا جاسکتا ہے۔ پیرامیٹر ٹیوننگ اور رسک مینجمنٹ میں بہتری کے ساتھ ، یہ حکمت عملی مستحکم منافع حاصل کرنے کے لئے ایک طاقتور آلہ بن سکتی ہے۔
/*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