T3 اور ATR پر مبنی خودکار ٹرینڈ ٹریکنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-03 11:58:25
ٹیگز:

img

جائزہ

اس حکمت عملی کا بنیادی مقصد رجحان کی سمت اور رجحانات کو ٹریک کرنے کے لئے T3 اشارے ہموار حرکت پذیر اوسط اور ATR اشارے متحرک اسٹاپ نقصان کا استعمال کرنا ہے۔ یہ حکمت عملی رجحان کی پیروی اور رجحان کے الٹ جانے کے مواقع کو یکجا کرتی ہے ، جس کا مقصد رجحان کی منڈیوں میں زیادہ سے زیادہ منافع حاصل کرنا ہے۔

حکمت عملی منطق

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

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

فوائد کا تجزیہ

روایتی حرکت پذیر اوسط کے مقابلے میں ، T3 اشارے میں زیادہ حساسیت اور کم تاخیر ہے ، جو قیمت کے رجحانات میں تبدیلیوں کو تیزی سے پکڑ سکتا ہے۔ اس کے علاوہ ، T3 کے ریاضیاتی فوائد ہیں جو زیادہ درست ، ہموار حرکت پذیر اوسط فراہم کرسکتے ہیں۔

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

خطرے کا تجزیہ

یہ حکمت عملی اشارے کے حساب کتاب اور ثالثی کے خطرات پر مبنی ہے۔ اس کے علاوہ ، T3 ہموار چلتی اوسط اور ATR متحرک رکاوٹوں میں تاخیر کے مسائل ہیں جو تیزی سے قیمتوں میں ردوبدل کے مواقع سے محروم ہوسکتے ہیں۔ پیرامیٹرز کو اس کے مطابق ایڈجسٹ کیا جاسکتا ہے یا اصلاح کے ل other دوسرے اشارے کے ساتھ مل کر۔

جب رجحان اتار چڑھاؤ اور الٹ جاتا ہے تو ، اسٹاپ نقصانات کو توڑ دیا جاسکتا ہے جس کی وجہ سے زیادہ نقصانات ہوتے ہیں۔ اسٹاپ نقصان کی حدوں میں معقول توسیع یا ہینڈل نمبر جیسے دوسرے پیرامیٹرز کا استعمال کرتے ہوئے دریافت کیا جاسکتا ہے۔

اصلاح کی ہدایات

  • حساسیت کو بہتر بنانے کے لئے 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')


مزید