وسائل لوڈ ہو رہے ہیں... لوڈنگ...

اے ٹی آر پر مبنی منافع لینے اور نقصان کو روکنے کے ساتھ ملٹی ٹائم فریم ٹرینڈ کی پیروی کرنے والی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-12-20 14:14:32
ٹیگز:اے ٹی آرای ایم اے

img

جائزہ

یہ ایک رجحان کی پیروی کرنے والی تجارتی حکمت عملی ہے جو یو ٹی بوٹ اور 50 پیریڈ ایکسپونینشل موونگ ایوریج (ای ایم اے) کو جوڑتی ہے۔ یہ حکمت عملی بنیادی طور پر 1 منٹ کے ٹائم فریم پر کام کرتی ہے جبکہ 5 منٹ کے ٹائم فریم ٹرینڈ لائن کو سمت فلٹر کے طور پر استعمال کرتی ہے۔ یہ متحرک اسٹاپ نقصان کے حساب کے لئے اے ٹی آر اشارے کا استعمال کرتی ہے اور واپسی کو بہتر بنانے کے لئے دوہری منافع حاصل کرنے کے اہداف کو نافذ کرتی ہے۔

حکمت عملی کے اصول

بنیادی منطق مندرجہ ذیل اہم اجزاء پر مبنی ہے:

  1. متحرک حمایت اور مزاحمت کی سطح کا حساب کرنے کے لئے UT بوٹ کا استعمال کرتے ہوئے
  2. مجموعی رجحان کی سمت کے لئے 5 منٹ کے ٹائم فریم پر 50 پیریڈ ای ایم اے کا استعمال
  3. مخصوص انٹری پوائنٹس کے لئے 21 پیریڈ EMA اور UT Bot سگنلز کا امتزاج
  4. اے ٹی آر ضرب کاروں کے ذریعے متحرک ٹریلنگ اسٹاپس کا تعین
  5. 0.5٪ اور 1٪ پر دو منافع کے اہداف کو لاگو کرنا، ہر ایک پوزیشن کا 50٪ بند کرنا

ٹریڈ سگنل اس وقت ٹرگر ہوتے ہیں جب قیمت UT Bot کی سپورٹ/ مزاحمت کی سطح کو توڑتی ہے اور 21 پیریڈ کا EMA UT Bot کے ساتھ عبور کرتا ہے، بشرطیکہ قیمت 5 منٹ کے 50 پیریڈ کے EMA کے مقابلے میں صحیح سمت میں ہو۔

حکمت عملی کے فوائد

  1. کثیر ٹائم فریم کا امتزاج تجارت کی وشوسنییتا کو بڑھا دیتا ہے
  2. متحرک اے ٹی آر اسٹاپس مارکیٹ کی اتار چڑھاؤ کے مطابق
  3. دوہری منافع کے اہداف توازن کی واپسی اور جیت کی شرح
  4. Heikin Ashi موم بتیاں کچھ جھوٹے breakouts فلٹر
  5. لچکدار تجارتی سمت کے اختیارات (صرف طویل، صرف مختصر، یا دونوں)

حکمت عملی کے خطرات

  1. مختصر وقت کے فریم ٹریڈنگ کو اعلی اسپریڈ اور کمیشن کے اخراجات کا سامنا کرنا پڑ سکتا ہے
  2. مختلف بازاروں میں اکثر غلط سگنل پیدا کر سکتا ہے
  3. متعدد حالات کھوئے ہوئے تجارتی مواقع کا سبب بن سکتے ہیں
  4. اے ٹی آر پیرامیٹرز کو مختلف مارکیٹوں کے لئے بہتر بنانے کی ضرورت ہے

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

  1. اضافی تصدیق کے لئے حجم اشارے شامل کریں
  2. مارکیٹ کے جذبات کے مزید اشارے شامل کرنے پر غور کریں
  3. مارکیٹ کی مختلف اتار چڑھاؤ کی خصوصیات کے لئے موافقت پذیر پیرامیٹرز تیار کریں
  4. ٹریڈنگ سیشن فلٹرز شامل کریں
  5. زیادہ ذہین پوزیشن سائزنگ سسٹم تیار کریں

خلاصہ

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


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Created by Nasser mahmoodsani' all rights reserved
// E-mail : e.man4858@gmail.com

strategy("UT Bot Strategy with T/P and S/L and Trend EMA", overlay=true)

// Inputs
along = input(1, title='Key Value (Sensitivity - Long)', group="LONG")
clong = input(10, title='ATR Period (Long)', group="LONG")
h = input(true, title='Signals from Heikin Ashi Candles')
ashort = input(7, title='Key Value (Sensitivity - Short)', group="SHORT")
cshort = input(2, title='ATR Period (Short)', group="SHORT")
tradeType = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"])
tp1_percent = input.float(0.5, title="TP1 Percentage", step=0.1, group="TP Settings") // TP1 % input
tp2_percent = input.float(1.0, title="TP2 Percentage", step=0.1, group="TP Settings") // TP2 % input
sl_percent = input.float(1.0, title="Stop Loss Percentage", step=0.1, group="TP Settings") // SL % input
sl_in_percent = input(true, title="Use Stop Loss in Percentage", group="TP Settings")
tp1_qty = input.float(0.5, title="Take Profit 1 Quantity (as % of position size)", minval=0.0, maxval=1.0, step=0.1)
tp2_qty = input.float(0.5, title="Take Profit 2 Quantity (as % of position size)", minval=0.0, maxval=1.0, step=0.1)

// Check that total quantities for TPs do not exceed 100%
if tp1_qty + tp2_qty > 1
    runtime.error("The sum of Take Profit quantities must not exceed 100%.")

// Calculate 50 EMA from 5-Minute Timeframe
trendEmaPeriod = 50
trendEma_5min = request.security(syminfo.tickerid, "5", ta.ema(close, trendEmaPeriod))
plot(trendEma_5min, title="Trend EMA (5-Min)", color=color.blue, linewidth=2)

// Calculations 
xATRlong = ta.atr(clong)
xATRshort = ta.atr(cshort)
nLosslong = along * xATRlong
nLossshort = ashort * xATRshort

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) : close

// LONG
var float xATRTrailingStoplong = na
var float stopLossLong = na
var float takeProfit1 = na
var float takeProfit2 = na

iff_1long = src > nz(xATRTrailingStoplong[1], 0) ? src - nLosslong : src + nLosslong
iff_2long = src < nz(xATRTrailingStoplong[1], 0) and src[1] < nz(xATRTrailingStoplong[1], 0) ? math.min(nz(xATRTrailingStoplong[1]), src + nLosslong) : iff_1long
xATRTrailingStoplong := src > nz(xATRTrailingStoplong[1], 0) and src[1] > nz(xATRTrailingStoplong[1], 0) ? math.max(nz(xATRTrailingStoplong[1]), src - nLosslong) : iff_2long

buy = src > xATRTrailingStoplong and ta.crossover(ta.ema(src, 21), xATRTrailingStoplong) and close > trendEma_5min

if buy and (tradeType == "Buy Only" or tradeType == "Both")
    takeProfit1 := close * (1 + tp1_percent / 100)
    takeProfit2 := close * (1 + tp2_percent / 100)

    // Calculate stop loss based on percentage or ATR
    if sl_in_percent
        stopLossLong := close * (1 - sl_percent / 100)
    else
        stopLossLong := close - nLosslong

    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit 1", from_entry="Long", limit=takeProfit1, qty=strategy.position_size * tp1_qty)
    strategy.exit("Take Profit 2", from_entry="Long", limit=takeProfit2, qty=strategy.position_size * tp2_qty)
    strategy.exit("Stop Loss", from_entry="Long", stop=stopLossLong, qty=strategy.position_size)

    // // Create Position Projectile for Long
    // var line tpLineLong1 = na
    // var line tpLineLong2 = na
    // var line slLineLong = na
    // var label entryLabelLong = na

    // // Update projectile on entry
    // line.delete(tpLineLong1)
    // line.delete(tpLineLong2)
    // line.delete(slLineLong)
    // label.delete(entryLabelLong)

    // tpLineLong1 := line.new(x1=bar_index, y1=takeProfit1, x2=bar_index + 1, y2=takeProfit1, color=color.green, width=2, style=line.style_solid)
    // tpLineLong2 := line.new(x1=bar_index, y1=takeProfit2, x2=bar_index + 1, y2=takeProfit2, color=color.green, width=2, style=line.style_dashed)
    // slLineLong := line.new(x1=bar_index, y1=stopLossLong, x2=bar_index + 1, y2=stopLossLong, color=color.red, width=2, style=line.style_solid)

// SHORT
var float xATRTrailingStopshort = na
var float stopLossShort = na
var float takeProfit1Short = na
var float takeProfit2Short = na

iff_1short = src > nz(xATRTrailingStopshort[1], 0) ? src - nLossshort : src + nLossshort
iff_2short = src < nz(xATRTrailingStopshort[1], 0) and src[1] < nz(xATRTrailingStopshort[1], 0) ? math.min(nz(xATRTrailingStopshort[1]), src + nLossshort) : iff_1short
xATRTrailingStopshort := src > nz(xATRTrailingStopshort[1], 0) and src[1] > nz(xATRTrailingStopshort[1], 0) ? math.max(nz(xATRTrailingStopshort[1]), src - nLossshort) : iff_2short

sell = src < xATRTrailingStopshort and ta.crossover(xATRTrailingStopshort, ta.ema(src, 21)) and close < trendEma_5min

if sell and (tradeType == "Sell Only" or tradeType == "Both")
    takeProfit1Short := close * (1 - tp1_percent / 100)
    takeProfit2Short := close * (1 - tp2_percent / 100)

    // Calculate stop loss based on percentage or ATR
    if sl_in_percent
        stopLossShort := close * (1 + sl_percent / 100)
    else
        stopLossShort := close + nLossshort

    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit 1 Short", from_entry="Short", limit=takeProfit1Short, qty=strategy.position_size * tp1_qty)
    strategy.exit("Take Profit 2 Short", from_entry="Short", limit=takeProfit2Short, qty=strategy.position_size * tp2_qty)
    strategy.exit("Stop Loss Short", from_entry="Short", stop=stopLossShort, qty=strategy.position_size)

    // Create Position Projectile for Short
    // var line tpLineShort1 = na
    // var line tpLineShort2 = na
    // var line slLineShort = na
    // var label entryLabelShort = na

    // // Update projectile on entry
    // line.delete(tpLineShort1)
    // line.delete(tpLineShort2)
    // line.delete(slLineShort)
    // label.delete(entryLabelShort)

    // tpLineShort1 := line.new(x1=bar_index, y1=takeProfit1Short, x2=bar_index + 1, y2=takeProfit1Short, color=color.green, width=2, style=line.style_solid)
    // tpLineShort2 := line.new(x1=bar_index, y1=takeProfit2Short, x2=bar_index + 1, y2=takeProfit2Short, color=color.green, width=2, style=line.style_dashed)
    // slLineShort := line.new(x1=bar_index, y1=stopLossShort, x2=bar_index + 1, y2=stopLossShort, color=color.red, width=2, style=line.style_solid)

// Updating Stop Loss after hitting Take Profit 1
if buy and close >= takeProfit1
    strategy.exit("Adjusted Stop Loss", from_entry="Long", stop=close)

// Updating Stop Loss after hitting Take Profit 1 for Short
if sell and close <= takeProfit1Short
    strategy.exit("Adjusted Stop Loss Short", from_entry="Short", stop=close)


متعلقہ

مزید