رینج فلٹر خرید و فروخت قلیل مدتی تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-09-21 21:17:40 آخر میں ترمیم کریں: 2023-09-21 21:17:40
کاپی: 0 کلکس کی تعداد: 854
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

حکمت عملی کا اصول

اس حکمت عملی کا بنیادی اشارے قیمتوں کے اتار چڑھاو کی حد ہے۔ اس کا حساب کتاب کرنے کا طریقہ یہ ہے:

  1. قیمتوں میں اضافے کے طور پر پچھلے N ادوار میں اعلی ترین اور کم ترین قیمتوں کے درمیان فرق کا حساب لگائیں

  2. قیمتوں میں اضافے پر یکساں طور پر ہموار عملدرآمد ، رینج فلٹر حاصل کریں

  3. جب قیمتوں میں اضافہ حد سے زیادہ فلٹر ہوتا ہے تو ، خریدنے کا اشارہ پیدا ہوتا ہے

  4. جب قیمتوں میں کمی رینج فلٹرز سے زیادہ ہو تو ، فروخت کا اشارہ پیدا ہوتا ہے

اس طرح ، قیمتوں میں اتار چڑھاؤ کی حد کو توڑنے کا استعمال رجحان کی سمت کا تعین کرنے کے لئے کیا جاسکتا ہے ، تجارتی شور کو فلٹر کرنے کے لئے ، اور تجارتی سگنل کو زیادہ واضح کرنے کے لئے۔

اسٹریٹجک فوائد

  • قیمتوں کی حقیقی رینج کا استعمال ، توڑنے کا اندازہ لگانا آسان ہے
  • فلو رینج ہموار علاج، مؤثر فلٹرنگ شور
  • ٹرانسمیشن سگنل، مختصر لائن رجحانات کو پکڑنے کے لئے آسان
  • مختصر لائن آپریشنز کے لئے اعلی ٹرانزیکشن فریکوئنسی
  • ایڈجسٹ پیرامیٹرز، مختلف اقسام کے لئے آسان اصلاح

اسٹریٹجک رسک

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

مندرجہ ذیل اقدامات سے خطرے کو کم کیا جا سکتا ہے:

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

اصلاح کی سمت

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

  1. ٹیسٹ حساب کی حد کے لئے مختلف مدت پیرامیٹرز

  2. بہتر رینج فلٹرنگ کے اتار چڑھاو کے عوامل

  3. MACD اور دیگر اشارے شامل کرنے کے لئے دوسری تصدیق

  4. موبائل سٹاپ یا ٹریکنگ سٹاپ کا استعمال

  5. مختلف اقسام کے مطابق مختلف ایڈجسٹمنٹ پیرامیٹرز

  6. پوزیشن مینجمنٹ سسٹم کو بہتر بنانے پر غور کریں

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Range Filter Buy and Sell 5min [Strategy]", overlay=true, commission_type=strategy.commission.percent, commission_value=0.025, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000, slippage=0)

// === INPUT BACKTEST RANGE ===
useDate = input(true,     title='---------------- Use Date ----------------', type=bool)
FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 25, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true  // create function "within window of time"
// === INPUT BACKTEST RANGE ===


sources = input(defval=close, title="Source")
isHA = input(false, "Use HA Candles", bool)
src = isHA ? security(heikenashi(tickerid), period, sources) : sources
// Sampling Period
// Settings for 5min chart, BTCUSDC. For Other coin, change the paremeters

per = input(defval=50, minval=1, title="Sampling Period")

// Range Multiplier

mult = input(defval=3.0, minval=0.1, title="Range Multiplier")

// Smooth Average Range

smoothrng(x, t, m)=>
    wper      = (t*2) - 1
    avrng     = ema(abs(x - x[1]), t)
    smoothrng = ema(avrng, wper)*m
    smoothrng
smrng = smoothrng(src, per, mult)

// Range Filter

rngfilt(x, r)=>
    rngfilt  = x
    rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r))
    rngfilt
filt = rngfilt(src, smrng)

// Filter Direction

upward   = 0.0
upward  := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])
downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])

// Target Bands

hband = filt + smrng
lband = filt - smrng

// Colors

filtcolor = upward > 0 ? lime : downward > 0 ? red : orange
barcolor  = (src > filt) and (src > src[1]) and (upward > 0) ? lime : (src > filt) and (src < src[1]) and (upward > 0) ? green : 
   (src < filt) and (src < src[1]) and (downward > 0) ? red : (src < filt) and (src > src[1]) and (downward > 0) ? maroon : orange

filtplot = plot(filt, color=filtcolor, linewidth=3, title="Range Filter")

// Target

hbandplot = plot(hband, color=aqua, transp=100, title="High Target")
lbandplot = plot(lband, color=fuchsia, transp=100, title="Low Target")

// Fills

fill(hbandplot, filtplot, color=aqua, title="High Target Range")
fill(lbandplot, filtplot, color=fuchsia, title="Low Target Range")

// Bar Color

//barcolor(barcolor)

// Break Outs 

longCond = na
shortCond = na
longCond := ((src > filt) and (src > src[1]) and (upward > 0)) or ((src > filt) and (src < src[1]) and (upward > 0)) 
shortCond := ((src < filt) and (src < src[1]) and (downward > 0)) or ((src < filt) and (src > src[1]) and (downward > 0))

CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1

//Alerts

plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = white, style=shape.labelup, size = size.normal, location=location.belowbar, color = green, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = white, style=shape.labeldown, size = size.normal, location=location.abovebar, color = red, transp = 0)

//strategy.entry("Long", strategy.long, stop = hband, when = window() , comment="Long")
//strategy.entry("Short", strategy.short, stop = lband, when = window() , comment="Short")

strategy.entry("Long", strategy.long, when = longCondition and window() , comment="Long")
strategy.entry("Short", strategy.short, when = shortCondition and window() , comment="Short")



// === Stop LOSS ===
useStopLoss = input(false, title='----- Use Stop Loss / Take profit -----', type=bool)
sl_inp = input(100, title='Stop Loss %', type=float, step=0.25)/100
tp_inp = input(1.5, title='Take Profit %', type=float, step=0.25)/100
stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
stop_level_short = strategy.position_avg_price * (1 + sl_inp)
take_level_short = strategy.position_avg_price * (1 - tp_inp)
// === Stop LOSS ===

if useStopLoss
    strategy.exit("Stop Loss/Profit Long","Long", stop=stop_level, limit=take_level)
    strategy.exit("Stop Loss/Profit Short","Short", stop=stop_level_short, limit=take_level_short)