پی پی او کی قیمت کی حساسیت کی رفتار ڈبل نیچے سمت ٹریڈنگ کی حکمت عملی ایک رجحان کی پیروی کرنے والی تجارتی حکمت عملی ہے جو تجارتی سگنل پیدا کرنے کے لئے پی پی او (فیصد قیمت آسکیلیٹر) اشارے کے ذریعہ قیمت کی ڈبل نیچے تشکیل کی نشاندہی کا استعمال کرتی ہے۔ یہ پی پی او کی ڈبل نیچے پیٹرن کی شناخت اور قیمت کی رفتار کی خصوصیات کو یکجا کرتی ہے تاکہ قیمت کی ڈبل نیچے الٹ پوائنٹس کی عین مطابق پوزیشننگ حاصل کی جاسکے۔
یہ حکمت عملی قیمت کی ڈبل نیچے کی خصوصیات کا تعین کرنے کے لئے پی پی او اشارے کا استعمال کرتی ہے ، جبکہ حقیقی وقت میں پی پی او اشارے کی نیچے کی تشکیل کی نگرانی کے لئے قیمت کے کم سے کم نقطہ نظر کو شامل کرتی ہے۔ جب پی پی او اوپر کی طرف الٹ ڈبل نیچے بناتا ہے تو ، یہ موجودہ خریداری کے موقع کی نشاندہی کرتا ہے۔
دوسری طرف ، حکمت عملی قیمت کی کم سے کم قیمت کے تعین کے ساتھ مل کر کام کرتی ہے تاکہ یہ معلوم کیا جاسکے کہ آیا قیمت نسبتا low کم سطح پر ہے۔ اگر قیمت کم رہتی ہے جبکہ پی پی او نیچے آنے کا نمونہ دکھاتا ہے تو ، خرید کا اشارہ متحرک ہوجاتا ہے۔
پی پی او کی واپسی کی خصوصیت کی توثیق اور قیمت کی سطح کی تصدیق کے دوہری میکانزم کے ذریعے ، ممکنہ قیمت کی واپسی کے امکانات کو مؤثر طریقے سے شناخت کیا جاسکتا ہے ، غلط سگنل کو فلٹر کرنا اور سگنل کے معیار کو بہتر بنانا۔
پی پی او ڈبل نیچے پیٹرن داخلہ پوائنٹس پر درست وقت کی اجازت دیتا ہے.
قیمت کی سطح کی تصدیق کو یکجا کرنے سے نسبتا high اعلی سطحوں پر ہونے والے جھوٹے سگنل فلٹر ہوجاتے ہیں ، سگنل کے معیار کو بہتر بناتے ہیں۔
پی پی او حساس ہے اور تیزی سے قیمت کے رجحان کی تبدیلیوں کو پکڑتا ہے، رجحان کی پیروی کے لئے موزوں ہے.
دوہری تصدیق کا طریقہ کار مؤثر طریقے سے تجارتی خطرے کو کم کرتا ہے۔
پی پی او غلط سگنل پیدا کرنے کا رجحان رکھتا ہے ، جس کی تصدیق دوسرے اشارے سے کی جاتی ہے۔ چلتی اوسط یا اتار چڑھاؤ کے اشارے تصدیق میں مدد کرسکتے ہیں۔
ڈبل نیچے الٹنا برقرار نہیں رہ سکتا ہے ، مزید کمی کے خطرات کا سامنا کرنا پڑتا ہے۔ پوزیشن سائزنگ کی اصلاح کے ساتھ ساتھ اسٹاپ نقصان بھی طے کیا جاسکتا ہے۔
پیرامیٹر کی نامناسب ترتیب سے منافع یا غلط اندراجات کی کمی واقع ہوتی ہے۔ پیرامیٹر کے امتزاج پر بار بار بیک ٹیسٹ اور اصلاح ضروری ہے۔
نقل کے ساتھ کوڈ کا کافی حجم ہے۔ مزید ماڈیولیشن ڈپلیکیٹ کوڈز کو کم کرنے میں مدد کرتی ہے۔
سٹاپ نقصان ماڈیول شامل کریں اور پوزیشن سائزنگ کی حکمت عملی کو بہتر بنائیں.
تصدیق کے اوزار کے طور پر چلتی اوسط یا اتار چڑھاؤ کے اشارے متعارف کروائیں۔
غیر ضروری منطقی فیصلوں سے بچنے کے لئے کوڈز کو ماڈیولر بنائیں.
استحکام بڑھانے کے لئے پیرامیٹر ٹوننگ جاری رکھیں.
زیادہ مصنوعات پر پھیلاؤ ٹریڈنگ ایپلی کیشنز کی جانچ کریں.
پی پی او کی قیمت کی حساسیت کی رفتار ڈبل نیچے سمت ٹریڈنگ کی حکمت عملی پی پی او اشارے کی ڈبل نیچے کی خصوصیات کو حاصل کرتی ہے جس میں قیمت کی سطح کی پوزیشننگ کی دوہری تصدیق کے ساتھ مل کر قیمت کی الٹ پوائنٹس کو مؤثر طریقے سے نشان زد کیا جاتا ہے۔ سنگل اشارے کے فیصلے کے مقابلے میں ، اس میں بہتر درستگی اور شور کو فلٹر کرنے کی صلاحیت کے فوائد ہیں۔ تاہم ، غلط سگنلز کے کچھ خطرات باقی ہیں ، جس سے براہ راست تجارت میں مستحکم منافع حاصل کرنے سے پہلے اشارے کے مجموعوں اور سخت پوزیشن سائزنگ کی حکمت عملی پر مزید اصلاح کی ضرورت ہوتی ہے۔
/*backtest start: 2024-01-27 00:00:00 end: 2024-01-28 00:00:00 period: 2h 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/ // © luciancapdefier //@version=4 strategy("PPO Divergence ST", overlay=true, initial_capital=30000, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // time FromYear = input(2019, "Backtest Start Year") FromMonth = input(1, "Backtest Start Month") FromDay = input(1, "Backtest Start Day") ToYear = input(2999, "Backtest End Year") ToMonth = input(1, "Backtest End Month") ToDay = input(1, "Backtest End Day") start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false source = close topbots = input(true, title="Show PPO high/low triangles?") long_term_div = input(true, title="Use long term divergences?") div_lookback_period = input(55, minval=1, title="Lookback Period") fastLength = input(12, minval=1, title="PPO Fast") slowLength=input(26, minval=1, title="PPO Slow") signalLength=input(9,minval=1, title="PPO Signal") smoother = input(2,minval=1, title="PPO Smooth") fastMA = ema(source, fastLength) slowMA = ema(source, slowLength) macd = fastMA - slowMA macd2=(macd/slowMA)*100 d = sma(macd2, smoother) // smoothing PPO bullishPrice = low priceMins = bullishPrice > bullishPrice[1] and bullishPrice[1] < bullishPrice[2] or low[1] == low[2] and low[1] < low and low[1] < low[3] or low[1] == low[2] and low[1] == low[3] and low[1] < low and low[1] < low[4] or low[1] == low[2] and low[1] == low[3] and low[1] and low[1] == low[4] and low[1] < low and low[1] < low[5] // this line identifies bottoms and plateaus in the price oscMins= d > d[1] and d[1] < d[2] // this line identifies bottoms in the PPO BottomPointsInPPO = oscMins bearishPrice = high priceMax = bearishPrice < bearishPrice[1] and bearishPrice[1] > bearishPrice[2] or high[1] == high[2] and high[1] > high and high[1] > high[3] or high[1] == high[2] and high[1] == high[3] and high[1] > high and high[1] > high[4] or high[1] == high[2] and high[1] == high[3] and high[1] and high[1] == high[4] and high[1] > high and high[1] > high[5] // this line identifies tops in the price oscMax = d < d[1] and d[1] > d[2] // this line identifies tops in the PPO TopPointsInPPO = oscMax currenttrough4=valuewhen (oscMins, d[1], 0) // identifies the value of PPO at the most recent BOTTOM in the PPO lasttrough4=valuewhen (oscMins, d[1], 1) // NOT USED identifies the value of PPO at the second most recent BOTTOM in the PPO currenttrough5=valuewhen (oscMax, d[1], 0) // identifies the value of PPO at the most recent TOP in the PPO lasttrough5=valuewhen (oscMax, d[1], 1) // NOT USED identifies the value of PPO at the second most recent TOP in the PPO currenttrough6=valuewhen (priceMins, low[1], 0) // this line identifies the low (price) at the most recent bottom in the Price lasttrough6=valuewhen (priceMins, low[1], 1) // NOT USED this line identifies the low (price) at the second most recent bottom in the Price currenttrough7=valuewhen (priceMax, high[1], 0) // this line identifies the high (price) at the most recent top in the Price lasttrough7=valuewhen (priceMax, high[1], 1) // NOT USED this line identifies the high (price) at the second most recent top in the Price delayedlow = priceMins and barssince(oscMins) < 3 ? low[1] : na delayedhigh = priceMax and barssince(oscMax) < 3 ? high[1] : na // only take tops/bottoms in price when tops/bottoms are less than 5 bars away filter = barssince(priceMins) < 5 ? lowest(currenttrough6, 4) : na filter2 = barssince(priceMax) < 5 ? highest(currenttrough7, 4) : na //delayedbottom/top when oscillator bottom/top is earlier than price bottom/top y11 = valuewhen(oscMins, delayedlow, 0) y12 = valuewhen(oscMax, delayedhigh, 0) // only take tops/bottoms in price when tops/bottoms are less than 5 bars away, since 2nd most recent top/bottom in osc y2=valuewhen(oscMax, filter2, 1) // identifies the highest high in the tops of price with 5 bar lookback period SINCE the SECOND most recent top in PPO y6=valuewhen(oscMins, filter, 1) // identifies the lowest low in the bottoms of price with 5 bar lookback period SINCE the SECOND most recent bottom in PPO long_term_bull_filt = valuewhen(priceMins, lowest(div_lookback_period), 1) long_term_bear_filt = valuewhen(priceMax, highest(div_lookback_period), 1) y3=valuewhen(oscMax, currenttrough5, 0) // identifies the value of PPO in the most recent top of PPO y4=valuewhen(oscMax, currenttrough5, 1) // identifies the value of PPO in the second most recent top of PPO y7=valuewhen(oscMins, currenttrough4, 0) // identifies the value of PPO in the most recent bottom of PPO y8=valuewhen(oscMins, currenttrough4, 1) // identifies the value of PPO in the SECOND most recent bottom of PPO y9=valuewhen(oscMins, currenttrough6, 0) y10=valuewhen(oscMax, currenttrough7, 0) bulldiv= BottomPointsInPPO ? d[1] : na // plots dots at bottoms in the PPO beardiv= TopPointsInPPO ? d[1]: na // plots dots at tops in the PPO i = currenttrough5 < highest(d, div_lookback_period) // long term bearish oscilator divergence i2 = y10 > long_term_bear_filt // long term bearish top divergence i3 = delayedhigh > long_term_bear_filt // long term bearish delayedhigh divergence i4 = currenttrough4 > lowest(d, div_lookback_period) // long term bullish osc divergence i5 = y9 < long_term_bull_filt // long term bullish bottom div i6 = delayedlow < long_term_bull_filt // long term bullish delayedbottom div //plot(0, color=gray) //plot(d, color=black) //plot(bulldiv, title = "Bottoms", color=maroon, style=circles, linewidth=3, offset= -1) //plot(beardiv, title = "Tops", color=green, style=circles, linewidth=3, offset= -1) bearishdiv1 = (y10 > y2 and oscMax and y3 < y4) ? true : false bearishdiv2 = (delayedhigh > y2 and y3 < y4) ? true : false bearishdiv3 = (long_term_div and oscMax and i and i2) ? true : false bearishdiv4 = (long_term_div and i and i3) ? true : false bullishdiv1 = (y9 < y6 and oscMins and y7 > y8) ? true : false bullishdiv2 = (delayedlow < y6 and y7 > y8) ? true : false bullishdiv3 = (long_term_div and oscMins and i4 and i5) ? true : false bullishdiv4 = (long_term_div and i4 and i6) ? true : false bearish = bearishdiv1 or bearishdiv2 or bearishdiv3 or bearishdiv4 bullish = bullishdiv1 or bullishdiv2 or bullishdiv3 or bullishdiv4 greendot = beardiv != 0 ? true : false reddot = bulldiv != 0 ? true : false if (reddot and window()) strategy.entry("Buy Id", strategy.long, comment="BUY") if (greendot and window()) strategy.entry("Sell Id", strategy.short, comment="SELL") alertcondition( bearish, title="Bearish Signal (Orange)", message="Orange & Bearish: Short " ) alertcondition( bullish, title="Bullish Signal (Purple)", message="Purple & Bullish: Long " ) alertcondition( greendot, title="PPO High (Green)", message="Green High Point: Short " ) alertcondition( reddot, title="PPO Low (Red)", message="Red Low Point: Long " ) // plotshape(bearish ? d : na, text='▼\nP', style=shape.labeldown, location=location.abovebar, color=color(orange,0), textcolor=color(white,0), offset=0) // plotshape(bullish ? d : na, text='P\n▲', style=shape.labelup, location=location.belowbar, color=color(#C752FF,0), textcolor=color(white,0), offset=0) plotshape(topbots and greendot ? d : na, text='', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0, size=size.tiny) plotshape(topbots and reddot ? d : na, text='', style=shape.triangleup, location=location.belowbar, color=color.lime, offset=0, size=size.tiny) //barcolor(bearishdiv1 or bearishdiv2 or bearishdiv3 or bearishdiv4 ? orange : na) //barcolor(bullishdiv1 or bullishdiv2 or bullishdiv3 or bullishdiv4 ? fuchsia : na) //barcolor(#dedcdc)