انکولی حرکت پذیر اوسط چینل بریک آؤٹ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-02 15:05:56
ٹیگز:

img

جائزہ

انکولی حرکت پذیر اوسط چینل بریک آؤٹ حکمت عملی ایک رجحان کی پیروی کرنے والی بریک آؤٹ حکمت عملی ہے جو انکولی حرکت پذیر اوسط (AMA) اور تجارتی سگنل پیدا کرنے کے لئے ایک انکولی چینل رینج پر مبنی ہے۔ یہ موجودہ قیمت کے رجحان کی سمت کا تعین کرنے اور بروقت اندراجات اور باہر نکلنے کے لئے قیمت کے بریک آؤٹ سگنل کا پتہ لگانے کے لئے انکولی چینل کی سطح کا استعمال کرتا ہے۔

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

اس حکمت عملی کا بنیادی اشارے موافقت پذیر چلتی اوسط (اے ایم اے) ہے ، جو قیمت کے رجحان کو پکڑنے کے لئے استعمال ہوتا ہے۔ اے ایم اے کا حساب اس طرح کیا جاتا ہے:

AMA (t) = α (t-1) * P (t) + [1 - α (t-1) ] * AMA (t-1)

جہاں P ((t) موجودہ قیمت ہے ، اور α ((t) 0 اور 1 کے درمیان ہموار کنسٹنٹ ہے۔ α ((t) کو قیمت کی تبدیلیوں کے لئے AMA کی حساسیت کو کنٹرول کرنے کے لئے کچھ اصولوں کے مطابق متحرک طور پر ایڈجسٹ کیا جاتا ہے۔ خاص طور پر ، α ((t) AMA اور قیمت کے مابین انحراف SNRT کے متناسب ہے ، جس کا حساب اس طرح کیا جاتا ہے:

SNRT = (P(t) - AMA(t-1)) / AMA(t-1)

اس طرح ، جیسے جیسے قیمتوں میں اتار چڑھاؤ بڑھتا ہے ، α ((t) بڑھ جائے گا تاکہ AMA کو زیادہ ذمہ دار بنایا جاسکے۔ جب اتار چڑھاؤ کم ہوجاتا ہے تو ، α ((t) کم ہوجائے گا تاکہ AMA کو ہموار بنایا جاسکے۔

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

اوپری: H(t) = (1 + β*H(t-1)) * AMA(t)

نیچے: L ((t) = (1 - β*L ((t-1)) * AMA ((t))

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

  • جب قیمت اوپری سطح سے تجاوز کرتی ہے تو لانگ میں داخل ہوں۔

  • جب قیمت نیچے کی سطح سے ٹوٹ جاتی ہے تو مختصر میں داخل ہوں۔

  • دوسری صورت میں، فلیٹ رہنے.

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

اس حکمت عملی کے فوائد میں شامل ہیں:

  1. عام طور پر غیر مستحکم مارکیٹوں میں، سادہ حرکت پذیر اوسط کے مقابلے میں، AMA قیمت کے رجحانات کو پکڑنے میں زیادہ لچکدار ہے.

  2. موافقت پذیر چینل اپنی چوڑائی کو متحرک طور پر ایڈجسٹ کرسکتا ہے ، جب رجحان غیر واضح ہو تو توسیع کرتا ہے اور جب رجحان سامنے آتا ہے تو تنگ ہوجاتا ہے۔

  3. قیمت کے بریکآؤٹ سگنل بروقت اندازہ لگا سکتے ہیں کہ رجحان کی شروعات زیادہ جیت کی شرح کے ساتھ ہوتی ہے۔

  4. منطق سادہ اور واضح ہے، مقدار کی تجارت کے لئے سمجھنے اور خودکار کرنے میں آسان ہے.

خطرے کا تجزیہ

اس حکمت عملی کے خطرات میں شامل ہیں:

  1. غلط AMA پیرامیٹرز قیمت کے رجحانات کو نظر انداز کرسکتے ہیں یا غلط سگنل پیدا کرسکتے ہیں۔

  2. موافقت پذیر چینل پیرامیٹرز جیسے β کو محتاط ٹوننگ کی ضرورت ہوتی ہے ، ورنہ بہت زیادہ وِپسا یا یاد آنے والے رجحانات ہوسکتے ہیں۔

  3. قیمتوں کے وقفے غلط وقفے کے لئے حساس ہیں، زیادہ فلٹرز کی ضرورت ہوتی ہے.

  4. حکمت عملی میں رسک مینجمنٹ یا سٹاپ نقصان کے طریقہ کار شامل نہیں ہیں۔

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

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

  1. اے ایم اے کو زیادہ ذمہ دار بنانے کے لئے α حساب کتاب کو بہتر بنانا۔

  2. غلط سگنل سے بچنے کے لئے ابتدائی بریک آؤٹ کے بعد مزید تصدیق شامل کرنا۔

  3. بریک آؤٹ کی صداقت کی تصدیق کے لیے حجم یا اتار چڑھاؤ جیسے فلٹرز کا اطلاق۔

  4. منافع میں مقفل کرنے اور خطرے کو کنٹرول کرنے کے لئے ٹریلنگ سٹاپ نقصان کو شامل کرنا.

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

نتیجہ

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


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// CryptoStatistical - 2019
// AMA Strategy Channel Breakout Strategy from E. Durenard - Professional Automated Trading 
// https://www.amazon.com/Professional-Automated-Trading-Theory-Practice/dp/1118129857

strategy(title="[CS] AMA Strategy - Channel Break Out", shorttitle="AMA_ChannelBreakout_Strategy", initial_capital = 1000, overlay=true, pyramiding = 0, calc_on_every_tick=false, calc_on_order_fills=false, commission_type= strategy.commission.percent, commission_value = 0.08, currency=currency.USD)
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=95)

testPeriod() =>  true

price = input(title='Price Source:', type=input.source, defval=close)

ama = price
hb = price
lb = price

// Static model parameters
minfactor = 0.
maxfactor = 1.
deviation_max = 1.
deviation_min = 1.
beta_hb = 1.
beta_lb = 1.
snr = 1.

normalized_atan= 0.
alpha = 0.5
// Suggested snr-factor from .5 upto 3.1 by .3 to find best parameter
snrfactor = input(title='SNR Factor:', type=input.float, minval=0.6, maxval=3.3, step=0.3, defval=2.1)

// Sensitivity Lookback search for the best perdiod from 5 to 20
lookback = input(title='Sensitivity Lookback:', type=input.integer, defval=5)

// Suggested Beta from .5 below 4.5 by .3, usually in the range 1.2, 1.5
beta = input(title='Beta:', type=input.float, minval=0.6, maxval=4.5, step=0.3, defval=2.1)

offsetlabel = input(title='Offset Label:', type=input.float, minval=0.001, maxval=0.03, step=0.001, defval=0.001)

// pi/2
pi2 = 1.5707963267948966

// Zero-lag resampled moving average (Durschner nwma)
f_nwma(_src, _period) =>
    fast = _period/2
    lambda = _period/fast
    alpha = lambda * (_period - 1)/(_period - lambda)
    average1 = wma(_src,_period)
    average2 = wma(average1,fast)
    nwma = (1+alpha)*average1 - alpha*average2

ama := alpha[1]*price + (1-alpha[1])*nz(ama[1])

deviation_max := alpha[1]*max((price[0] - price[1])/price[1],0) + (1-alpha[1])*nz(deviation_max[1])
deviation_min := -alpha[1]*min((price[0] - price[1])/price[1],0) + (1-alpha[1])*nz(deviation_min[1])

beta_hb := beta*deviation_max
beta_lb := beta*deviation_min
hb := (1 + beta_hb[1])*ama
lb := (1 - beta_lb[1])*ama

snr := if price > hb
    ((price - ama[1])/ama[1])/beta_lb
else
    if price < lb
        -((price - ama[1])/ama[1])/beta_hb
    else
        0

normalized_atan := (atan(snrfactor*snr) + pi2)/(2*pi2)
alpha := f_nwma(minfactor + (maxfactor - minfactor)*normalized_atan, lookback)

plot(ama, color=color.black)
plot(hb, color=color.green)
plot(lb, color=color.red)

// Buy Condition Var
bc = false
// Sell Condition Var
sc = false
d = color.black

// Buy Condition
if(price > hb)
    bc := true
    d := color.green

// Sell Condition
if(price < lb)
    sc := true
    d := color.red

if(testPeriod())
    strategy.entry("Long", strategy.long, when = bc)
    strategy.entry("Short", strategy.short, when = sc)

alertcondition(bc, title='BuyCondition', message='Buy')
alertcondition(sc, title='SellCondition', message='Sell')

plotshape(title='Buy', series=bc ? price * (1 - offsetlabel) : na, text='A1B', style=shape.labelup, location=location.absolute, color=d, textcolor=color.white, offset=0)
plotshape(title='Sell', series=sc ? price  * (1 + offsetlabel) : na, text='A1S', style=shape.labeldown, location=location.absolute, color=d, textcolor=color.white, offset=0)

مزید