ڈبل شمولیت اور رجحان کی حکمت عملی


تخلیق کی تاریخ: 2024-01-30 15:11:48 آخر میں ترمیم کریں: 2024-01-30 15:11:48
کاپی: 1 کلکس کی تعداد: 705
1
پر توجہ دیں
1617
پیروکار

ڈبل شمولیت اور رجحان کی حکمت عملی

جائزہ

ڈبل اندرونی اور رجحان کی حکمت عملی ایک مقدار کی تجارت کی حکمت عملی ہے جو رجحان کا تعین کرنے کے لئے ڈبل اندرونی شکل اور منتقل اوسط کا استعمال کرتی ہے۔ یہ حکمت عملی ڈبل اندرونی شکل کے ساتھ مل کر اعلی امکانات کے تجارتی سگنل مہیا کرتی ہے ، جبکہ مارکیٹ کے رجحان کا تعین کرنے کے لئے منتقل اوسط کا استعمال کرتی ہے ، اور رجحان کی سمت میں زیادہ کم کام کرتی ہے۔

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

  1. Hull Moving Average کو رجحانات کا اندازہ کرنے کے لئے استعمال کیا جاتا ہے۔
  2. جب دوہری اندرونی شکل ظاہر ہوتی ہے تو ، یہ سمجھا جاتا ہے کہ یہ ایک اعلی امکان کا تجارتی اشارہ ہے۔ اندرونی شکل وہ شکل ہے جس میں پہلی دو K لائنوں کی اعلی ترین قیمت ہے ، اور کم قیمت تیسری K لائن کے ذریعہ شامل ہے۔
  3. اگر اختتامی قیمت چلتی اوسط سے اوپر ہے اور کثیر سر اندرونی تشکیل دے رہی ہے تو ، اندرونی شکل کی اونچائی کے قریب خرید و فروخت کا اسٹاپ آرڈر قائم کریں۔ اگر اختتامی قیمت چلتی اوسط سے نیچے ہے اور خالی سر اندرونی تشکیل دے رہی ہے تو ، اندرونی شکل کی کم سطح کے قریب فروخت کا اسٹاپ آرڈر قائم کریں۔
  4. ایک بار جب اسٹاپ بٹن ٹریل ہوجاتا ہے تو ، اسٹاپ نقصان اور اسٹاپ بٹنوں کو پہلے سے طے شدہ اسٹاپ نقصان اور اسٹاپ تناسب کے مطابق ترتیب دیں۔

طاقت کا تجزیہ

  1. ڈبل اندرونی شکلیں ایک اعلی امکان کی واپسی کا اشارہ فراہم کرتی ہیں۔ ڈبل اندرونی شکلوں کا ظہور ، قلیل مدتی قیمتوں میں واپسی کی نشاندہی کرسکتا ہے۔
  2. اس کے علاوہ ، یہ ایک متحرک اوسط کے ساتھ مل کر استعمال کیا جاتا ہے ، جس سے آپ کو بڑے رجحانات کی سمت میں کام کرنے میں مدد ملتی ہے ، جس سے آپ کو منافع کمانے کا امکان بڑھ جاتا ہے۔
  3. رجحانات کے دوران توڑ پھوڑ کے قریب اسٹاپ سنگل اسٹورز کو اپنانے سے بہتر داخلے کا وقت ملتا ہے۔

خطرے کا تجزیہ

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

اصلاح کی سمت

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © Kaspricci

//@version=5
strategy(
     title = "Double Inside Bar & Trend Strategy - Kaspricci", 
     shorttitle = "Double Inside Bar & Trend", 
     overlay=true, 
     initial_capital = 100000, 
     currency = currency.USD, 
     default_qty_type = strategy.percent_of_equity, 
     default_qty_value = 100, 
     calc_on_every_tick = true, 
     close_entries_rule = "ANY")

// ================================================ Entry Inputs ======================================================================
headlineEntry   = "Entry Seettings"

maSource        = input.source(defval = close,             group = headlineEntry, title = "MA Source")
maType          = input.string(defval = "HMA",             group = headlineEntry, title = "MA Type", options = ["EMA", "HMA", "SMA", "SWMA", "VWMA", "WMA"])
maLength        = input.int(   defval = 45,    minval = 1, group = headlineEntry, title = "HMA Length")

float ma = switch maType 
    "EMA"  => ta.ema(maSource,  maLength)
    "HMA"  => ta.hma(maSource,  maLength)
    "SMA"  => ta.sma(maSource,  maLength)
    "SWMA" => ta.swma(maSource)
    "VWMA" => ta.vwma(maSource, maLength)
    "WMA"  => ta.wma(maSource,  maLength)

plot(ma, "Trend MA", color.purple)

// ================================================ Trade Inputs ======================================================================
headlineTrade   = "Trade Seettings"

stopLossType    = input.string(defval = "ATR",                         group = headlineTrade,                 title = "Stop Loss Type",            options = ["ATR", "FIX"])
atrLength       = input.int(   defval = 50,   minval = 1,              group = headlineTrade, inline = "ATR", title = "   ATR: Length                 ")
atrFactor       = input.float( defval =  2.5, minval = 0, step = 0.05, group = headlineTrade, inline = "ATR", title = "Factor       ",             tooltip = "multiplier for ATR value")
takeProfitRatio = input.float( defval =  2.0, minval = 0, step = 0.05, group = headlineTrade,                 title = "            TP Ration",     tooltip = "Multiplier for Take Profit calculation")
fixStopLoss     = input.float( defval = 10.0, minval = 0, step = 0.5,  group = headlineTrade, inline = "FIX", title = "   FIX: Stop Loss             ") * 10 // need this in ticks
fixTakeProfit   = input.float( defval = 20.0, minval = 0, step = 0.5,  group = headlineTrade, inline = "FIX", title = "Take Profit",               tooltip = "in pips") * 10 // need this in ticks
useRiskMagmt    = input.bool(  defval = true,                          group = headlineTrade, inline = "RM",  title = "")
riskPercent     = input.float( defval = 1.0,  minval = 0., step = 0.5, group = headlineTrade, inline = "RM",  title = "Risk in %                ", tooltip = "This will overwrite quantity from startegy settings and calculate the trade size based on stop loss and risk percent") / 100

// ================================================ Filter Inputs =====================================================================
headlineFilter  = "Filter Setings"

// date filter
filterDates     = input.bool(defval = false,                                 group = headlineFilter, title = "Filter trades by dates")
startDateTime   = input(defval = timestamp("2022-01-01T00:00:00+0000"), group = headlineFilter, title = "       Start Date & Time")
endDateTime     = input(defval = timestamp("2099-12-31T23:59:00+0000"), group = headlineFilter, title = "       End Date & Time  ")

dateFilter      = not filterDates or (time >= startDateTime and time <= endDateTime)

// session filter
filterSession   = input.bool(title = "Filter trades by session", defval = false, group = headlineFilter)
session         = input(title = "       Session", defval = "0045-2245", group = headlineFilter)

sessionFilter   = not filterSession or time(timeframe.period, session, timezone = "CET")

// ================================================ Trade Entries and Exits =====================================================================

// calculate stop loss
stopLoss        = switch stopLossType
    "ATR" => nz(math.round(ta.atr(atrLength) * atrFactor / syminfo.mintick, 0), 0)
    "FIX" => fixStopLoss

// calculate take profit
takeProfit      = switch stopLossType
    "ATR" => math.round(stopLoss * takeProfitRatio, 0)
    "FIX" => fixTakeProfit


doubleInsideBar = high[2] > high[1] and high[2] > high[0] and low[2] < low[1] and low[2] < low[0]

// highlight mother candel and inside bar candles
bgcolor(doubleInsideBar ? color.rgb(33, 149, 243, 80) : na)
bgcolor(doubleInsideBar ? color.rgb(33, 149, 243, 80) : na, offset = -1)
bgcolor(doubleInsideBar ? color.rgb(33, 149, 243, 80) : na, offset = -2)

var float buyStopPrice  = na
var float sellStopPrice = na

if (strategy.opentrades == 0 and doubleInsideBar and barstate.isconfirmed)
    buyStopPrice  := high[0] // high of recent candle (second inside bar)
    sellStopPrice := low[0] // low of recent candle (second inside bar)

    tradeID = str.tostring(strategy.closedtrades + strategy.opentrades + 1)

    quantity = useRiskMagmt ? math.round(strategy.equity * riskPercent / stopLoss, 2) / syminfo.mintick : na

    commentTemplate = "{0} QTY: {1,number,#.##} SL: {2} TP: {3}"

    if (close > ma)
        longComment = str.format(commentTemplate, tradeID + "L", quantity, stopLoss / 10, takeProfit / 10)
        strategy.entry(tradeID + "L", strategy.long, qty = quantity, stop = buyStopPrice, comment = longComment)
        strategy.exit(tradeID + "SL", tradeID + "L", profit = takeProfit, loss = stopLoss, comment_loss = "SL", comment_profit = "TP")

    if (close < ma)
        shortComment = str.format(commentTemplate, tradeID + "S", quantity, stopLoss / 10, takeProfit / 10)
        strategy.entry(tradeID + "S", strategy.short, qty = quantity, stop = sellStopPrice, comment = shortComment)
        strategy.exit(tradeID + "SL", tradeID + "S", profit = takeProfit, loss = stopLoss, comment_loss = "SL", comment_profit = "TP")

// as soon as the first pending order has been entered the remaing pending order shall be cancelled 
if strategy.opentrades > 0
    currentTradeID = str.tostring(strategy.closedtrades + strategy.opentrades)
    strategy.cancel(currentTradeID + "S")
    strategy.cancel(currentTradeID + "L")