
اس حکمت عملی کا بنیادی مقصد T3 اشارے کی ہموار حرکت پذیر اوسط اور ATR اشارے کی متحرک رکاوٹوں کا استعمال کرتے ہوئے رجحان کی سمت کی نشاندہی کرنا اور رجحانات کی پیروی کرنا ہے۔ اس حکمت عملی میں رجحانات کی پیروی اور رجحانات کی واپسی کے مواقع شامل ہیں ، جس کا مقصد رجحانات کی صورت حال میں زیادہ منافع حاصل کرنا ہے۔
اس حکمت عملی میں قیمتوں کے لئے T3 اشارے کا استعمال کرتے ہوئے ہموار حرکت پذیر اوسط کا حساب لگایا گیا ہے اور اس دور کے لئے اوسط حقیقی اتار چڑھاؤ کی حد کا حساب لگانے کے لئے اے ٹی آر اشارے کا استعمال کیا گیا ہے۔ جب قیمتیں اے ٹی آر متحرک رکاوٹوں کو توڑتی ہیں تو اس میں ایک تجارتی سگنل پیدا ہوتا ہے۔ خاص طور پر ، جب قیمتیں اے ٹی آر اسٹاپ لائن کو عبور کرتی ہیں تو خریدنے کا سگنل پیدا ہوتا ہے اور جب قیمتیں اے ٹی آر اسٹاپ لائن کو عبور کرتی ہیں تو فروخت کا سگنل پیدا ہوتا ہے۔
جعلی سگنلوں کو فلٹر کرنے کے لئے ، اس حکمت عملی نے اضافی طور پر یہ مطالبہ کیا ہے کہ قیمتوں کو بھی T3 منتقل اوسط کو توڑنا چاہئے تاکہ سگنل کی تصدیق کی جاسکے۔ اس کے علاوہ ، اس حکمت عملی نے اے ٹی آر کی قیمتوں کے ذریعہ اسٹاپ نقصان اور اسٹاپ آؤٹ پٹ کا حساب کتاب کیا ہے ، جس سے خطرے کا انتظام ہوتا ہے۔
روایتی منتقل اوسط کے مقابلے میں ، T3 اشارے میں زیادہ حساسیت اور کم تاخیر ہوتی ہے ، جس سے قیمتوں کے رجحانات میں تبدیلی کو زیادہ تیزی سے پکڑا جاسکتا ہے۔ اس کے علاوہ ، T3 میں ریاضیاتی حساب کتاب کے فوائد ہیں جو زیادہ درست اور ہموار منتقل اوسط فراہم کرسکتے ہیں۔
اے ٹی آر کی قیمت موجودہ مارکیٹ میں اتار چڑھاؤ کی سطح اور خطرے کی سطح کی عکاسی کرتی ہے۔ اے ٹی آر متحرک ٹریکنگ اسٹاپ اور اسٹاپ اسٹاپ کو متحرک طور پر پوزیشن کی پیمائش کو ایڈجسٹ کرنے کی اجازت دیتا ہے ، جس سے رجحان کے حالات میں زیادہ منافع حاصل ہوتا ہے ، اور ہنگامی حالات میں نقصان کو کم کیا جاسکتا ہے۔
یہ حکمت عملی اشارے پر منحصر ہے اور اس میں بیعانہ کا خطرہ ہے۔ اس کے علاوہ ، T3 ہموار منتقل اوسط اور اے ٹی آر متحرک اسٹاپس دونوں میں تاخیر کا مسئلہ ہے ، جس سے قیمتوں میں تیزی سے الٹ جانے کا موقع ضائع ہوسکتا ہے۔ پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے یا دوسرے اشارے کے ساتھ مل کر بہتر بنایا جاسکتا ہے۔
جب رجحان میں ہلچل مڑتی ہے تو ، اسٹاپ نقصان کو توڑ سکتا ہے جس کی وجہ سے نقصان میں اضافہ ہوتا ہے۔ آپ اسٹاپ نقصان کی حد کو مناسب طریقے سے چھوڑ سکتے ہیں یا دوسرے پیرامیٹرز جیسے ہینڈل کی قیمت کو اسٹاپ نقصان کی بنیاد کے طور پر استعمال کرسکتے ہیں۔
T3 اشارے کے پیرامیٹرز کو ایڈجسٹ کیا جاسکتا ہے تاکہ اس کی حساسیت کو بہتر بنایا جاسکے۔
مختلف ATR سائیکل پیرامیٹرز کی جانچ پڑتال کی جا سکتی ہے، بہترین اقدار تلاش کرنے کے لئے.
آپ مختلف رسک ریٹرن فیکٹرز کو آزما سکتے ہیں تاکہ آپ کو بہترین پیرامیٹرز معلوم ہوسکیں۔
دیگر اشارے فلٹر سگنل شامل کر سکتے ہیں، مثال کے طور پر منی فلو انڈیکس۔
مشین سیکھنے کے طریقوں کا استعمال کرتے ہوئے پیرامیٹرز کے مجموعے کو خود کار طریقے سے بہتر بنانے کے لئے.
اس حکمت عملی میں T3 ہموار حرکت پذیر اوسط کی رجحان کی پیروی کرنے کی صلاحیت اور ATR کی متحرک اسٹاپ نقصان کی ایڈجسٹمنٹ کی صلاحیت کو مربوط کیا گیا ہے۔ پیرامیٹرز کو بہتر بنانے اور خطرے پر قابو پانے کی صورت میں ، واپسی کی اچھی شرح کی توقع کی جاسکتی ہے۔ یہ حکمت عملی رجحانات کی پیروی کے ساتھ ساتھ الٹ کے مواقع کو بھی مدنظر رکھتی ہے ، اور یہ ایک عمومی قسم کی مقداری تجارت کی حکمت عملی ہے۔
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='NinjaView Example 1 (UTBA "QuantNomad" Strategy)', overlay=true)
T3 = input(100)//600
// Input for Long Settings
// Input for Long Settings
xPrice3 = close
xe1 = ta.ema(xPrice3, T3)
xe2 = ta.ema(xe1, T3)
xe3 = ta.ema(xe2, T3)
xe4 = ta.ema(xe3, T3)
xe5 = ta.ema(xe4, T3)
xe6 = ta.ema(xe5, T3)
b3 = 0.7
c1 = -b3*b3*b3
c2 = 3*b3*b3+3*b3*b3*b3
c3 = -6*b3*b3-3*b3-3*b3*b3*b3
c4 = 1+3*b3+b3*b3*b3+3*b3*b3
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
//plot(nT3Average, color=color.white, title="T3")
// Buy Signal - Price is below T3 Average
buySignal3 = xPrice3 < nT3Average
sellSignal3 = xPrice3 > nT3Average
// Inputs
a = input(1, title='Key Value. "This changes the sensitivity"')
c = input(50, title='ATR Period')
h = input(true, title='Signals from Heikin Ashi Candles')
riskRewardRatio = input(1, title='Risk Reward Ratio')
xATR = ta.atr(c)
nLoss = a * xATR
src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close
xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2
pos = 0
iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossunder(ema, xATRTrailingStop)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop
plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
barcolor(barbuy ? color.new(color.green, 90) : na)
barcolor(barsell ? color.new(color.red, 90) : na)
var float entryPrice = na
var float takeProfitLong = na
var float stopLossLong = na
var float takeProfitShort = na
var float stopLossShort = na
if buy and buySignal3
entryPrice := src
takeProfitLong := entryPrice + nLoss * riskRewardRatio
stopLossLong := entryPrice - nLoss
takeProfitShort := na
stopLossShort := na
if sell and sellSignal3
entryPrice := src
takeProfitShort := entryPrice - nLoss * riskRewardRatio
stopLossShort := entryPrice + nLoss
takeProfitLong := na
stopLossLong := na
// Strategy order conditions
acct = "Sim101"
ticker = "ES 12-23"
qty = 1
OCOMarketLong = '{ "alert": "OCO Market Long", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitLong) + '", "stop_price": "' + str.tostring(stopLossLong) + '", "tif": "DAY" }'
OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }'
CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }'
strategy.entry("Long", strategy.long, when=buy and buySignal3, alert_message=OCOMarketLong)
strategy.entry("Short", strategy.short, when=sell and sellSignal3, alert_message=OCOMarketShort)
// Setting the take profit and stop loss for long trades
strategy.exit("Take Profit/Stop Loss", "Long", stop=stopLossLong, limit=takeProfitLong,alert_message=CloseAll)
// Setting the take profit and stop loss for short trades
strategy.exit("Take Profit/Stop Loss", "Short", stop=stopLossShort, limit=takeProfitShort,alert_message=CloseAll)
// Plot trade setup boxes
bgcolor(buy ? color.new(color.green, 90) : na, transp=0, offset=-1)
bgcolor(sell ? color.new(color.red, 90) : na, transp=0, offset=-1)
// longCondition = buy and not na(entryPrice)
// shortCondition = sell and not na(entryPrice)
// var line longTakeProfitLine = na
// var line longStopLossLine = na
// var line shortTakeProfitLine = na
// var line shortStopLossLine = na
// if longCondition
// longTakeProfitLine := line.new(bar_index, takeProfitLong, bar_index + 1, takeProfitLong, color=color.green, width=2)
// longStopLossLine := line.new(bar_index, stopLossLong, bar_index + 1, stopLossLong, color=color.red, width=2)
// label.new(bar_index + 1, takeProfitLong, str.tostring(takeProfitLong, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny)
// label.new(bar_index + 1, stopLossLong, str.tostring(stopLossLong, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny)
// if shortCondition
// shortTakeProfitLine := line.new(bar_index, takeProfitShort, bar_index + 1, takeProfitShort, color=color.green, width=2)
// shortStopLossLine := line.new(bar_index, stopLossShort, bar_index + 1, stopLossShort, color=color.red, width=2)
// label.new(bar_index + 1, takeProfitShort, str.tostring(takeProfitShort, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny)
// label.new(bar_index + 1, stopLossShort, str.tostring(stopLossShort, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny)
alertcondition(buy, 'UT Long', 'UT Long')
alertcondition(sell, 'UT Short', 'UT Short')