
یکساں طور پر ایڈجسٹ چینل قیمت توڑنے کی حکمت عملی ایک لمبی لائن توڑنے کی حکمت عملی ہے جس میں خرید و فروخت کے سگنل کا فیصلہ یکساں طور پر ایڈجسٹ حرکت پذیر اوسط ((AMA) اور خود سے ایڈجسٹ چینل کی حد پر مبنی ہوتا ہے۔ اس حکمت عملی میں AMA کا استعمال موجودہ قیمت کی رجحان کی سمت کا حساب لگانے کے لئے کیا جاتا ہے ، اور متحرک ایڈجسٹ چینل کی حد کے ساتھ مل کر قیمت توڑنے کے سگنل کی تلاش کی جاتی ہے ، تاکہ مناسب وقت پر خرید و فروخت کی جاسکے۔
اس حکمت عملی کا بنیادی اشارے اوسطاً ایڈجسٹ شدہ منتقل اوسط ((AMA) ہے ، جس میں قیمتوں کے رجحانات کو پکڑنے کے لئے استعمال کیا جاتا ہے۔ اے ایم اے کا حساب کتاب فارمولا ہے:
AMA(t) = α(t-1) * P(t) + [1 - α(t-1)] * AMA(t-1)
اس میں ، P (t) موجودہ قیمت ہے ، اور α (t) ہموار مستقل ہے ، جس کی قیمتیں 0 سے 1 کے درمیان ہوتی ہیں۔ α (t) کو کچھ قواعد کے ذریعہ متحرک طور پر ایڈجسٹ کیا جاتا ہے ، تاکہ قیمت میں تبدیلی کے بارے میں AMA کی حساسیت کو کنٹرول کیا جاسکے۔ خاص طور پر ، α (t) کی قیمتیں AMA اور قیمتوں کے انحراف کی چوڑائی SNRT کے متناسب ہیں۔ SNRT حساب کتاب کا فارمولا مندرجہ ذیل ہے:
SNRT = (P(t) - AMA(t-1)) / AMA(t-1)
اس طرح ، جب قیمت میں اتار چڑھاؤ بڑھتا ہے تو ، α t) بڑھتا ہے ، جس سے اے ایم اے قیمتوں پر زیادہ حساس ہوتا ہے۔ جب قیمت میں اتار چڑھاؤ کم ہوتا ہے تو ، α t) کم ہوتا ہے ، جس سے اے ایم اے میں زیادہ ہموار ہوتا ہے۔
اے ایم اے کی بنیاد پر ، حکمت عملی نے قیمتوں میں خرابی کے اشارے کی کھوج کے ل adap adap adaptive خود کار طریقے سے چینل کی حد تشکیل دی ہے۔ چینل کی حد کے اوپر اور نیچے کی ٹریک یہ ہیں:
اپ ریل: H ((t) = (1 + β*H(t-1)) * AMA(t)
نیچے ریل: L (t) = (1 - β*L(t-1)) * AMA(t)
جہاں β ایک ایڈجسٹمنٹ پیرامیٹر ہے جس سے چینل کی چوڑائی کنٹرول ہوتی ہے۔ آخر میں ، حکمت عملی تجارتی سگنل پیدا کرتی ہے کہ آیا قیمت اوپر یا نیچے کی ٹریک کو توڑ سکتی ہے یا نہیں:
جب قیمتوں میں اضافہ ہوتا ہے تو زیادہ کام کریں۔
قیمتوں میں کمی کے دوران خالی جگہیں بنانا
اگر نہیں، تو یہ خالی ہے۔
یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:
ایک عام حرکت پذیر اوسط کے بجائے اے ایم اے کا استعمال کرتے ہوئے ، قیمتوں کے رجحانات کو زیادہ لچکدار انداز میں پکڑنے کے لئے ، خاص طور پر زیادہ اتار چڑھاؤ والے بازاروں کے لئے موزوں ہے۔
خود کار طریقے سے چینل کی حد کو متحرک طور پر ایڈجسٹ کیا جاسکتا ہے ، جب مارکیٹ میں غیر یقینی صورتحال ہو تو چینل کی چوڑائی کو بڑھا دیا جاسکتا ہے ، جب واضح رجحانات ہوں تو چینل کی قیمتوں کا سراغ لگانے کے لئے تنگ کیا جاسکتا ہے۔
قیمتوں میں بریک ٹریڈنگ سگنل کا استعمال کرتے ہوئے ، رجحان کے ابتدائی مرحلے میں بروقت گرفت کی جاسکتی ہے ، جس میں جیت کی اعلی شرح ہوتی ہے۔
حکمت عملی کی منطق سادہ اور واضح ہے ، آسانی سے سمجھنے اور لاگو کرنے کے لئے ، اور مقدار میں تجارت کے لئے موزوں ہے۔
اس حکمت عملی میں مندرجہ ذیل خطرات بھی ہیں:
AMA پیرامیٹرز کی غلط ترتیب قیمتوں کے غلط رجحانات یا جعلی سگنل پیدا کرنے کا سبب بن سکتی ہے۔
خود کار طریقے سے چینل پیرامیٹرز جیسے بی کو احتیاط سے ترتیب دینے کی ضرورت ہے ، ورنہ بہت زیادہ بار بار تجارت یا کھوئے ہوئے رجحانات پیدا ہوسکتے ہیں۔
قیمتوں میں اضافے کے سگنل کو دھوکہ دہی سے دھوکہ دیا جاسکتا ہے ، اور اس کو مزید اشارے کے ساتھ مل کر فلٹر کیا جانا چاہئے۔
اس حکمت عملی میں فنڈ مینجمنٹ اور اسٹاپ نقصان کے طریقہ کار کو مدنظر نہیں رکھا گیا ہے۔ اس میں نقصان کا خطرہ ہے۔
یہ حکمت عملی مندرجہ ذیل پہلوؤں سے بہتر بنائی جا سکتی ہے۔
اے ایم اے کی α قدر کا حساب لگانے کے طریقہ کار کو بہتر بنانا تاکہ قیمتوں میں تبدیلیوں کے لئے زیادہ حساس ہو۔
اس کے علاوہ، غلط سگنل کو روکنے کے لئے، راستے کی توڑ کے بعد مزید تصدیق.
ٹرانزیکشن حجم یا اتار چڑھاؤ کے اشارے کے ساتھ مل کر فلٹرنگ کی جاتی ہے تاکہ اس بات کا یقین کیا جا سکے کہ اس کی کامیابی حاصل کی جائے۔
منافع کو لاک کرنے اور خطرے کو کنٹرول کرنے کے لئے ٹریکنگ سٹاپ نقصان کا طریقہ کار شامل کریں۔
فنڈ مینجمنٹ کو بہتر بنانا ، مختلف اثاثوں کے لئے معقول پوزیشن مینجمنٹ کا تعین کرنا۔
خود کو اپنانے والی چینل قیمت توڑنے کی حکمت عملی مجموعی طور پر ایک سادہ عملی رجحان سے باخبر رہنے کی حکمت عملی ہے۔ یہ قیمتوں کے رجحانات کی پیروی کرنے کے لئے لچکدار ایپلی کیشنز کے ذریعہ خود کو منتقل کرنے والی اوسط کو اپنانے کے لئے تیار ہے ، اور خود کو اپنانے والے چینل کو توڑنے کے اشارے کے ساتھ معاون ہے۔ اس حکمت عملی کے کچھ فوائد ہیں ، لیکن اس میں ممکنہ خطرات بھی موجود ہیں۔ اس حکمت عملی کو پیرامیٹرز کو بہتر بنانے ، فلٹرنگ کے حالات میں اضافے ، اور نقصان کو روکنے کے طریقہ کار کو بہتر بنانے کے ذریعہ زیادہ مستحکم اور قابل اعتماد بنایا جاسکتا ہے۔
/*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)