متحرک اوسط دوہری حکمت عملی

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

img

جائزہ

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

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

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

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

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

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

اس حکمت عملی کے مندرجہ ذیل فوائد ہیں:

  1. ٹریڈنگ سگنلز کی ترتیب کے لئے ڈبل فلٹر کچھ شور کو فلٹر کر سکتا ہے اور سگنل کی کیفیت کو بہتر بنا سکتا ہے.

  2. کم اتار چڑھاؤ فلٹر حکمت عملی کو لچک کے ساتھ مختلف مارکیٹ کے حالات کو اپنانے کی اجازت دیتا ہے.

  3. مختلف پیرامیٹرز کے لئے اعلی حسب ضرورت کو مختلف مصنوعات کے لئے بہتر بنایا جا سکتا ہے.

  4. یہ منحنی فٹنگ سے اثر کو کم کرنے کے لئے repainting کی تقریب پر مشتمل نہیں ہے.

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں:

  1. ڈبل فلٹر کچھ حقیقی سگنل کو فلٹر کرسکتا ہے اور مواقع سے محروم ہوسکتا ہے۔ پیرامیٹرز کو ایڈجسٹ کرکے اس کو بہتر بنایا جاسکتا ہے۔

  2. کم اتار چڑھاؤ فلٹر کی حد کا تعین کرنے کے لئے محتاط جانچ کی ضرورت ہے۔ غلط ترتیبات سگنل کے انحراف کا سبب بن سکتی ہیں۔

  3. ایم اے اور رفتار کے اشارے کے لئے پیرامیٹر کی ترتیبات کو مخصوص مصنوعات کے لئے بہتر بنانے کی ضرورت ہے، اور عالمگیر پیرامیٹرز کا تعین کرنا مشکل ہے.

  4. کوئی repainting تقریب مکمل طور پر backtest وکر فٹنگ مسئلہ سے بچنے کے لئے نہیں کر سکتے ہیں، اور حقیقی ٹریڈنگ کی کارکردگی اب بھی تصدیق کی ضرورت ہے.

  5. اعلی حسب ضرورت پیرامیٹر کی جگہ کی پیچیدگی اور اصلاح کی مشکل میں اضافہ کرتی ہے.

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

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

  1. ایم اے اور رفتار کے اشارے کے مزید مجموعوں کا تجربہ کریں تاکہ بہترین مماثلت والے اشارے مل سکیں۔

  2. ایم اے کی لمبائی پیرامیٹرز اور رفتار کے اشارے کو بہتر بنائیں تاکہ تاخیر اور شور کو متوازن کیا جاسکے۔

  3. زیادہ مستحکم اشارے کے مجموعے تلاش کرنے کے لئے ڈھلوان کا حساب لگانے کے لئے پیرامیٹرز کو بہتر بنائیں.

  4. لچک کو بہتر بنانے کے لئے مختلف کم اتار چڑھاؤ کے اشارے اور پیرامیٹرز کا تجربہ کریں۔

  5. بہترین قابل اطلاق دائرہ کار تلاش کرنے کے لئے مختلف مصنوعات اور ٹائم فریم پر ٹیسٹ کریں۔

  6. دستی اصلاح کے کام کے بوجھ کو کم کرنے کے لئے پیرامیٹر انکولی میکانزم کی تعمیر.

نتیجہ

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

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


/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-12 00:00:00
period: 1h
basePeriod: 15m
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/
// © Allenlk
//@version=4
strategy("DRSI DMA Scalping Strategy", shorttitle="DRSIDMA", overlay=false, initial_capital=1000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//Inputs
matype             = input(7, minval=1, maxval=8, title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3", group="Moving Average")
masrc              = input(close, title="MA Source", group="Moving Average")
malen              = input(5, title="Moving Average Length - LookBack Period", group="Moving Average")
factorT3           = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0, group="Moving Average")
maderiv            = input(3, title="MA Slope Lookback", minval=1, group="Moving Average")
masmooth           = input(5, title="MA Slope Smoothing", minval=1, group="Moving Average")
momtype            = input(3, minval=1, maxval=3, title="1=RSI, 2=CCI, 3=RSI/ROC", group="Momentum Moving Average")
momsrc             = input(close, title="Momentum Source", group="Momentum Moving Average")
momlen             = input(3, title="Momentum Length", minval=1, group="Momentum Moving Average")
momderiv           = input(8, title="Momentum Slope Lookback", minval=1, group="Momentum Moving Average")
momsmooth          = input(7, title="Momentum Slope Smoothing", minval=1, group="Momentum Moving Average")
higherTf           = input("1", title="Higher timeframe?", type = input.resolution, group="Time Resolution")
higherTfmult       = input(130, title="MA Slope multiplier for Alternate Resolutions (Make the waves of the blue line similar size as the orange line)", group="Time Resolution")
buffup             = input(0.02, title="Buy when both slopes cross this line", step=0.01, group="Buy and Sell Threshold")
bufflow            = input(-0.03, title="Sell when both slopes cross this line", step=0.01, group="Buy and Sell Threshold")
lowVolMALength     = input(28, title="Big MA Length", minval=1, group="Low Volatility Function")
MAlength           = input(10, title="Low Volatility Moving Average Length", minval=1, group="Low Volatility Function")
MAThresh           = input(0.05, title="Low Volatility Buy and Sell Threshold", step=0.01, group="Low Volatility Function")
Volminimum         = input(2.5, title="Minimum volatility to trade", minval=0, step=0.01, group="Low Volatility Function")

//Low Volatility Function
//When Volatility is low refer to the slope of a long moving average
low_vol_MA         = sma(close, lowVolMALength)
low_vol_down       = (low_vol_MA[3] - low_vol_MA[1]) > MAThresh
low_vol_up         = (low_vol_MA[3] - low_vol_MA[1]) < MAThresh * -1
percent_volatility = (1 - (low / high)) * 100
chng_MA            = sma(percent_volatility, MAlength)
bad_vol            = chng_MA < Volminimum

//No repaint function
nrp_funct(_symbol, _res, _src) => security(_symbol, _res, _src[barstate.isrealtime ? 1 : 0])

//hull ma definition
hullma = wma(2*wma(masrc, malen/2)-wma(masrc, malen), round(sqrt(malen)))

//TEMA definition
ema1 = ema(masrc, malen)
ema2 = ema(ema1, malen)
ema3 = ema(ema2, malen)
tema = 3 * (ema1 - ema2) + ema3

//Tilson T3
factor = factorT3 *.10
gd(masrc, malen, factor) => ema(masrc, malen) * (1 + factor) - ema(ema(masrc, malen), malen) * factor 
t3(masrc, malen, factor) => gd(gd(gd(masrc, malen, factor), malen, factor), malen, factor) 
tilT3 = t3(masrc, malen, factor) 
 
//MA Type 
avg = matype == 1 ? sma(masrc,malen) : matype == 2 ? ema(masrc,malen) : matype == 3 ? wma(masrc,malen) : matype == 4 ? hullma : matype == 5 ? vwma(masrc, malen) : matype == 6 ? rma(masrc,malen) : matype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3

//MA Slope Percentage
DeltaAvg      = (avg / avg[maderiv]) - 1
SmoothedAvg   = sma(DeltaAvg, masmooth) 
MAout         = nrp_funct(syminfo.tickerid, higherTf, SmoothedAvg) * higherTfmult

//Momentum indicators
Momentum = momtype == 1 ? rsi(momsrc, momlen) : momtype == 2 ? cci(momsrc, momlen) : momtype == 3 ? rsi(roc(momsrc,momlen),momlen) : na

//Momentum Slope Percentage
Deltamom = (Momentum / Momentum[momderiv]) - 1
SmoothedMom = sma(Deltamom, momsmooth) 
Momout   = nrp_funct(syminfo.tickerid, higherTf, SmoothedMom)

//Plottings
plot(buffup, color=color.green, title="Buy line")
plot(bufflow, color=color.red, title="Sell line")
plot(MAout, color=color.blue, linewidth=2, title="MA Slope")
plot(Momout, color=color.orange, linewidth=2, title="Momentum Slope")

longCondition = bad_vol ? low_vol_up : MAout > buffup and Momout > buffup
if (longCondition)
    strategy.entry("Buy", strategy.long)

shortCondition = bad_vol ? low_vol_down : MAout < bufflow and Momout < bufflow
if (shortCondition)
    strategy.entry("Sell", strategy.short)

مزید