یہ ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو بولنگر بینڈ اور کے لائن فارمیشن دونوں کو انٹری سگنلز کے طور پر استعمال کرتی ہے۔ اس کا مقصد طویل عرصے کے فریموں میں رجحانات کو پکڑنا ہے اور یہ فاریکس ٹریڈنگ کے لئے موزوں ہے۔
حکمت عملی قیمت کی اتار چڑھاؤ کی نمائندگی کرنے اور زیادہ خرید / فروخت کی سطح کی نشاندہی کرنے کے لئے بولنگر بینڈ بناتی ہے۔ اوپری یا نچلی بینڈ کو چھو کر انتہا پسندی کی نشاندہی ہوتی ہے۔ وقت کے اندراجات کے لئے مخصوص K لائن پیٹرن کے ساتھ مل کر۔
خاص طور پر ، طویل سگنل اس وقت ٹرگر ہوتا ہے جب قیمت نچلی بینڈ سے اوپر ٹوٹ جاتی ہے اور ایک بولش نگلنگ یا لمبی نچلی سائے موم بتی ظاہر ہوتی ہے۔ مختصر سگنل اس وقت ٹرگر ہوتا ہے جب قیمت اوپری بینڈ سے نیچے ٹوٹ جاتی ہے اور ایک bearish نگلنگ یا لمبی اوپری سائے موم بتی ظاہر ہوتی ہے۔
سٹاپ نقصان پہلے سے طے شدہ قیمت کی سطح ہے۔ جب قیمت بولنگر مڈل بینڈ کو عبور کرتی ہے تو منافع لے کر باہر نکلتے ہیں۔
یہ حکمت عملی رجحان اور پل بیک کے مواقع کو جوڑتی ہے۔ بولنگر بینڈ رجحانات اور اوورسٹینشن کی نشاندہی کرتے ہیں۔ کے لائن پیٹرن دوبارہ داخلے پر وشوسنییتا میں اضافہ کرتے ہیں اور جھوٹے بریک آؤٹ سے بچتے ہیں۔
اسٹاپ نقصان اور منافع حاصل کرنے کا منطق واضح اور خطرے پر قابو پانے والا ہے۔ کم تجارتی تعدد طویل مدتی ہولڈنگ کے مطابق ہے۔
سب سے بڑا خطرہ یہ ہے کہ رجحانات کو پکڑنے میں ناکامی یا وِپساؤس کا سامنا کرنا پڑتا ہے۔ ترتیب وار اسٹاپ نقصان کا سامنا کرنا پڑتا ہے۔
اس کے علاوہ، منافع لینے کا انحصار درمیانی لائن عبور کرنے پر ہوتا ہے لہذا ابتدائی یا دیر سے باہر نکلنے کا امکان ہوتا ہے۔
پیرامیٹرز کے انتخاب کو بہتر بنانا ، زیادہ قابل اعتماد موم بتی کے نمونوں کی نشاندہی کرنا ، یا اتار چڑھاؤ پر مبنی موافقت بخش منافع کا ہدف بہتر بنانے میں مدد کرسکتا ہے۔
مجموعی طور پر سائیکل کے رجحانات کا اندازہ کرنے کے لئے دوسرے اشارے شامل کریں ، مخالف رجحان کی تجارت سے گریز کریں۔ یا بہترین پیرامیٹر مجموعے تلاش کرنے کے لئے مشین لرننگ ماڈلز کا استعمال کریں۔
منافع لینے سے منافع کو زیادہ سے زیادہ کرنے کے لئے ٹریلنگ اسٹاپس یا اتار چڑھاؤ پر مبنی باہر نکلنے میں موافقت ہوسکتی ہے۔
یہ بولنگر بینڈ اور موم بتی کی تکنیک پر مبنی حکمت عملی کے بعد طویل مدتی فریم رجحان ہے۔ یہ قابل اعتماد اور منافع بخش کے ساتھ بنیادی حکمت عملی کے طور پر مہذب کام کرتا ہے لیکن استحکام کو بہتر بنانے کے لئے مسلسل جانچ اور ایڈجسٹمنٹ کی ضرورت ہے۔
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BB策略", overlay=true) length = input(20, minval=1) src = input(close, title="Source") mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500) plot(basis, "Basis", color=#872323, offset = offset) p1 = plot(upper, "Upper", color=color.teal, offset = offset) p2 = plot(lower, "Lower", color=color.teal, offset = offset) fill(p1, p2, title = "Background", color=#198787, transp=95) diff=upper-lower //plot(upper*0.9985, "Upper", color=color.white, offset = offset) //plot(lower*1.0015, "Lower", color=color.white, offset = offset) //Engulfing Candles openBarPrevious = open[1] closeBarPrevious = close[1] openBarCurrent = open closeBarCurrent = close //If current bar open is less than equal to the previous bar close AND current bar open is less than previous bar open AND current bar close is greater than previous bar open THEN True bullishEngulfing = openBarCurrent <= closeBarPrevious and openBarCurrent < openBarPrevious and closeBarCurrent > openBarPrevious //If current bar open is greater than equal to previous bar close AND current bar open is greater than previous bar open AND current bar close is less than previous bar open THEN True bearishEngulfing = openBarCurrent >= closeBarPrevious and openBarCurrent > openBarPrevious and closeBarCurrent < openBarPrevious //bullishEngulfing/bearishEngulfing return a value of 1 or 0; if 1 then plot on chart, if 0 then don't plot //plotshape(bullishEngulfing, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny) //plotshape(bearishEngulfing, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny) //alertcondition(bullishEngulfing, title="Bullish Engulfing", message="[CurrencyPair] [TimeFrame], Bullish candle engulfing previous candle") //alertcondition(bearishEngulfing, title="Bearish Engulfing", message="[CurrencyPair] [TimeFrame], Bearish candle engulfing previous candle") //Long Upper Shadow - Bearish C_Len = 14 // ema depth for bodyAvg C_ShadowPercent = 5.0 // size of shadows C_ShadowEqualsPercent = 100.0 C_DojiBodyPercent = 5.0 C_Factor = 2.0 // shows the number of times the shadow dominates the candlestick body C_BodyHi = max(close, open) C_BodyLo = min(close, open) C_Body = C_BodyHi - C_BodyLo C_BodyAvg = ema(C_Body, C_Len) C_SmallBody = C_Body < C_BodyAvg C_LongBody = C_Body > C_BodyAvg C_UpShadow = high - C_BodyHi C_DnShadow = C_BodyLo - low C_HasUpShadow = C_UpShadow > C_ShadowPercent / 100 * C_Body C_HasDnShadow = C_DnShadow > C_ShadowPercent / 100 * C_Body C_WhiteBody = open < close C_BlackBody = open > close C_Range = high-low C_IsInsideBar = C_BodyHi[1] > C_BodyHi and C_BodyLo[1] < C_BodyLo C_BodyMiddle = C_Body / 2 + C_BodyLo C_ShadowEquals = C_UpShadow == C_DnShadow or (abs(C_UpShadow - C_DnShadow) / C_DnShadow * 100) < C_ShadowEqualsPercent and (abs(C_DnShadow - C_UpShadow) / C_UpShadow * 100) < C_ShadowEqualsPercent C_IsDojiBody = C_Range > 0 and C_Body <= C_Range * C_DojiBodyPercent / 100 C_Doji = C_IsDojiBody and C_ShadowEquals patternLabelPosLow = low - (atr(30) * 0.6) patternLabelPosHigh = high + (atr(30) * 0.6) C_LongUpperShadowBearishNumberOfCandles = 1 C_LongShadowPercent = 75.0 C_LongUpperShadowBearish = C_UpShadow > C_Range/100*C_LongShadowPercent //alertcondition(C_LongUpperShadowBearish, title = "Long Upper Shadow", message = "New Long Upper Shadow - Bearish pattern detected.") //if C_LongUpperShadowBearish // var ttBearishLongUpperShadow = "Long Upper Shadow\nTo indicate buyer domination of the first part of a session, candlesticks will present with long upper shadows, as well as short lower shadows, consequently raising bidding prices." // label.new(bar_index, patternLabelPosHigh, text="LUS", style=label.style_label_down, color = color.red, textcolor=color.white, tooltip = ttBearishLongUpperShadow) //gcolor(highest(C_LongUpperShadowBearish?1:0, C_LongUpperShadowBearishNumberOfCandles)!=0 ? color.red : na, offset=-(C_LongUpperShadowBearishNumberOfCandles-1)) C_Len1 = 14 // ema depth for bodyAvg C_ShadowPercent1 = 5.0 // size of shadows C_ShadowEqualsPercent1 = 100.0 C_DojiBodyPercent1 = 5.0 C_Factor1 = 2.0 // shows the number of times the shadow dominates the candlestick body C_BodyHi1 = max(close, open) C_BodyLo1 = min(close, open) C_Body1 = C_BodyHi1 - C_BodyLo1 C_BodyAvg1 = ema(C_Body1, C_Len1) C_SmallBody1 = C_Body1 < C_BodyAvg1 C_LongBody1 = C_Body1 > C_BodyAvg1 C_UpShadow1 = high - C_BodyHi1 C_DnShadow1 = C_BodyLo1 - low C_HasUpShadow1 = C_UpShadow1 > C_ShadowPercent1 / 100 * C_Body1 C_HasDnShadow1 = C_DnShadow1 > C_ShadowPercent1 / 100 * C_Body1 C_WhiteBody1 = open < close C_BlackBody1 = open > close C_Range1 = high-low C_IsInsideBar1 = C_BodyHi1[1] > C_BodyHi1 and C_BodyLo1[1] < C_BodyLo1 C_BodyMiddle1 = C_Body1 / 2 + C_BodyLo1 C_ShadowEquals1 = C_UpShadow1 == C_DnShadow1 or (abs(C_UpShadow1 - C_DnShadow1) / C_DnShadow1 * 100) < C_ShadowEqualsPercent1 and (abs(C_DnShadow1 - C_UpShadow1) / C_UpShadow1 * 100) < C_ShadowEqualsPercent1 C_IsDojiBody1 = C_Range1 > 0 and C_Body1 <= C_Range1 * C_DojiBodyPercent1 / 100 C_Doji1 = C_IsDojiBody1 and C_ShadowEquals1 patternLabelPosLow1 = low - (atr(30) * 0.6) patternLabelPosHigh1 = high + (atr(30) * 0.6) C_LongLowerShadowBullishNumberOfCandles1 = 1 C_LongLowerShadowPercent1 = 75.0 C_LongLowerShadowBullish1 = C_DnShadow1 > C_Range1/100*C_LongLowerShadowPercent1 //alertcondition1(C_LongLowerShadowBullish1, title = "Long Lower Shadow", message = "New Long Lower Shadow - Bullish pattern detected.") // Make input options that configure backtest date range startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31) startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12) startYear = input(title="Start Year", type=input.integer, defval=2018, minval=1800, maxval=2100) endDate = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31) endMonth = input(title="End Month", type=input.integer, defval=11, minval=1, maxval=12) endYear = input(title="End Year", type=input.integer, defval=2030, minval=1800, maxval=2100) // Look if the close time of the current bar // falls inside the date range inDateRange = true //多單 if ((bullishEngulfing or C_LongLowerShadowBullish1) and inDateRange and cross(low,lower)) strategy.entry("L", strategy.long, qty=1,stop=(low[1])) //strategy.close("L",comment = "L exit",when=cross(basis,close),qty_percent=50) if crossunder(close,upper*0.9985) strategy.close("L",comment = "L exit",qty_percent=1) //空單 if (((bullishEngulfing == 0) or C_LongUpperShadowBearish) and inDateRange and cross(close,upper)) strategy.entry("S", strategy.short,qty= 1,stop=(high[1])) //strategy.close("S",comment = "S exit",when=cross(basis,close),qty_percent=50) if crossunder(lower*1.0015,close) strategy.close("S",comment = "S exit",qty_percent=1)