دوہری اے ٹی آر چینل رجحان کی پیروی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-01 11:40:07
ٹیگز:

img

جائزہ

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

یہ کیسے کام کرتا ہے

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

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

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

فوائد

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

خطرات

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

بہتری کے مواقع

  • Ichimoku بادلوں کی طرح زیادہ اعلی درجے کی رجحان اشارے کی جانچ
  • بہتر خطرہ انعام تناسب کے لئے سٹاپ نقصان اور منافع لینے کے پوائنٹس کو بہتر بنائیں
  • مختلف مارکیٹوں کے لئے بہترین پیرامیٹرز تلاش کریں
  • براہ راست مارکیٹ کے حالات کی بنیاد پر پیرامیٹرز کی متحرک ایڈجسٹمنٹ شامل کریں
  • تصدیق کے اشارے کے مختلف مجموعوں کا تجربہ کریں
  • حکمت عملی کی استحکام کو یقینی بنانے کے لئے مسلسل بہتر بنائیں

نتیجہ

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


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-27 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy(title="NoNonsense Forex", overlay=true, default_qty_value=100000, initial_capital=100)

//////////////////////
////// BASELINE //////
//////////////////////
ma_slow_type = input(title="Baseline Type", type=input.string, defval="Kijun", options=["ALMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMA", "SMMA", "HMA", "LSMA", "Kijun", "McGinley"])
ma_slow_src = close //input(title="MA Source", type=input.source, defval=close)
ma_slow_len = input(title="Baseline Length", type=input.integer, defval=20)
ma_slow_len_fast = input(title="Baseline Length Fast", type=input.integer, defval=12)

lsma_offset  = input(defval=0, title="* Least Squares (LSMA) Only - Offset Value", minval=0)
alma_offset  = input(defval=0.85, title="* Arnaud Legoux (ALMA) Only - Offset Value", minval=0, step=0.01)
alma_sigma   = input(defval=6, title="* Arnaud Legoux (ALMA) Only - Sigma Value", minval=0)

ma(type, src, len) =>
    float result = 0
    if type=="SMA" // Simple
        result := sma(src, len)
    if type=="EMA" // Exponential
        result := ema(src, len)
    if type=="DEMA" // Double Exponential
        e = ema(src, len)
        result := 2 * e - ema(e, len)
    if type=="TEMA" // Triple Exponential
        e = ema(src, len)
        result := 3 * (e - ema(e, len)) + ema(ema(e, len), len)
    if type=="WMA" // Weighted
        result := wma(src, len)
    if type=="VWMA" // Volume Weighted
        result := vwma(src, len) 
    if type=="SMMA" // Smoothed
        w = wma(src, len)
        result := na(w[1]) ? sma(src, len) : (w[1] * (len - 1) + src) / len
    if type=="HMA" // Hull
        result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
    if type=="LSMA" // Least Squares
        result := linreg(src, len, lsma_offset)
    if type=="ALMA" // Arnaud Legoux
        result := alma(src, len, alma_offset, alma_sigma)
    if type=="Kijun" //Kijun-sen
        kijun = avg(lowest(len), highest(len))
        result :=kijun
    if type=="McGinley"
        mg = 0.0
        mg := na(mg[1]) ? ema(src, len) : mg[1] + (src - mg[1]) / (len * pow(src/mg[1], 4))
        result :=mg
    result

baseline = ma(ma_slow_type, ma_slow_src, ma_slow_len)
plot(baseline, title='Baseline', color=rising(baseline,1) ? color.green : falling(baseline,1) ? color.maroon : na, linewidth=3)

//////////////////
////// ATR ///////
//////////////////
atrlength=input(14, title="ATR Length")
one_atr=rma(tr(true), atrlength)
upper_atr_band=baseline+one_atr
lower_atr_band=baseline-one_atr
plot(upper_atr_band, color=color.gray, style=plot.style_areabr, transp=95, histbase=50000, title='ATR Cave')
plot(lower_atr_band, color=color.gray, style=plot.style_areabr, transp=95, histbase=0, title='ATR Cave')
plot(upper_atr_band, color=close>upper_atr_band ? color.fuchsia : na, style=plot.style_line, linewidth=5, transp=50, title='Close above ATR cave')
plot(lower_atr_band, color=close<lower_atr_band ? color.fuchsia : na, style=plot.style_line, linewidth=5, transp=50, title='Close below ATR cave')
donttradeoutside_atrcave=input(true)
too_high = close>upper_atr_band and donttradeoutside_atrcave
too_low = close<lower_atr_band and donttradeoutside_atrcave

////////////////////////////
////// CONFIRMATION 1 ////// the trigger actually
////////////////////////////
lenaroon = input(8, minval=1, title="Length Aroon")
c1upper = 100 * (highestbars(high, lenaroon+1) + lenaroon)/lenaroon
c1lower = 100 * (lowestbars(low, lenaroon+1) + lenaroon)/lenaroon
c1CrossUp=crossover(c1upper,c1lower)
c1CrossDown=crossunder(c1upper,c1lower)


////////////////////////////////
////// CONFIRMATION: MACD //////
////////////////////////////////
dont_use_macd=input(false)
macd_fast_length = input(title="Fast Length", type=input.integer, defval=13)
macd_slow_length = input(title="Slow Length", type=input.integer, defval=26)
macd_signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
macd_fast_ma = ema(close, macd_fast_length)
macd_slow_ma = ema(close, macd_slow_length)
macd = macd_fast_ma - macd_slow_ma
macd_signal = ema(macd, macd_signal_length)
macd_hist = macd - macd_signal

macdLong=macd_hist>0 or dont_use_macd
macdShort=macd_hist<0 or dont_use_macd

/////////////////////////////
///// CONFIRMATION: RSI /////
/////////////////////////////
dont_use_rsi=input(false)
lenrsi = input(14, minval=1, title="RSI Length") //14
up = rma(max(change(close), 0), lenrsi)
down = rma(-min(change(close), 0), lenrsi)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiLong=rsi>50 or dont_use_rsi
rsiShort=rsi<50 or dont_use_rsi

//////////////////////////////
///// CONFIRMATION: PSAR /////
//////////////////////////////
dont_use_psar=input(false)
psar_start = input(0.03, step=0.01)
psar_increment = input(0.018, step=0.001)
psar_maximum = input(0.11, step=0.01) //default 0.08
psar = sar(psar_start, psar_increment, psar_maximum)

plot(psar, style=plot.style_cross, color=color.blue, title='PSAR')
psarLong=close>psar or dont_use_psar
psarShort=close<psar or dont_use_psar

/////////////////////////
///// CONFIRMATIONS /////
/////////////////////////
Long_Confirmations=psarLong and rsiLong and macdLong
Short_Confirmations=psarShort and rsiShort and macdShort

GoLong=c1CrossUp and Long_Confirmations and not too_high
GoShort=c1CrossDown and Short_Confirmations and not too_low

////////////////////
///// STRATEGY /////
////////////////////

use_exit=input(false)
KillLong=c1CrossDown and use_exit
KillShort=c1CrossUp and use_exit

SL=input(0.5, step=0.1)/syminfo.mintick
TP=input(0.005, step=0.001)/syminfo.mintick

strategy.entry("nnL", strategy.long, when = GoLong)
strategy.entry("nnS", strategy.short, when = GoShort)
strategy.exit("XL-nn", from_entry = "nnL", loss = SL, profit=TP)
strategy.exit("XS-nn", from_entry = "nnS", loss = SL, profit=TP)
strategy.close("nnL", when = KillLong)
strategy.close("nnS", when = KillShort)



مزید