اتار چڑھاؤ سے ایڈجسٹ اوسط چلتی ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-07 17:18:05
ٹیگز:

img

جائزہ

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

اصول تجزیہ

اشارے کے حسابات

  • T3 چلتی اوسط: رجحان کی سمت کا تعین کرنے کے لئے ایک ہموار T3 چلتی اوسط (ڈیفالٹ مدت 100) کا حساب لگاتا ہے

  • اے ٹی آر: اوسط حقیقی رینج کا حساب لگاتا ہے، جو سٹاپ نقصان / منافع لینے کے سائز کا تعین کرنے کے لئے استعمال کیا جاتا ہے

  • ATR ٹریلنگ اسٹاپ: ATR پر مبنی اسٹاپ نقصان کا حساب لگاتا ہے جو قیمت کی نقل و حرکت اور اتار چڑھاؤ کی بنیاد پر ایڈجسٹ ہوتا ہے۔

تجارتی منطق

  • خریدنے کا اشارہ: اس وقت شروع ہوتا ہے جب بندش ATR ٹریلنگ اسٹاپ سے اوپر کی طرف بڑھتی ہے اور T3 چلتی اوسط سے نیچے ہوتی ہے۔

  • فروخت کا اشارہ: اس وقت شروع ہوتا ہے جب بندش ATR ٹریلنگ اسٹاپ سے نیچے کراس ہوتی ہے اور T3 چلتی اوسط سے اوپر ہوتی ہے۔

  • اسٹاپ نقصان/منافع حاصل کرنا: اندراج کے بعد، اسٹاپ نقصان اور منافع حاصل کرنے کی قیمتیں جو اے ٹی آر اور صارف کے متعین کردہ رسک/ریوارڈ تناسب کی بنیاد پر شمار کی جاتی ہیں۔

داخلہ اور باہر نکلنا

  • لانگ انٹری: اسٹاپ نقصان انٹری قیمت ہے کم ATR، منافع لے لو انٹری قیمت ہے زیادہ ATR * خطرہ / منافع کا تناسب

  • مختصر اندراج: سٹاپ نقصان اندراج کی قیمت ہے اور اے ٹی آر، منافع حاصل کرنا اندراج کی قیمت ہے اور اے ٹی آر * رسک/ریوارڈ تناسب ہے۔

  • باہر نکلیں جب قیمت سٹاپ نقصان یا منافع لینے کی سطح پر پہنچ جاتی ہے

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

فوری ردعمل

T3 چلتی اوسط ڈیفالٹ مدت 100 ہے، قیمت کی تبدیلیوں پر تیزی سے ردعمل کے لئے عام چلتی اوسط سے زیادہ حساس ہے

خطرے کا کنٹرول

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

رجحانات

اے ٹی آر ٹریلنگ سٹاپ رجحان کی پیروی کرتا ہے، مختصر مدت کے pullbacks کے دوران بھی قبل از وقت باہر نکلنے سے بچتا ہے

پیرامیٹر کی اصلاح

مضبوطی کو بہتر بنانے کے لئے مختلف مارکیٹوں کے لئے T3 اور ATR دونوں کے لئے ادوار کو بہتر بنایا جاسکتا ہے

خطرے کا تجزیہ

سٹاپ نقصان بریک وین

شدید قیمت کی نقل و حرکت نقصان کا سبب بننے والے نقصان کو روک سکتی ہے۔ اے ٹی آر کی مدت اور اسٹاپ فاصلے کو بڑھا سکتی ہے۔

رجحان کی تبدیلی

نقصانات ممکن ہیں اگر رجحان الٹ جاتا ہے اور قیمت ٹیلنگ اسٹاپ کو عبور کرتی ہے۔ الٹ جانے کی نشاندہی کرنے کے لئے دوسرے اشارے شامل کرسکتے ہیں۔

اصلاحات اوور فٹنگ

پیرامیٹر کی اصلاح سے محدود تاریخی اعداد و شمار کو زیادہ فٹ ہونے کا خطرہ ہے۔ مارکیٹوں / ٹائم فریموں میں مضبوط اصلاح کی ضرورت ہے۔

بہتری کے مواقع

  • حساسیت اور استحکام کے بہترین توازن کو تلاش کرنے کے لئے مختلف T3 چلتی اوسط ادوار کی جانچ کریں

  • بہترین خطرہ کنٹرول اور توازن کے بعد رجحان تلاش کرنے کے لئے ATR مدت کو بہتر بنائیں

  • غلط تجارت سے بچنے کے لئے RSI، MACD کو شامل کریں

  • بہترین خودکار پیرامیٹرز کے لئے مشین لرننگ ، دستی تعصب کو کم کرنا

  • خطرے کو بہتر کنٹرول کرنے کے لئے پوزیشن سائزنگ کے قواعد شامل کریں

خلاصہ

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


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='UT Bot Alerts (QuantNomad) Strategy w/ NinjaView', 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 ,alert_message=OCOMarketLong)
strategy.entry("Short", strategy.short, when=sell , 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')


مزید