
اس حکمت عملی میں ٹریڈنگ کے لئے ایک متحرک اوسط ، لاگیر آر ایس آئی اور اے ڈی ایکس اشارے کا استعمال کیا جاتا ہے۔ جب تیزی سے چلنے والی اوسط پر ایک آہستہ چلنے والی اوسط ہوتا ہے تو ، لاگیر آر ایس آئی 80 سے زیادہ ہوتا ہے اور اے ڈی ایکس 20 سے زیادہ ہوتا ہے۔ جب تیزی سے چلنے والی اوسط کے نیچے ایک آہستہ چلنے والی اوسط ہوتا ہے تو ، لاگیر آر ایس آئی 20 سے کم ہوتا ہے اور اے ڈی ایکس 20 سے زیادہ ہوتا ہے۔ یہ حکمت عملی مارکیٹ کی متحرک خصوصیات کو پکڑتی ہے اور رجحان کے آغاز کے مرحلے میں مارکیٹ میں داخل ہوتی ہے۔
اس حکمت عملی میں رجحانات اور مارکیٹ میں آنے کے وقت کا تعین کرنے کے لئے مندرجہ ذیل اشارے استعمال کیے جاتے ہیں:
چلتی اوسط کا مجموعہ: 16 دن کا EMA ، 48 دن کا EMA ، 200 دن کا SMA۔ جب قلیل مدتی اوسط پر طویل مدتی اوسط ہوتا ہے تو اسے ایک ہیڈ مارکیٹ سمجھا جاتا ہے ، اور جب نیچے ہوتا ہے تو اسے خالی سر مارکیٹ سمجھا جاتا ہے۔
Laguerre RSI اشارے اوورلوڈ اوور سیل علاقوں کا فیصلہ کرتا ہے۔ 80 سے زیادہ RSI ایک کثیر سر سگنل ہے ، اور 20 سے کم ایک خالی سر سگنل ہے۔
ADX اشارے رجحان کی حالت کا تعین کرتا ہے۔ ADX 20 سے زیادہ رجحان کی حالت کا اشارہ کرتا ہے ، جو تجارت کو توڑنے کے لئے موزوں ہے۔
داخلہ سگنل ایک حرکت پذیر اوسط کا مجموعہ ہے جو رجحان کی سمت کا تعین کرتا ہے ، لاگیر آر ایس آئی داخلہ کا وقت کا تعین کرتا ہے ، اور اے ڈی ایکس فلٹر غیر رجحان کی مارکیٹ ہے۔ باہر نکلنے کا سگنل ایک حرکت پذیر اوسط میں واپسی ہے۔ حکمت عملی کا فیصلہ کرنے کا پورا فریم ورک نسبتا reasonable معقول ہے ، ہر ایک اشارے ایک دوسرے کے ساتھ مل کر فاریکس ٹریڈنگ کیا ہے اور باہر نکلنے کا فیصلہ کرتا ہے۔
اس حکمت عملی کے درج ذیل فوائد ہیں:
رجحان کی حرکیات کو پکڑیں: یہ حکمت عملی صرف اس وقت داخل ہوتی ہے جب رجحان کی ترقی شروع ہوتی ہے اور اس کے بعد کے بازاروں میں اشاریہ دار منافع کو پکڑ سکتی ہے۔
محدود نقصان: مناسب طریقے سے روکنے کی حد مقرر کی جاسکتی ہے ، جس سے انفرادی نقصان کو ایک خاص حد تک کنٹرول کیا جاسکتا ہے۔ یہاں تک کہ اگر آپ کو پھنس جانے کا سامنا کرنا پڑتا ہے تو ، آپ کو منافع کمانے کا موقع بھی مل سکتا ہے۔
انڈیکیٹر پورٹیول کا تعین درست ہے: چلتی اوسط ، لاگیر آر ایس آئی اور اے ڈی ایکس اشارے مارکیٹ میں زیادہ جگہ اور داخلے کے وقت کا نسبتا accurately درست تعین کرسکتے ہیں۔
اس حکمت عملی کو لاگو کرنا آسان ہے: اس حکمت عملی کو لاگو کرنا آسان ہے اور اس پر قابو پانا آسان ہے کیونکہ اس میں صرف تین اشارے استعمال کیے گئے ہیں۔
اس حکمت عملی میں کچھ خطرات بھی ہیں:
رجحان کی تبدیلی کا خطرہ: حکمت عملی رجحان کی پیروی کی حکمت عملی میں شامل ہے ، اگر رجحان کی تبدیلی کا وقت پر تعین نہ کیا گیا تو اس سے زیادہ نقصان ہوگا۔
واپسی کا خطرہ: ہنگامہ خیز حالات میں ، اسٹاپ نقصان کو توڑ دیا جاسکتا ہے ، جس سے اکاؤنٹ میں واپسی ہوسکتی ہے۔
پیرامیٹرز کو بہتر بنانے کا خطرہ: اشارے کے پیرامیٹرز کو مختلف مارکیٹوں کے مطابق ایڈجسٹ کرنے کی ضرورت ہے ، ورنہ یہ غلط ہوجائے گا۔
ردعمل:
سختی سے روکنے اور واحد نقصانات کو کنٹرول کرنا۔
انڈیکیٹر پیرامیٹرز کو بہتر بنائیں ، توڑنے کی تعداد کو ایڈجسٹ کریں۔
فیوچر سیٹ مدت کے تحفظات جیسے طریقوں کا استعمال کرتے ہوئے واپسی کا انتظام کریں۔
یہ حکمت عملی مندرجہ ذیل پہلوؤں سے بہتر بنائی جا سکتی ہے۔
بہترین پیرامیٹرز کی اصلاح: بہترین پیرامیٹرز کے مجموعے کو تلاش کرنے کے لئے منتقل اوسط کی مدت ، لاگیر آر ایس آئی پیرامیٹرز اور 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")