وسائل لوڈ ہو رہے ہیں... لوڈنگ...

بولنگر بینڈ اور آر ایس آئی مجموعی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-30 15:15:32
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

اس حکمت عملی کا بنیادی منطق بولنگر بینڈ کے دباؤ کی نشاندہی کرنا اور جب آر ایس آئی اپ ٹرینڈ میں ہوتا ہے تو قیمت کے وقفے کی پیش گوئی کرنا ہے۔ خاص طور پر ، جب 20 پیریڈ بی بی مڈل بینڈ کا معیاری انحراف اے ٹی آر * 2 سے کم ہوتا ہے تو ، ہم اس بات کا تعین کرتے ہیں کہ بی بی دباؤ ہو رہا ہے۔ دریں اثنا ، اگر 10 اور 14 پیریڈ آر ایس آئی دونوں بڑھ رہے ہیں تو ، ہم پیش گوئی کرتے ہیں کہ قیمتیں جلد ہی بی بی کے اوپری بینڈ سے تجاوز کرسکتی ہیں اور طویل عرصے تک جاسکتی ہیں۔

مارکیٹ میں داخل ہونے کے بعد ، ہم منافع کو مقفل کرنے اور خطرات کو سنبھالنے کے لئے اے ٹی آر سیفٹی فاصلہ + انکولی اسٹاپ نقصان کا استعمال کرتے ہیں۔ جب قیمت اسٹاپ نقصان کو مار دیتی ہے یا آر ایس آئی زیادہ ہو جاتا ہے تو پوزیشنیں بند ہوجاتی ہیں۔ (14 پیریڈ آر ایس آئی 70 سے اوپر اور 10 پیریڈ آر ایس آئی 14 سے زیادہ ہے۔)

فوائد کا تجزیہ

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

خطرے کا تجزیہ

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

اصلاح کی ہدایات

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

  1. زیادہ درست طریقے سے squeeze کی شناخت کے لئے BB پیرامیٹرز کو بہتر بنائیں

  2. RSI کی مدت کے لئے مختلف اقدار کی جانچ کریں

  3. دیگر سٹاپ نقصان کی تکنیک جیسے منحنی SL یا پیچھے دیکھنے والی SL کا جائزہ لیں

  4. علامت کی خصوصیات کی بنیاد پر پیرامیٹرز کو ایڈجسٹ کریں

نتیجہ

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © DojiEmoji
// 

//@version=4
strategy("[KL] BOLL + RSI Strategy",overlay=true,pyramiding=1)

// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("01 May 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }

// Bollinger bands (sdv=2, len=20) {
BOLL_length = 20, BOLL_src = close, SMA20 = sma(BOLL_src, BOLL_length), BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length)
BOLL_upper = SMA20 + BOLL_sDEV_x2, BOLL_lower = SMA20 - BOLL_sDEV_x2
plot(SMA20, "Basis", color=#872323, offset = 0)
BOLL_p1 = plot(BOLL_upper, "BOLL Upper", color=color.navy, offset = 0, transp=50)
BOLL_p2 = plot(BOLL_lower, "BOLL Lower", color=color.navy, offset = 0, transp=50)
fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// }

// Volatility Indicators {
ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL
avg_atr = sma(ATR_x2, input(1,title="No. of candles to lookback when determining ATR is decreasing"))
plot(SMA20+ATR_x2, "SMA20 + ATR_x2", color=color.gray, offset = 0, transp=50)
plot(SMA20-ATR_x2, "SMA20 - ATR_x2", color=color.gray, offset = 0, transp=50)
plotchar(ATR_x2, "ATR_x2", "", location = location.bottom)
//}

// Trailing stop loss {
TSL_source = low
var entry_price = float(0), var stop_loss_price = float(0)

trail_profit_line_color = color.green
if strategy.position_size == 0 or not within_timeframe
    trail_profit_line_color := color.black
    stop_loss_price := TSL_source - ATR_x2
else if strategy.position_size > 0
    stop_loss_price := max(stop_loss_price, TSL_source - ATR_x2)
plot(stop_loss_price, color=trail_profit_line_color)

if strategy.position_size > 0 and stop_loss_price > stop_loss_price[1]
	alert("Stop loss limit raised", alert.freq_once_per_bar)

// } end of Trailing stop loss

//Buy setup - Long positions {
is_squeezing = ATR_x2 > BOLL_sDEV_x2
if is_squeezing and within_timeframe and not is_squeezing[1]
	alert("BOLL bands are squeezing", alert.freq_once_per_bar)
else if not is_squeezing and within_timeframe and is_squeezing[1]
	alert("BOLL bands stopped squeezing", alert.freq_once_per_bar)

ema_trend = ema(close, 20)

concat(a, b) =>
	concat = a
	if a != ""
		concat := concat + ", "
	concat := concat + b
	concat
// }

// Sell setup - Long position {
rsi_10 = rsi(close, 10), rsi_14 = rsi(close, 14)
overbought = rsi_14 > input(70,title="[Exit] RSI(14) value considered as overbought") and rsi_10 > rsi_14
// } end of Sell setup - Long position

// MAIN: {
if within_timeframe
	entry_msg = ""
	exit_msg = ""

    // ENTRY {
	conf_count = 0	
    volat_decr = avg_atr <= avg_atr[1]
	rsi_upslope = rsi_10 > rsi_10[1] and rsi_14 > rsi_14[1]

	if volat_decr and rsi_upslope and is_squeezing and strategy.position_size == 0
		strategy.entry("Long",strategy.long, comment=entry_msg)
		entry_price := close
		stop_loss_price := TSL_source - ATR_x2
	// }

    // EXIT	{
	if strategy.position_size > 0
		bExit = false
		if close <= entry_price and TSL_source <= stop_loss_price
            exit_msg := concat(exit_msg, "stop loss [TSL]")
			bExit := true
        else if close > entry_price and TSL_source <= stop_loss_price
            exit_msg := concat(exit_msg, "take profit [TSL]")
            bExit := true
		else if overbought
			exit_msg := concat(exit_msg, "overbought")
			bExit := true

        strategy.close("Long", when=bExit, comment=exit_msg)
	// }
// }

// CLEAN UP:
if strategy.position_size == 0 and not is_squeezing
	entry_price := 0
	stop_loss_price := float(0)


مزید