موافقت پذیر حرکت پذیر اوسط ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-22 17:09:39
ٹیگز:

img

جائزہ

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

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

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

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

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

خطرے کا تجزیہ

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

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

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

نتیجہ

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

//
//---------------------------------------------
//* Author - PPSingnal
//* http://ppsignal.com
//---------------------------------------------
//
//

strategy (title="PPSignal V4 (Auto Adaptive Times)", shorttitle="PPSignal V4", overlay=true)
delayOffset = input(defval = 0, title = "Delay Open/Close MA (Forces Non-Repainting)", minval = 0, step = 1)

//----------------------------------------    INICIO PPI     ----------------------------------------

// - PARÁMETROS DE ENTRADA
// SE DEFINE LA RESOLUCIÓN
useRes1 = true
setRes1 = true


tf = timeframe.period == "60" ? 4 : timeframe.period == "240" ? 4 : timeframe.period == "D" ? 4 : timeframe.period == "W" ?4 : 4


// PRIMER DEMA
type   = "DEMA"
src   = close
len    = tf
off   = 0
lsma   = 0
// SEGUNDA DEMA
type2   = "DEMA"
src2    = open
len2    = tf
off2    = 0
lsma2   = 0

// - INPUTS END

//----------------------------------------    INICIO FUNCIONES     ----------------------------------------

// RETORNA UNA MEDIA MOVIL (TYPE=TIPO / SRC = TIPO DE PRECIO / LEN=LONGITUD / LSMA=0)
variant(type, src, len, lsma) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v3 = wma(src, len)                                                  // Weighted
    v4 = vwma(src, len)                                                 // Volume Weighted
    v5 = na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len    // Smoothed
    v6 = 2 * v2 - ema(v2, len)                                          // Double Exponential
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)               // Triple Exponential
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))   // Hull
    v9 = linreg(src, len, lsma)                                         // Least Squares
    // return variant, defaults to SMA if input invalid.
    type=="EMA"?v2 : type=="WMA"?v3 : type=="VWMA"?v4 : type=="SMMA"?v5 : type=="DEMA"?v6 : type=="TEMA"?v7 : type=="HullMA"?v8 : type=="LSMA"?v9 : v1

// SuperSmoother filter
    // © 2013  John F. Ehlers
    a1 = exp(-1.414*3.14159 / len)
    b1 = 2*a1*cos(1.414*3.14159 / len)
    c2 = b1
    c3 = (-a1)*a1
    c1 = 1 - c2 - c3
    v12 = 0.0
    v12 := c1*(src + nz(src[1])) / 2 + c2*nz(v12[1]) + c3*nz(v12[2])
   

// RETORNA LA RESOLUCIÓN SETEADA Y SINO LA DEFAULT
// 3H:      1min - 3min - 5min - 15min
// DIARIO:  30 - 45 - 60
// SEMANAL: 120 - 180 - 240 - D


reso(exp, use, res) => use ? request.security(syminfo.tickerid, timeframe.period=="1" ? "D" : timeframe.period=="3" ? "D" : timeframe.period=="5" ? "D" : timeframe.period=="15" ? "D" : timeframe.period=="30" ? "D" : timeframe.period=="45" ? "W" : timeframe.period=="60" ? "W" : timeframe.period=="120" ? "W" : timeframe.period=="180" ? "W" : timeframe.period=="240" ? "W" : timeframe.period=="D" ? "W" : "W", exp) : exp




//----------------------------------------    FIN FUNCIONES     ----------------------------------------

//----------------------------------------    INICIO VARIABLES     ----------------------------------------

// DEMAS
ma_short    = reso(variant(type, src[off], len, lsma), useRes1, setRes1)
ma_long     = reso(variant(type2, src2[off2], len2, lsma2), useRes1, setRes1)


//----------------------------------------    FIN VARIABLES     ----------------------------------------


//----------------------------------------    FIN PPI     ----------------------------------------

//----------------------------------------    PRIMER FILTRO      ----------------------------------------
// Double HullMA
scolor      = false

n=1
n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)

//----------------------------------------    FIN PRIMER FILTRO     ----------------------------------------

//----------------------------------------    INICIO CONDICIONES      ----------------------------------------

// CONDICION CON FILTRO
cruce= (ma_short > ma_long) and n1>n2 ? true : ma_short < ma_long ? false : cruce[1]
// Condition

// FONDO DE COLOR
bground = cruce ? white : red
bgcolor(bground, transp=90)


// BARRAS COLOREADAS
barcol = cruce ? yellow : red 
barcolor(barcol, transp=0)

closePlot   = plot(ma_short, title = "Zone 1", color = gray, circles = 0, style = circles, transp = 100)
openPlot   = plot(ma_long, title = "Zone 2", color = green, circles = 0, style = circles, transp = 100)
trendState  = ma_short > ma_long ? true : ma_short < ma_long ? false : trendState[1]

// channel fill
closePlotU  = plot(trendState ? ma_short : na, transp = 100, editable = false)
openPlotU   = plot(trendState ? ma_long : na, transp = 100, editable = false)
closePlotD  = plot(trendState ? na : ma_short, transp = 100, editable = false)
openPlotD   = plot(trendState ? na : ma_long, transp = 100, editable = false)

fill(openPlotU, closePlotU, title = "Up Trend Fill", color = yellow, transp = 70)
fill(openPlotD, closePlotD, title = "Down Trend Fill", color = red, transp = 70)




//----------------------------------------    FIN CONDICIONES     ----------------------------------------

//----------------------------------------    INICIO ESTRATEGIA      ----------------------------------------

//CONDICION COMPRA
longCond    = (ma_short > ma_long) and n1>=n2

//CONDICION VENTA

shortCond    = (ma_short < ma_long)

//ABRO COMPRA A
strategy.entry("Bull Trend", strategy.long, when = longCond)

//ABRO VENTA A
strategy.entry("Bearish Trend", strategy.short, when = shortCond)

//CIERRO VENTA A
strategy.exit("Exit Short", from_entry = "Bull Trend", when = shortCond)

//CIERRO COMPRA A
strategy.exit("Exit Long", from_entry = "Bearish Trend", when = longCond)

//----------------------------------------    FIN ESTRATEGIA     ----------------------------------------





مزید