اڈاپٹیو موونگ ایوریج ٹریڈنگ اسٹریٹجی


تخلیق کی تاریخ: 2024-02-22 17:09:39 آخر میں ترمیم کریں: 2024-02-22 17:09:39
کاپی: 0 کلکس کی تعداد: 642
1
پر توجہ دیں
1617
پیروکار

اڈاپٹیو موونگ ایوریج ٹریڈنگ اسٹریٹجی

جائزہ

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

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

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

اصلاح کی سمت

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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     ----------------------------------------