RSI Bollinger Bands TP/SL حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-21 11:17:19
ٹیگز:

img

I. حکمت عملی کا جائزہ

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

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

1. ریورسز کے لئے آر ایس آئی اشارے

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

رجحان کے لئے بولنگر بینڈ

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

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

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

III. فوائد

1. دوہری اشارے کے ساتھ بہتر درستگی

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

2۔ ٹی پی/ایس ایل کا استعمال کرتے ہوئے رسک کنٹرول

حکمت عملی سیٹ منافع (TP) اور سٹاپ نقصان (SL) کے پوائنٹس کو منافع میں مقفل کرنے اور نقصان کو کم کرنے کے لئے زیادہ سے زیادہ.

3. اپنی مرضی کے مطابق ہدایات

صارفین مارکیٹ کے حالات کی بنیاد پر صرف طویل، صرف مختصر یا دونوں سمتوں میں جا سکتے ہیں، جو لچکدار خطرے کے کنٹرول کی اجازت دیتا ہے.

IV. خطرات

حساس بولنگر بینڈ پیرامیٹرز

معیاری انحراف کا سائز بینڈ کی چوڑائی اور تجارتی سگنل کو متاثر کرتا ہے۔ غلط ترتیبات سے زیادہ غلط سگنل پیدا ہوسکتے ہیں۔

TP/SL کے خطرات

V کی شکل میں واپسی غیر ضروری نقصانات کو متحرک کر سکتی ہے TP / SL کی ترتیبات بہت جارحانہ ہیں.

3. حساس RSI پیرامیٹرز

RSI پیرامیٹر کی غلط ترتیبات الٹ سگنل کی درستگی میں کمی کا باعث بنتی ہیں.

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

RSI پیرامیٹرز کو بہتر بنائیں

زیادہ سے زیادہ RSI لمبائی اقدار کو ٹیسٹ کیا جا سکتا ہے تاکہ زیادہ سے زیادہ پیرامیٹر مجموعہ تلاش کیا جا سکے.

2. بولنگر بینڈ پیرامیٹرز کو بہتر بنائیں

زیادہ لمبائی اور معیاری انحراف کا تجربہ کیا جا سکتا ہے تاکہ زیادہ سے زیادہ پیرامیٹر مجموعہ تلاش کیا جا سکے.

مختلف TP/SL تناسب کی جانچ کریں

بیک ٹسٹنگ سے زیادہ سے زیادہ TP/SL تناسب تلاش کرنے میں مدد مل سکتی ہے۔

VI. نتیجہ

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


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 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/
// © BigCoinHunter

//@version=5
strategy(title="RSI_Boll-TP/SL", overlay=true, 
     pyramiding=0, default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, initial_capital=1000, 
     currency=currency.USD, commission_value=0.05, 
     commission_type=strategy.commission.percent, 
     process_orders_on_close=true)

//----------- get the user inputs --------------

//---------- RSI -------------
price = input(close, title="Source")

RSIlength = input.int(defval=6,title="RSI Length") 
RSIoverSold = input.int(defval=50, title="RSI OverSold", minval=1)
RSIoverBought = input.int(defval=50, title="RSI OverBought", minval=1)

//------- Bollinger Bands -----------
BBlength = input.int(defval=200, title="Bollinger Period Length", minval=1)
BBmult = input.float(defval=2.0, minval=0.001, maxval=50, step=0.1, title="Bollinger Bands Standard Deviation")
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = ta.crossover(source, BBlower)
sellEntry = ta.crossunder(source, BBupper)
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
fill(plot1=p1, plot2=p2, title="Bollinger BackGround", color=color.new(color.aqua,90), fillgaps=false, editable=true)

//---------- input TP/SL ---------------
tp = input.float(title="Take Profit:", defval=0.0, minval=0.0, maxval=100.0, step=0.1) * 0.01
sl = input.float(title="Stop Loss:  ", defval=0.0, minval=0.0, maxval=100.0, step=0.1) * 0.01

longEntry = input.bool(defval=true, title= 'Long Entry', inline="11")
shortEntry = input.bool(defval=true, title='Short Entry', inline="11")

//---------- backtest range setup ------------
fromDay   = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear  = input.int(defval = 2021, title = "From Year", minval = 2010)
toDay     = input.int(defval = 30, title = "To Day", minval = 1, maxval = 31)
toMonth   = input.int(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear    = input.int(defval = 2042, title = "To Year", minval = 2010)

//------------ time interval setup -----------
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 // create function "within window of time"

//------- define the global variables ------
var bool long = true
var bool stoppedOutLong = false
var bool stoppedOutShort = false
//--------- Colors ---------------

TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na
//bgcolor(switch2?(color.new(TrendColor,50)):na)


//--------- calculate the input/output points -----------
longProfitPrice  = strategy.position_avg_price * (1 + tp)     // tp -> take profit percentage
longStopPrice = strategy.position_avg_price * (1 - sl)        // sl -> stop loss percentage

shortProfitPrice  = strategy.position_avg_price * (1 - tp)
shortStopPrice = strategy.position_avg_price * (1 + sl)


//---------- RSI + Bollinger Bands Strategy -------------
vrsi = ta.rsi(price, RSIlength)

rsiCrossOver = ta.crossover(vrsi, RSIoverSold)
rsiCrossUnder = ta.crossunder(vrsi, RSIoverBought)

BBCrossOver = ta.crossover(source, BBlower)
BBCrossUnder = ta.crossunder(source, BBupper)

if (not na(vrsi))

    if rsiCrossOver and BBCrossOver
        long := true
        
    if rsiCrossUnder and BBCrossUnder
        long := false

//------------------- determine buy and sell points ---------------------
buySignall = window() and long  and (not stoppedOutLong)
sellSignall = window() and (not long)  and (not stoppedOutShort)

//---------- execute the strategy -----------------
if(longEntry and shortEntry)
    if long 
        strategy.entry("LONG", strategy.long, when = buySignall, comment = "ENTER LONG")
        stoppedOutLong := true
        stoppedOutShort := false
    else 
        strategy.entry("SHORT", strategy.short, when = sellSignall, comment = "ENTER SHORT")
        stoppedOutLong  := false
        stoppedOutShort := true

else if(longEntry)
    strategy.entry("LONG", strategy.long,  when = buySignall)
    strategy.close("LONG", when = sellSignall)
    if long 
        stoppedOutLong := true
    else
        stoppedOutLong  := false

else if(shortEntry)
    strategy.entry("SHORT", strategy.short, when = sellSignall)
    strategy.close("SHORT", when = buySignall)
    if not long
        stoppedOutShort := true
    else
        stoppedOutShort := false
    

//----------------- take profit and stop loss -----------------
if(tp>0.0 and sl>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG", limit=longProfitPrice, stop=longStopPrice, comment="Long TP/SL Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT", limit=shortProfitPrice, stop=shortStopPrice, comment="Short TP/SL Trigger")

else if(tp>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG", limit=longProfitPrice, comment="Long TP Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT", limit=shortProfitPrice, comment="Short TP Trigger")
        
else if(sl>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG",  stop=longStopPrice, comment="Long SL Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT",  stop=shortStopPrice, comment="Short SL Trigger")



















مزید