سائز بلاک حکمت عملی ایک تجارتی حکمت عملی ہے جو قطری قطاروں میں ظاہر ہونے والی قیمتوں میں ہونے والی تبدیلیوں کی فیصد یا ٹِک انحراف پر مبنی ہے۔ یہ چارٹ پر مقامی رجحانات اور الٹ پوائنٹس کو واضح طور پر دکھا سکتی ہے۔ یہ قیمت کی سمت کو ٹریک کرنے کے لئے ایک بہت ہی مفید ٹول ہے۔
حساب کتاب قیمت کی نقل و حرکت کی فیصد یا ٹِک انحراف پر مبنی ہے (جو پیرامیٹر
یہ صف بنیادی وسط لائن، اوپری اور نچلی حدود پر مشتمل ہے:
بیس مڈل لائن پچھلی صف کی اوپری یا نیچے کی حدود کے برابر ہے (اگر قیمت ایک وقت کے وقفے میں تیزی سے بدلتی ہے تو ، موجودہ صف کی بیس مڈل لائن پچھلی صف کی اوپری حد سے زیادہ یا پچھلی صف کی نیچے کی حد سے برابر تعداد میں انحراف پر منحصر ہے) ۔ حساب کتاب کے آغاز میں ، بیس مڈل لائن پہلی صف کی ابتدائی قیمت کے برابر ہے۔
نئی صف بنانے کا اصول:
اگر بند ≥ اوپری حد اور بند > کھولیں، اوپری حد آہستہ آہستہ اوپر منتقل ہو جائے گا، اور نچلی حد بھی اوپر منتقل ہو جائے گا لیکن کم.
اگر نچلی حد ≤ نچلی حد اور بند < کھلی ہے تو ، نچلی حد آہستہ آہستہ نیچے کی طرف منتقل ہوگی ، اور اوپری حد بھی نیچے کی طرف منتقل ہوگی لیکن کم۔
کچھ انحرافات کو ایڈجسٹ کرکے ، آپ چارٹ پر مقامی رجحان اور الٹ پوائنٹس کو واضح طور پر دیکھ سکتے ہیں۔ یہ قیمت کی سمت کو ٹریک کرنے کے لئے ایک بہت ہی مفید ٹول ہے۔
قیمتوں میں تبدیلی کے رجحانات کو تصور کریں اور حمایت اور مزاحمت کی واضح طور پر شناخت کریں.
قطری لائنیں واضح طور پر بھاگنے کی طاقت اور واپس لینے کی حد کو ظاہر کرتی ہیں۔
مختلف طاقت کے رجحانات کی نشاندہی کرنے کے لئے ڈایگونال لائنوں کی ڈھلوان کو ضرورت کے مطابق ایڈجسٹ کیا جاسکتا ہے۔
بھاگنے کے لئے نسبتا بڑی حمایت اور مزاحمت تلاش کر سکتے ہیں.
قیمت کی رفتار میں تبدیلیاں دیکھنا اور اس کے مطابق پوزیشن کا سائز ایڈجسٹ کرنا آسان ہے۔
کراس لائنیں قیمتوں کی اگلی حرکتوں کی مکمل طور پر درست پیش گوئی نہیں کرسکتی ہیں۔
رجحانات میں اختلافات کی نگرانی کرنے کی ضرورت ہے جہاں قطری لائنیں اصل قیمتوں سے مختلف ہوسکتی ہیں.
الگ تھلگ حکمت عملی کے طور پر استعمال نہیں کیا جا سکتا، اہم رجحان کا تعین کرنے کے لئے دیگر اشارے کو شامل کرنے کی ضرورت ہے.
پیرامیٹرز کی غلط ایڈجسٹمنٹ سے زیادہ کثرت سے تجارت ہوسکتی ہے۔
رجحانات کے پیچھے اندھے پن کے بجائے رجحانات کے دوران ممکنہ تبدیلیوں سے خبردار رہنے کی ضرورت ہے۔
پوزیشن سائزنگ کو اعتدال پسندی سے کم کر سکتے ہیں اور اہم رجحانات کے اندر دیگر اشارے کو معاون فیصلے کے طور پر حوالہ دیتے ہیں.
پوزیشن مینجمنٹ ماڈیولز کو مختلف رجحانات کے مراحل میں پوزیشنوں کو متحرک طور پر ایڈجسٹ کرنے کے لئے شامل کر سکتے ہیں.
جب اتار چڑھاؤ بڑھتا ہے تو پوزیشنوں کو کم کرنے کے لئے اتار چڑھاؤ کے اشارے شامل کرسکتے ہیں۔
ایک ہی نقصان کو کنٹرول کرنے کے لئے ڈراؤنڈ فیصد کی بنیاد پر سٹاپ نقصان مقرر کر سکتے ہیں.
جب قیمتوں میں اختلافات ہوتے ہیں تو ٹریڈنگ کو روکنے کے لئے فلٹرز شامل کرسکتے ہیں۔
مختلف طاقت کے رجحان کی تبدیلیوں کی نشاندہی کرنے کے لئے متعدد سطحوں میں کٹائی کے ڈھلوانوں کو تقسیم کرسکتے ہیں۔
متحرک طور پر پوزیشنوں کو ایڈجسٹ کرنے، سٹاپ اور فلٹرز کی ترتیب، زیادہ مسلسل قیمت کے رجحانات کو ٹریک کر سکتے ہیں.
سائز بلاک حکمت عملی قیمت کے رجحان کی تبدیلیوں کو بدیہی طور پر ظاہر کرنے اور معاونت ، مزاحمت اور توڑ کی سطحوں کی واضح طور پر نشاندہی کرنے کے لئے قطبی لائنوں کا استعمال کرتی ہے۔ لیکن فیصلہ کرنے کے لئے صرف قطبی لائنوں پر انحصار نہیں کیا جاسکتا ، دوسرے اشارے سے تجزیہ شامل کرنے اور خطرات کا انتظام کرنے کی ضرورت ہے۔ یہ تاجروں کو مارکیٹ کی تال کو بہتر طور پر سمجھنے میں مدد کرنے کے لئے ایک بہت ہی قیمتی معاون ٹول ہے۔ اصلاح حکمت عملی کو زیادہ مضبوط اور موثر بنا سکتی ہے جس میں بڑی درخواست کی صلاحیت ہے۔
/*backtest start: 2023-10-06 00:00:00 end: 2023-11-05 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // ********************************************************************************** // This code is invented and written by @StCogitans. // The idea presented in this code and the rights to this code belong to @StCogitans. // © https://www.tradingview.com/u/StCogitans // // Description. // Sizeblock - a price change strategy in the form of diagonal rows. // ********************************************************************************** // STRATEGY string NAME = 'Sizeblock' string ACRONYM = 'SB' bool OVERLAY = true int PYRAMIDING = 0 string QTY_TYPE = strategy.percent_of_equity float QTY_VALUE = 100 float CAPITAL = 100 string COM_TYPE = strategy.commission.percent float COM_VALUE = 0.1 bool ON_CLOSE = false bool BAR_MAGNIFIER = false bool OHLC = true strategy(NAME, ACRONYM, OVERLAY, pyramiding=PYRAMIDING, default_qty_type=QTY_TYPE, default_qty_value=QTY_VALUE, initial_capital=CAPITAL, commission_type=COM_TYPE, commission_value=COM_VALUE, process_orders_on_close=ON_CLOSE, use_bar_magnifier=BAR_MAGNIFIER, fill_orders_on_standard_ohlc=OHLC) // ARGUMENTS // Datetime DTstart = input(timestamp("01 Jan 2000 00:00 +0000"), 'Start time', group='Datetime') DTfinish = input(timestamp("01 Jan 2080 23:59 +0000"), 'Finish time', group='Datetime') DTperiod = true // Main dev_source = input.string('Close', title='Source', options=["Close", "HighLow"], tooltip='Price data for settlement.', group='Main') dev_type = input.string('Percentage', title='Deviation', options=['Percentage', 'Ticks'], tooltip='The type of deviation to calculate.', group='Main') dev_value = input.float(1, title='Quantity', minval=0.001, step=0.01, tooltip='Quantity to be calculated.', group='Main') dev_back = input.float(2, title='U-turn', minval=0.001, step=0.01, tooltip='Quantity for reversal.', group='Main') mode = input.string('Limit', title='Positions', options=['Limit', 'Market'], tooltip='Limit or market orders.', group='Main') direct = input.string('All', title='Direction', options=['All', 'Buy', 'Sell'], tooltip='The type of positions to be opened.', group='Main') swapping = input.bool(false, title='Swapping', tooltip='Swap points to open a new position.', group='Main') // CALCULATION SYSTEM Assembling(s, t, v, vb) => float a = open float b = close float c = s == "HighLow" ? math.round_to_mintick(high) : math.round_to_mintick(b) float d = s == "HighLow" ? math.round_to_mintick(low) : math.round_to_mintick(b) float x = math.round_to_mintick(a) x := nz(x[1], x) float _v = t == "Ticks" ? syminfo.mintick * v : v float _vb = t == "Ticks" ? syminfo.mintick * vb : vb float h = t == "Ticks" ? math.round_to_mintick(x + _v) : math.round_to_mintick(x * (1 + _v / 100)) float l = t == "Ticks" ? math.round_to_mintick(x - _v) : math.round_to_mintick(x * (1 - _v / 100)) h := nz(h[1], h) l := nz(l[1], l) if t == "Ticks" if c >= h and b > a while c >= h x := h h := math.round_to_mintick(h + _v) l := math.round_to_mintick(x - _vb) if d <= l and b < a while d <= l x := l l := math.round_to_mintick(l - _v) h := math.round_to_mintick(x + _vb) else if t == "Percentage" if c >= h and b > a while c >= h x := h h := math.round_to_mintick(h * (1 + _v / 100)) l := math.round_to_mintick(x * (1 - _vb / 100)) if d <= l and b < a while d <= l x := l l := math.round_to_mintick(l * (1 - _v / 100)) h := math.round_to_mintick(x * (1 + _vb / 100)) [x, h, l] [lx, lh, ll] = Assembling(dev_source, dev_type, dev_value, dev_back) // PLOT // Lines plot_up = plot(lh, color=color.new(color.green, 50), style=plot.style_line, linewidth=1) plot_main = plot(lx, color=color.new(color.silver, 50), style=plot.style_line, linewidth=1) plot_down = plot(ll, color=color.new(color.red, 50), style=plot.style_line, linewidth=1) // Areas fill(plot_up, plot_main, lh, lx, color.new(color.teal, 80), color.new(color.teal, 80)) fill(plot_main, plot_down, lx, ll, color.new(color.maroon, 80), color.new(color.maroon, 80)) // TRADING // Alert variables int Action = -1 int PosType = -1 int OrderType = -1 float Price = -1.0 // Direction variables bool ifBuy = direct == "All" or direct == "Buy" ? true : false bool ifSell = direct == "All" or direct == "Sell" ? true : false // Market entries if (strategy.closedtrades + strategy.opentrades == 0 or mode == "Market") and DTperiod if ((swapping and lx < nz(lx[1], lx)) or (not swapping and lx > nz(lx[1], lx))) and ifBuy Action := 1 PosType := 1 OrderType := 1 Price := math.round_to_mintick(close) strategy.entry('Long', strategy.long) if ((swapping and lx > nz(lx[1], lx)) or (not swapping and lx < nz(lx[1], lx))) and ifSell Action := 2 PosType := 2 OrderType := 1 Price := math.round_to_mintick(close) strategy.entry('Short', strategy.short) // Closing positions by market if DTperiod and mode == "Market" if direct == "Buy" and strategy.position_size > 0 if swapping and lx > nz(lx[1], lx) Action := 2 PosType := 3 OrderType := 1 Price := math.round_to_mintick(close) strategy.close('Long', comment='Close') if not swapping and lx < nz(lx[1], lx) Action := 2 PosType := 3 OrderType := 1 Price := math.round_to_mintick(close) strategy.close('Long', comment='Close') if direct == "Sell" and strategy.position_size < 0 if swapping and lx < nz(lx[1], lx) Action := 1 PosType := 3 OrderType := 1 Price := math.round_to_mintick(close) strategy.close('Short', comment='Close') if not swapping and lx > nz(lx[1], lx) Action := 1 PosType := 3 OrderType := 1 Price := math.round_to_mintick(close) strategy.close('Short', comment='Close') // Limit entries and exits if swapping and DTperiod and mode == "Limit" if strategy.position_size < 0 Action := 1 PosType := 1 OrderType := 2 Price := ll if ifBuy strategy.entry('Long', strategy.long, limit=ll) else PosType := 3 strategy.exit('Exit', limit=ll) if strategy.position_size > 0 Action := 2 PosType := 2 OrderType := 2 Price := lh if ifSell strategy.entry('Short', strategy.short, limit=lh) else PosType := 3 strategy.exit('Exit', limit=lh) if strategy.closedtrades + strategy.opentrades > 0 and strategy.position_size == 0 if ifBuy Action := 1 PosType := 1 OrderType := 2 Price := ll strategy.entry('Long', strategy.long, limit=ll) if ifSell Action := 2 PosType := 2 OrderType := 2 Price := lh strategy.entry('Short', strategy.short, limit=lh) if not swapping and DTperiod and mode == "Limit" if strategy.position_size < 0 Action := 1 PosType := 1 OrderType := 2 Price := lh if ifBuy strategy.entry('Long', strategy.long, stop=lh) else PosType := 3 strategy.exit('Exit', stop=lh) if strategy.position_size > 0 Action := 2 PosType := 2 OrderType := 2 Price := ll if ifSell strategy.entry('Short', strategy.short, stop=ll) else PosType := 3 strategy.exit('Exit', stop=ll) if strategy.closedtrades + strategy.opentrades > 0 and strategy.position_size == 0 if ifBuy Action := 1 PosType := 1 OrderType := 2 Price := lh strategy.entry('Long', strategy.long, stop=lh) if ifSell Action := 2 PosType := 2 OrderType := 2 Price := ll strategy.entry('Short', strategy.short, stop=ll) // Everything is closed and canceled if not DTperiod strategy.cancel_all() strategy.close_all(comment='Close') // Alerts // Convert to string variables string Action_Txt = Action == 1 ? "Buy" : Action == 2 ? "Sell" : na string PosType_Txt = PosType == 1 ? "Long" : PosType == 2 ? "Short" : PosType == 3 ? "Flat" : na string OrderType_Txt = OrderType == 1 ? "Market" : OrderType == 2 ? "Limit" : na string Price_Txt = Price > 0 ? str.tostring(Price) : na // Output if not (Action == nz(Action[1], Action) and Price == nz(Price[1], Price) and OrderType == nz(OrderType[1], OrderType)) and DTperiod alert('{"pair": "' + syminfo.ticker + '", "direction": "' + Action_Txt + '", "entertype": "' + OrderType_Txt + '", "position": "' + PosType_Txt + '", "price": "' + Price_Txt + '"}') // ********************* // Good job, Soldier! ;> // *********************