دو طرفہ قیمت کی پیشرفت چلتی اوسط ٹائمنگ ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-15 16:28:12
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کا بنیادی منطق یہ ہے:

  1. مخصوص مدت (مثلاً 200 دن) کے چلتے ہوئے اوسط (EMA) کا حساب EMA فنکشن کا استعمال کرتے ہوئے کیا جائے گا۔

  2. اس بات کا تعین کرنے کے لئے قریبی قیمت کو ای ایم اے کے ساتھ موازنہ کریں کہ آیا قیمت ای ایم اے سے گزرتی ہے۔ خاص طور پر ، جب قریبی قیمت ای ایم اے سے اوپر ہوتی ہے تو ، قیمت ای ایم اے کے ذریعے ٹوٹ جاتی ہے۔ جب قریبی قیمت ای ایم اے سے نیچے ہوتی ہے تو ، قیمت ای ایم اے کے ذریعے ٹوٹ جاتی ہے۔

  3. اختراعات کی بنیاد پر طویل اور مختصر سگنل کا تعین کریں۔ جب قیمت EMA کے ذریعے ٹوٹ جاتی ہے تو ، طویل سگنل تیار کریں۔ جب قیمت EMA کے ذریعے ٹوٹ جاتی ہے تو ، مختصر سگنل تیار کریں۔

  4. جب سگنل ٹرگر ہوتا ہے تو ، ایک خاص فیصد (جیسے 100٪) کے ساتھ آرڈر دیں اور اسٹاپ نقصان اور منافع کی قیمتیں مقرر کریں۔

  5. جب سٹاپ نقصان یا منافع لینے کی قیمت کو چھو لیا جاتا ہے، بند پوزیشن.

  6. حرکت پذیر اوسط کے ذریعے قیمت توڑنے کے وقت سے فائدہ اٹھانے کے لئے عمل کو دہرائیں۔

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

فوائد

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

خطرات

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

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

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

  • بہتر حل کے لئے مختلف قسم کے اور چلتی اوسط کے پیرامیٹرز کا تجربہ کریں، مثال کے طور پر ای ایم اے، ایس ایم اے، ایل ڈبلیو ایم اے.
  • فلٹرنگ کی شرائط شامل کریں تاکہ وِپسا تجارت سے بچنے کے لئے، مثلاً حجم، بولنگر بینڈ، اے ٹی آر وغیرہ۔
  • اسٹاپ نقصان کو بہتر بنائیں اور ٹیسٹ کریں اور خطرات کو کم کرنے کے لئے منافع کی حکمت عملی بنائیں۔
  • مضبوط تجارتی نظام کے لئے رجحان کی پیروی، اوسط ریورس اور دیگر حکمت عملیوں کو یکجا کریں.
  • وسیع تر موافقت کے لئے پیرامیٹرز شامل کریں.

نتیجہ

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


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
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/

// Credits to the original Script - Range Filter DonovanWall https://www.tradingview.com/script/lut7sBgG-Range-Filter-DW/
// This version is the old version of the Range Filter with less settings to tinker with

//@version=5
strategy(title='Range Filter - B&S Signals', shorttitle='RF - B&S Signals', initial_capital=1000, currency=currency.GBP, default_qty_value=100, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.075, overlay=true)


i_startTime = input(defval=timestamp('01 Jan 2020 12:00 +0000'), title='Backtest Start')
i_endTime = input(defval=timestamp('01 Jan 2024 12:00 +0000'), title='Backtest End')

inDateRange     = true
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Functions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
longLossPerc = input.float(title='Long Stop Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01
shortLossPerc = input.float(title='Short Stop Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

longTakePerc = input.float(title='Long Take(%)', minval=0.0, step=0.1, defval=1) * 0.01
shortTakePerc = input.float(title='Short Take (%)', minval=0.0, step=0.1, defval=1) * 0.01

emaLength = input.int(200, title="EMA Length")

    // Determine stop loss price

//Range Size Function
rng_size(x, qty, n) =>
//    AC       = Cond_EMA(abs(x - x[1]), 1, n)
    wper = n * 2 - 1
    avrng = ta.ema(math.abs(x - x[1]), n)
    AC = ta.ema(avrng, wper) * qty
    rng_size = AC
    rng_size

//Range Filter Function
rng_filt(x, rng_, n) =>
    r = rng_
    var rfilt = array.new_float(2, x)
    array.set(rfilt, 1, array.get(rfilt, 0))
    if x - r > array.get(rfilt, 1)
        array.set(rfilt, 0, x - r)
    if x + r < array.get(rfilt, 1)
        array.set(rfilt, 0, x + r)
    rng_filt1 = array.get(rfilt, 0)

    hi_band = rng_filt1 + r
    lo_band = rng_filt1 - r
    rng_filt = rng_filt1
    [hi_band, lo_band, rng_filt]

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

//Range Source
rng_src = input(defval=close, title='Swing Source')

//Range Period
rng_per = input.int(defval=20, minval=1, title='Swing Period')

//Range Size Inputs
rng_qty = input.float(defval=3.5, minval=0.0000001, title='Swing Multiplier')

//Bar Colors
use_barcolor = input(defval=false, title='Bar Colors On/Off')

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Definitions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

//Range Filter Values
[h_band, l_band, filt] = rng_filt(rng_src, rng_size(rng_src, rng_qty, rng_per), rng_per)

//Direction Conditions
var fdir = 0.0
fdir := filt > filt[1] ? 1 : filt < filt[1] ? -1 : fdir
upward = fdir == 1 ? 1 : 0
downward = fdir == -1 ? 1 : 0

//Trading Condition
longCond = rng_src > filt and rng_src > rng_src[1] and upward > 0 or rng_src > filt and rng_src < rng_src[1] and upward > 0
shortCond = rng_src < filt and rng_src < rng_src[1] and downward > 0 or rng_src < filt and rng_src > rng_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

//Colors
filt_color = upward ? #05ff9b : downward ? #ff0583 : #cccccc
bar_color = upward and rng_src > filt ? rng_src > rng_src[1] ? #05ff9b : #00b36b : downward and rng_src < filt ? rng_src < rng_src[1] ? #ff0583 : #b8005d : #cccccc


ema = ta.ema(close,emaLength)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Outputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)

longTakePrice = strategy.position_avg_price * (1 + longTakePerc)
shortTakePrice = strategy.position_avg_price * (1 - shortTakePerc)

//Filter Plot
filt_plot = plot(filt, color=filt_color, linewidth=3, title='Filter', transp=67)

//Band Plots
h_band_plot = plot(h_band, color=color.new(#05ff9b, 100), title='High Band')
l_band_plot = plot(l_band, color=color.new(#ff0583, 100), title='Low Band')

//Band Fills
fill(h_band_plot, filt_plot, color=color.new(#00b36b, 92), title='High Band Fill')
fill(l_band_plot, filt_plot, color=color.new(#b8005d, 92), title='Low Band Fill')

//Bar Color
barcolor(use_barcolor ? bar_color : na)

if  inDateRange and close>ema
    strategy.entry("Long", strategy.long, when=longCondition)
    
if   inDateRange and close<ema
    strategy.entry("Short", strategy.short, when=shortCondition)


plot(ema)




//Plot Buy and Sell Labels
plotshape(longCondition, title='Buy Signal', text='BUY', textcolor=color.white, style=shape.labelup, size=size.normal, location=location.belowbar, color=color.new(color.green, 0))
plotshape(shortCondition, title='Sell Signal', text='SELL', textcolor=color.white, style=shape.labeldown, size=size.normal, location=location.abovebar, color=color.new(color.red, 0))

//Alerts
alertcondition(longCondition, title='Buy Alert', message='BUY')
alertcondition(shortCondition, title='Sell Alert', message='SELL')

if strategy.position_size > 0
    strategy.exit(id='Long', stop=longStopPrice, limit=longTakePrice)

if strategy.position_size < 0
    strategy.exit(id='Short', stop=shortStopPrice, limit=shortTakePrice)




مزید