
دو طرفہ اے ٹی آر لہر ٹریڈنگ حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو مساوی لائن ، اے ٹی آر اور متعدد تکنیکی اشارے کو یکجا کرتی ہے تاکہ رجحان کی سمت قائم ہونے کے بعد رجحان کی پیروی کی جاسکے۔
اس حکمت عملی میں کیجون لائن کو بطور مرکزی اوسط لائن اشارے استعمال کیا جاتا ہے تاکہ قیمتوں کے رجحان کی سمت کا تعین کیا جاسکے۔ حکمت عملی کے ساتھ ساتھ اے ٹی آر چینل کو بھی شامل کیا جاتا ہے تاکہ قیمتوں کی سرگرمیوں کی حد کو محدود کیا جاسکے۔ جب قیمت اوپر کی طرف بڑھتی ہے تو زیادہ کام نہ کریں اور جب قیمت نیچے کی طرف بڑھتی ہے تو خالی جگہ نہ بنائیں ، تاکہ اونچائی اور گرنے سے بچ سکیں۔
جب کیجون لائن اوپر کی طرف ٹوٹ جاتی ہے تو خریدنے کا اشارہ پیدا ہوتا ہے ، اور جب نیچے کی طرف ٹوٹ جاتا ہے تو بیچنے کا اشارہ پیدا ہوتا ہے۔ غلط سگنل کو فلٹر کرنے کے لئے ، حکمت عملی میں متعدد تکنیکی اشارے بھی متعارف کروائے گئے ہیں جن کی تصدیق ہوتی ہے ، بشمول ارون اشارے ، آر ایس آئی اشارے ، میکڈ اشارے اور پی ایس اے آر اشارے۔ جب تمام اشارے کی تصدیق کی شرائط پوری ہوجاتی ہیں تو خریدنے اور بیچنے کا اشارہ پیدا ہوتا ہے۔
مارکیٹ میں داخل ہونے کے بعد ، حکمت عملی اسٹاپ اور اسٹاپ اسٹاپ کا استعمال کرتے ہوئے پوزیشنوں کا انتظام کرتی ہے۔ اسٹاپ نقصان کا نقطہ 0.5 اے ٹی آر ہے ، اسٹاپ نقصان کا نقطہ 0.5٪ ہے۔ جب قیمت ایک بار پھر کیجون لائن کو توڑ دیتی ہے تو ، فوری طور پر اسٹاپ نقصان سے باہر نکلنے کا انتخاب کریں۔
دو طرفہ اے ٹی آر لہر ٹریڈنگ حکمت عملی اوسط لائن ، اے ٹی آر چینل اور متعدد معاون تکنیکی اشارے کا استعمال کرتے ہوئے ، رجحان کی سمت کی نشاندہی کرنے کے بعد رجحان سے باخبر رہنے کے لئے ہے۔ اس سے سگنل کے معیار اور منافع کی امکانات میں نمایاں اضافہ ہوتا ہے۔ اس کے ساتھ ہی ، اسٹریپنگ میکانیزم کے کنٹرول کے خطرات کو روکنا۔ اس حکمت عملی کو پیرامیٹرز کی اصلاح اور مجموعہ ٹیسٹنگ کے ذریعہ مستحکم منافع کی توقع ہے۔ تاہم ، تاریخی اعداد و شمار پر بہت زیادہ انحصار کرنے کے مسئلے پر توجہ دینے کی ضرورت ہے ، اور عملی ڈسک کی تاثیر کو ابھی بھی تصدیق کی ضرورت ہے۔ اس حکمت عملی کی تاثیر کو یقینی بنانے کے لئے مستقل اصلاح کی کلید ہے۔
/*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)