ترتیب دینے کے قابل BB+RSI+Aroon حکمت عملی بیک ٹسٹ

مصنف:چاؤ ژانگ، تاریخ: 2023-09-21 15:05:38
ٹیگز:

جائزہ

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

یہ کیسے کام کرتا ہے

  1. قیمت توڑنے BB نچلے بینڈ طویل سگنل دکھاتا ہے.

  2. RSI oversold لائن کو عبور کرنے سے طویل تصدیق ملتی ہے۔

  3. Aroon کراس اوور طویل تصدیق ظاہر کرتا ہے.

  4. طویل اندراج جب تمام 3 شرائط پوری ہو جائیں.

  5. قیمت توڑنے BB اوپری بینڈ مختصر سگنل دکھاتا ہے.

  6. RSI کراسنگ overbought لائن مختصر تصدیق دیتا ہے.

  7. Aroon کراس اوور مختصر تصدیق دکھاتا ہے.

  8. مختصر اندراج جب تمام 3 شرائط پوری ہو جائیں۔

فوائد

  • اصلاح کے لئے تشکیل پذیر پیرامیٹرز
  • متعدد تصدیق سے درستگی میں اضافہ ہوتا ہے
  • مختلف مارکیٹ کے حالات کے مطابق ڈھالنا
  • سادہ منطق آسان نفاذ

خطرات

  • ناقص پیرامیٹر ٹیوننگ غلط سگنل کا سبب بن سکتا ہے
  • متعدد اشارے تاخیر کا اضافہ کرتے ہیں، فوری واپسی کو یاد کر سکتے ہیں
  • واپسی تجارت کی تعدد اور اخراجات میں اضافہ کرتی ہے

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

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

نتیجہ

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


/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
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/
// Developed by Marco Jarquin as part of Arkansas 22 Project for Binary Options
// CBRA for binary options (Configurable Bollinger Bands, RSI and Aroon)

//@version=4
// ====================================================================================

//strategy("A22.CBRA.Strat", overlay=true, initial_capital=10000, currency="USD", calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=4000, commission_type=strategy.commission.cash_per_order, commission_value=0)

// Aroonish Parameters
// ====================================================================================

Aroonish_length = input(4, minval=1, title="Aroonish Lenght")
Aroonish_ConfVal = input(50, minval=0, maxval=100, step=25, title="Aroonish Confirmation Value")
Aroonish_upper = 100 * (-highestbars(high, Aroonish_length+1) + Aroonish_length)/Aroonish_length
Aroonish_lower = 100 * (-lowestbars(low, Aroonish_length+1) + Aroonish_length)/Aroonish_length

// Aroonish confirmations
// ====================================================================================
Aroonish_ConfLong = (Aroonish_lower >= Aroonish_ConfVal) and (Aroonish_upper < Aroonish_lower)
Aroonish_ConfShrt = (Aroonish_upper >= Aroonish_ConfVal) and (Aroonish_upper > Aroonish_lower)

plotshape(crossover(Aroonish_lower, Aroonish_upper), color = color.red, style = shape.triangledown, location = location.abovebar, size = size.auto, title = "Ar-B")
plotshape(crossover(Aroonish_upper, Aroonish_lower), color = color.green, style = shape.triangleup, location = location.belowbar, size = size.auto, transp = 0, title = "Ar-S")

// RSI Parameters
// ====================================================================================
RSI_length = input(4, title="RSI Lenght")
RSI_overSold = input(20, title="RSI Oversold Limit")
RSI_overBought = input(80, title="RSI Overbought Limit" )

RSI = rsi(close, RSI_length)

plotshape(crossover(RSI, RSI_overSold), color = color.orange, style = shape.square, location = location.belowbar, size = size.auto, title = "RSI-B")
plotshape(crossunder(RSI, RSI_overBought), color = color.orange, style = shape.square, location = location.abovebar, size = size.auto, transp = 0, title = "RSI-S")

// Bollinger Parameters
// ====================================================================================
BB_length = input(20, minval=1, title="Bollinger Lenght")
BB_mult = input(2.5, minval=0.1, maxval=50, step=0.1, title="Bollinger Std Dev")
// BB_bars = input(3, minval=1, maxval=5, title="Check bars after crossing")

BB_basis = sma(close, BB_length)
BB_dev = BB_mult * stdev(close, BB_length)

BB_upper = BB_basis + BB_dev
BB_lower = BB_basis - BB_dev

p1 = plot(BB_upper, color=color.blue)
p2 = plot(BB_lower, color=color.blue)

// Bars to have the operation open
// ====================================================================================
nBars = input(3, minval=1, maxval=30, title="Bars to keep the operation open")

// Strategy condition short or long
// ====================================================================================
ConditionShrt = ((crossunder(close, BB_upper) or crossunder(close[1], BB_upper[1])) and Aroonish_ConfShrt) and (crossunder(RSI, RSI_overBought) or crossunder(RSI[1], RSI_overBought[1]))
ConditionLong = ((crossover(close, BB_lower) or crossover(close[1], BB_lower[1])) and Aroonish_ConfLong) and (crossover(RSI, RSI_overSold) or crossover(RSI[1], RSI_overSold[1]))

plotshape(crossover(close, BB_lower), color = color.blue, style = shape.circle, location = location.belowbar, size = size.auto, title = "BB-B")
plotshape(crossunder(close, BB_upper), color = color.blue, style = shape.circle, location = location.abovebar, size = size.auto, transp = 0, title = "BB-S")


// Make input options that configure backtest date range
// ====================================================================================
iMo = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
iDy = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
iYr = input(title="Start Year", type=input.integer, defval=(2020), minval=1800, maxval=2100)

eMo = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12)
eDy = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31)
eYr = input(title="End Year", type=input.integer, defval=(2021), minval=1800, maxval=2100)

// Look if the close time of the current bar falls inside the date range
// ====================================================================================
inDateRange = true


// Evaluates conditions to enter short or long
// ====================================================================================
if (inDateRange and ConditionLong)
    strategy.entry("A22.L", strategy.long)

if (inDateRange and ConditionLong[nBars])
    strategy.close("A22.L", comment="A22.L Exit")
    
if (inDateRange and ConditionShrt)
    strategy.entry("A22.S", strategy.short)

if (inDateRange and ConditionShrt[nBars])
    strategy.close("A22.S", comment="A22.S Exit")

if (not inDateRange)
    strategy.close_all()

مزید