یہ حکمت عملی بریکآؤٹ ٹریڈنگ کو نافذ کرنے کے لئے حرکت پذیر اوسط ، لیگر آر ایس آئی اشارے اور اے ڈی ایکس اشارے کو جوڑتی ہے۔ جب تیز رفتار حرکت پذیر اوسط سست حرکت پذیر اوسط سے تجاوز کرتا ہے تو یہ طویل ہوجاتا ہے ، لیگر آر ایس آئی 80 سے زیادہ ہے ، اور اے ڈی ایکس 20 سے زیادہ ہے۔ جب تیز رفتار حرکت پذیر اوسط سست حرکت پذیر اوسط سے تجاوز کرتا ہے تو یہ مختصر ہوجاتا ہے ، لیگر آر ایس آئی 20 سے کم ہے ، اور اے ڈی ایکس 20 سے زیادہ ہے۔ یہ حکمت عملی مارکیٹ کی رفتار کی خصوصیات پر قبضہ کرتی ہے اور رجحان کی ترقی کے آغاز پر مارکیٹ میں داخل ہوتی ہے۔
حکمت عملی بنیادی طور پر رجحانات اور داخلہ کے وقت کا تعین کرنے کے لئے مندرجہ ذیل اشارے کا استعمال کرتی ہے:
چلتی اوسط کا مجموعہ: 16 دن کا ای ایم اے ، 48 دن کا ای ایم اے ، 200 دن کا ایس ایم اے۔ جب قلیل مدتی اوسط طویل مدتی اوسط سے تجاوز کرتا ہے تو ایک اپ ٹرینڈ کا تعین کیا جاتا ہے ، اور جب اس سے نیچے گزرتا ہے تو نیچے کا رجحان ہوتا ہے۔
لوگر آر ایس آئی اشارے کو زیادہ خریدنے اور زیادہ فروخت زون کا تعین کرنے کے لئے۔ 80 سے زیادہ آر ایس آئی ایک طویل سگنل ہے ، اور 20 سے کم ایک مختصر سگنل ہے۔
رجحان کی حیثیت کا تعین کرنے کے لئے ADX اشارے۔ ADX 20 سے زیادہ رجحان کی نشاندہی کرتا ہے ، جو بریک آؤٹ ٹریڈنگ کے لئے موزوں ہے۔
انٹری سگنل حرکت پذیر اوسط امتزاج کی سمت سے طے ہوتے ہیں ، لاگیر آر ایس آئی کے ذریعہ انٹری ٹائمنگ ، اور غیر رجحان سازی والے بازاروں کو اے ڈی ایکس کے ذریعہ فلٹر کیا جاتا ہے۔ باہر نکلنے والے سگنل اس وقت پیدا ہوتے ہیں جب حرکت پذیر اوسط پیچھے سے عبور کرتے ہیں۔ مجموعی حکمت عملی کے فیصلے کا فریم ورک کافی معقول ہے ، جس میں مختلف اشارے ایک ساتھ کام کرتے ہیں تاکہ طویل / مختصر اندراجات اور باہر نکلنے کا تعین کیا جاسکے۔
اس حکمت عملی کے فوائد میں شامل ہیں:
رجحان کی رفتار کو پکڑنا: حکمت عملی صرف رجحان کی ترقی کے آغاز میں مارکیٹ میں داخل ہوتی ہے ، رجحانات سے تیزی سے منافع حاصل کرتی ہے۔
محدود نقصانات: اسٹاپ نقصانات کو مناسب طریقے سے طے کرنے سے انفرادی تجارتوں سے ہونے والے نقصانات کو محدود کیا جاسکتا ہے۔ یہاں تک کہ کھونے والی تجارتوں میں بھی منافع کمانے کا موقع ہوتا ہے۔
درست مجموعی اشارے: حرکت پذیر اوسط ، لیگر آر ایس آئی اور اے ڈی ایکس نسبتا accurately درست طریقے سے مارکیٹ کی سمت اور انٹری ٹائمنگ کا تعین کرسکتے ہیں۔
سادہ نفاذ: اسٹریٹیجی میں صرف تین اشارے استعمال کیے گئے ہیں اور اسے سمجھنا اور نافذ کرنا آسان ہے۔
اس حکمت عملی کے کچھ خطرات بھی ہیں:
رجحان کی تبدیلی کے خطرات: رجحان کی پیروی کرنے والی حکمت عملی کے طور پر ، اگر رجحان کی تبدیلی کا وقت پر پتہ نہیں چلتا ہے تو بڑے نقصانات ہوسکتے ہیں۔
استعمال کا خطرہ: مختلف مارکیٹوں میں، اسٹاپس کو نشانہ بنایا جا سکتا ہے جس کے نتیجے میں اکاؤنٹ کے استعمال میں اضافہ ہوتا ہے۔
پیرامیٹر کی اصلاح کے خطرات: ناکامیوں سے بچنے کے لئے مختلف مارکیٹوں کے لئے اشارے کے پیرامیٹرز کو ایڈجسٹ کرنے کی ضرورت ہے۔
انسداد اقدامات:
ایک ہی تجارت کے نقصانات کی مقدار کو محدود کرنے کے لئے سخت سٹاپ نقصانات.
اشارے کے پیرامیٹرز اور بریک آؤٹ کی حد کو بہتر بنائیں۔
ڈراؤونگ کا انتظام کرنے کے لئے فیوچر ہیجنگ وغیرہ کا استعمال کریں۔
حکمت عملی کو بہتر بنانے کے کچھ طریقے شامل ہیں:
پیرامیٹر کی اصلاح: بہترین ترتیبات تلاش کرنے کے لئے چلتی اوسط ادوار، Laguerre RSI پیرامیٹرز، ADX پیرامیٹرز کے ٹیسٹ کے مجموعے.
بریک آؤٹ کی اصلاح: تجارت کی تعدد اور منافع کو متوازن کرنے کے لئے مختلف حرکت پذیر اوسط بریک آؤٹ کی حدوں کا تجربہ کریں۔
انٹری کی اصلاح: زیادہ درست انٹری ٹائمنگ کے لئے لاگرے آر ایس آئی کے ساتھ مل کر دوسرے اشارے کی جانچ کریں۔
آؤٹ پٹ کی اصلاح: حرکت پذیر اوسط کے ساتھ مل کر دوسرے آؤٹ پٹ سگنل کی تحقیق کریں۔
منافع لینے بمقابلہ اسٹاپ نقصان کی اصلاح: واپسی کو بہتر بنانے کے لئے مختلف حکمت عملیوں کا تجربہ کریں۔
خلاصہ یہ ہے کہ ، یہ حکمت عملی مؤثر طریقے سے چلتی اوسط ، لیگر آر ایس آئی اور اے ڈی ایکس کے امتزاج کا استعمال کرتے ہوئے رجحانات کی نقل و حرکت کو حاصل کرتی ہے تاکہ اندراجات اور باہر نکلنے کا تعین کیا جاسکے۔ رجحانات کی ترقی میں ابتدائی طور پر داخل ہونے اور رجحانات کے قریب سے پیروی کرنے سے ، تیزی سے منافع حاصل کیا جاسکتا ہے ، جبکہ اسٹاپ نقصانات نقصانات کو محدود کرنے میں مدد کرتے ہیں۔ یہ حکمت عملی سرمایہ کاروں کے ساتھ ساتھ پیرامیٹر کی اصلاح کے بعد خودکار تجارت کرنے والوں کے لئے بھی موزوں ہے۔ مجموعی طور پر اس حکمت عملی میں عملی افادیت ہے۔
/*backtest start: 2023-12-05 00:00:00 end: 2023-12-12 00:00:00 period: 1m basePeriod: 1m 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/ // © PtGambler //@version=5 strategy("3MA + Laguerre RSI + ADX [Pt]", shorttitle = "3MA+LaRSI+ADX[Pt]", overlay=true, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills = false, max_bars_back = 500) // ********************************** Trade Period / Strategy Setting ************************************** startY = input(title='Start Year', defval=2011, group = "Backtesting window") startM = input.int(title='Start Month', defval=1, minval=1, maxval=12, group = "Backtesting window") startD = input.int(title='Start Day', defval=1, minval=1, maxval=31, group = "Backtesting window") finishY = input(title='Finish Year', defval=2050, group = "Backtesting window") finishM = input.int(title='Finish Month', defval=12, minval=1, maxval=12, group = "Backtesting window") finishD = input.int(title='Finish Day', defval=31, minval=1, maxval=31, group = "Backtesting window") timestart = timestamp(startY, startM, startD, 00, 00) timefinish = timestamp(finishY, finishM, finishD, 23, 59) use_entry_sess = input.bool(false, 'Use Entry Session Window', group = "Trading Session") t1_session = input("0930-1555:23456", "Entry Session", group="Trading Session", tooltip = "Entry Signal only generated within this period.") t1 = time(timeframe.period, t1_session) window = true margin_req = input.float(1, title="Margin Requirement / Leverage", step=0.1, group = "Trading Options") qty_per_trade = input.float(100, title = "% of initial capital per trade", group = "Trading Options") reinvest = input.bool(defval=false,title="Reinvest profit", group = "Trading Options") reinvest_percent = input.float(defval=100, title = "Reinvest percentage", group="Trading Options") close_eod = input.bool(false, "All trades will close at the close of trading window", group = "Trading Options") close_b4_open = input.bool(false, "Position must hit either SL/PT before entering new trade", group = "Trading Options") profit = strategy.netprofit strategy.initial_capital = 50000 float trade_amount = math.floor(strategy.initial_capital*margin_req / close) if strategy.netprofit > 0 and reinvest trade_amount := math.floor((strategy.initial_capital* (qty_per_trade/100)+(profit*reinvest_percent*0.01))*margin_req/ close) else trade_amount := math.floor(strategy.initial_capital* (qty_per_trade/100)*margin_req / close) // ****************************************************************************************** group_ma = "Moving Average Ribbon" group_larsi = "Laguerre RSI" group_adx = "ADX" group_SL = "Stop Loss / Profit Target" // ----------------------------------------- MA Ribbon ------------------------------------- ema1_len = input.int(16, "Fast EMA Length", group = group_ma) ema2_len = input.int(48, "Slow EMA Length ", group = group_ma) sma1_len = input.int(200, "Slow SMA Length", group = group_ma) ema1 = ta.ema(close, ema1_len) ema2 = ta.ema(close, ema2_len) sma1 = ta.sma(close, sma1_len) plot(ema1, "EMA 1", color.white, linewidth = 2) plot(ema2, "EMA 2", color.yellow, linewidth = 2) plot(sma1, "SMA 1", color.purple, linewidth = 2) ma_bull = ema1 > ema2 and ema2 > sma1 ma_bear = ema1 < ema2 and ema2 < sma1 // ------------------------------------------ Laguerre RSI --------------------------------------- alpha = input.float(0.2, title='Alpha', minval=0, maxval=1, step=0.1, group = group_larsi) gamma = 1 - alpha L0 = 0.0 L0 := (1 - gamma) * close + gamma * nz(L0[1]) L1 = 0.0 L1 := -gamma * L0 + nz(L0[1]) + gamma * nz(L1[1]) L2 = 0.0 L2 := -gamma * L1 + nz(L1[1]) + gamma * nz(L2[1]) L3 = 0.0 L3 := -gamma * L2 + nz(L2[1]) + gamma * nz(L3[1]) cu = (L0 > L1 ? L0 - L1 : 0) + (L1 > L2 ? L1 - L2 : 0) + (L2 > L3 ? L2 - L3 : 0) cd = (L0 < L1 ? L1 - L0 : 0) + (L1 < L2 ? L2 - L1 : 0) + (L2 < L3 ? L3 - L2 : 0) temp = cu + cd == 0 ? -1 : cu + cd LaRSI = temp == -1 ? 0 : cu / temp LaRSI := LaRSI * 100 bull_LaRSI = LaRSI > 80 bear_LaRSI = LaRSI < 20 // --------------------------------------- ADX ------------------------ adxlen = input(14, title="ADX Smoothing", group = group_adx) dilen = input(14, title="DI Length", group = group_adx) dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) active_adx = sig > 20 //and sig > sig[1] // ******************************* Profit Target / Stop Loss ********************************************* use_SLPT = input.bool(false, 'Use Fixed SL / PT', group = group_SL) SL = input.float(50, 'Stop loss in ticks', step = 1, group = group_SL) * syminfo.mintick PT = input.float(100, "Profit target in ticks", step = 1, group = group_SL) * syminfo.mintick var L_PT = 0.0 var S_PT = 0.0 var L_SL = 0.0 var S_SL = 0.0 if strategy.position_size > 0 L_SL := L_SL[1] L_PT := L_PT[1] else if strategy.position_size < 0 S_SL := S_SL[1] S_PT := S_PT[1] else L_SL := close - SL L_PT := close + PT S_SL := close + SL S_PT := close - PT entry_line = plot(use_SLPT and strategy.position_size != 0 ? strategy.opentrades.entry_price(0) : na, "Entry Price", color.white, linewidth = 1, style = plot.style_linebr) L_PT_line = plot(use_SLPT and strategy.position_size > 0 ? L_PT : na, "L PT", color.green, linewidth = 2, style = plot.style_linebr) S_PT_line = plot(use_SLPT and strategy.position_size < 0 ? S_PT : na, "S PT", color.green, linewidth = 2, style = plot.style_linebr) L_SL_line = plot(use_SLPT and strategy.position_size > 0 ? L_SL : na, "L SL", color.red, linewidth = 2, style = plot.style_linebr) S_SL_line = plot(use_SLPT and strategy.position_size < 0 ? S_SL : na, "S SL", color.red, linewidth = 2, style = plot.style_linebr) fill(L_PT_line, entry_line, color = color.new(color.green,90)) fill(S_PT_line, entry_line, color = color.new(color.green,90)) fill(L_SL_line, entry_line, color = color.new(color.red,90)) fill(S_SL_line, entry_line, color = color.new(color.red,90)) // ---------------------------------- Strategy setup ------------------------------------------------------ L_entry1 = ma_bull and bull_LaRSI and active_adx S_entry1 = ma_bear and bear_LaRSI and active_adx L_exit1 = ta.crossunder(ema1, ema2) S_exit1 = ta.crossover(ema1, ema2) // Trigger zones bgcolor(ma_bull ? color.new(color.green ,90) : na) bgcolor(ma_bear ? color.new(color.red,90) : na) if L_entry1 and (use_entry_sess ? window : true) and (close_b4_open ? strategy.position_size == 0 : true) strategy.entry("Long", strategy.long, trade_amount) if S_entry1 and (use_entry_sess ? window : true) and (close_b4_open ? strategy.position_size == 0 : true) strategy.entry("Short", strategy.short, trade_amount) if use_SLPT strategy.exit("Exit Long", "Long", limit = L_PT, stop = L_SL, comment_profit = "Exit Long, PT hit", comment_loss = "Exit Long, SL hit") strategy.exit("Exit Short", "Short", limit = S_PT, stop = S_SL, comment_profit = "Exit Short, PT hit", comment_loss = "Exit Short, SL hit") else if L_exit1 strategy.close("Long", comment = "Exit Long") if S_exit1 strategy.close("Short", comment = "Exit Short") if use_entry_sess and not window and close_eod strategy.close_all(comment = "EOD close")