
ٹرینڈ بلاک حکمت عملی ایک تجارتی حکمت عملی ہے جس میں قیمت میں تبدیلی کی فیصد یا چھلانگ کے پوائنٹس کی بنیاد پر کواگنی لائن کی صف بندی کی جاتی ہے۔ یہ چارٹ پر مقامی رجحانات اور موڑ کے مقامات کو واضح طور پر ظاہر کرسکتا ہے۔ یہ قیمت کی سمت کو ٹریک کرنے کا ایک بہت ہی مفید ذریعہ ہے۔
اس حکمت عملی کا حساب کتاب قیمت میں تبدیلی کی فیصد یا پوائنٹس آف بیسنگ کی بنیاد پر کیا جاتا ہے (جسے کواڈ آف بیسنگ کواڈ پیرامیٹرز میں ظاہر کیا جاتا ہے) ، اور یہ چارٹ پر کواڈ آف بیسنگ لائنوں کی شکل میں ظاہر ہوتا ہے۔
ہر لائن بیس کی درمیانی لائن، اوپری حد لائن اور نچلی حد لائن پر مشتمل ہے:
بیس کی وسط لائن پچھلی یا اگلی سطر کی اوپری حد یا نچلی حد کے برابر ہے۔ اگر قیمت ایک وقت کے وقفے میں تیزی سے بدلتی ہے تو ، موجودہ سطر کی بیس کی وسط لائن پچھلی سطر کی اوپری حد سے زیادہ ہوگی یا اگلی سطر کی نچلی حد سے کم ہوگی۔ قیمت کی تبدیلی کی سمت پر منحصر ہے) ۔ حساب کتاب کے آغاز پر ، بیس کی وسط لائن پہلی سطر کی ابتدائی قیمت کے برابر ہے۔
سلنڈر کی تعداد سلنڈر کے پیرامیٹرز قیمت کی تبدیلی کی سمت کی سمت کو تبدیل کرنے کے لئے سلنڈر موڑنے والے سلنڈر کے پیرامیٹرز کی طرف سے قیمت کی تبدیلی کی سمت کو تبدیل کرنے کے لئے سلنڈر کی تعداد سلنڈر کے پیرامیٹرز کی طرف سے قیمت کی تبدیلی کی سمت کی سمت میں اوپر کی حد یا نیچے کی حد کے انحراف کی مقدار کا تعین کرتا ہے.
نئی لائن بنانے کے قواعد:
اگر بندش کی قیمت ≥ اوپری حد ہے اور بندش کی قیمت> اوپننگ قیمت ہے تو ، اوپری حد آہستہ آہستہ اوپر کی طرف بڑھتی ہے ، اور نچلی حد بھی اوپر کی طرف بڑھتی ہے لیکن کم ہے۔
اگر کم ترین قیمت ≤ نچلی حد اور بندش کی قیمت < افتتاحی قیمت ہے تو ، نچلی حد آہستہ آہستہ نیچے جائے گی ، اوپری حد بھی نیچے جائے گی لیکن اس کی مقدار کم ہوگی۔
اس کے علاوہ ، آپ کو مقامی رجحانات اور ٹرننگ پوائنٹس کو چارٹ پر واضح طور پر دیکھنے کے لئے انحراف کی مقدار کو ایڈجسٹ کرنے کی ضرورت ہے۔ یہ قیمتوں کی نقل و حرکت کو ٹریک کرنے کے لئے ایک بہت ہی مفید ٹول ہے۔
قیمتوں میں تبدیلی کے رجحانات کو ظاہر کرنے کے لئے ، معاونت اور مزاحمت کی واضح شناخت کریں۔
زاویہ کی لکیر واضح طور پر نشان زد کرتی ہے کہ کس حد تک ٹوٹ پھوٹ ہوئی ہے اور کس حد تک اس کی بحالی کی گئی ہے۔
مختلف شدت کے رجحانات کو پہچاننے کے لئے زاویہ لائنوں کے تناسب کو ایڈجسٹ کرنے کی ضرورت ہے۔
اس کے علاوہ، یہ بھی ممکن ہے کہ آپ کو زیادہ سے زیادہ سپورٹ اور مزاحمت کا سامنا کرنا پڑتا ہے.
قیمتوں میں تیزی سے تبدیلیوں کو دیکھ کر پوزیشن کو ایڈجسٹ کرنا آسان ہے۔
زاویہ کی لکیر قیمتوں کے بعد کی پیش گوئی کی درست پیش گوئی نہیں کر سکتی۔
اس کے علاوہ ، آپ کو اس بات کا یقین کرنے کی ضرورت ہے کہ آپ کے کاروبار کی قیمتوں کا تعین کیا گیا ہے ، اور آپ کو اس بات کا یقین کرنے کی ضرورت ہے کہ آپ کے کاروبار کی قیمتوں کا تعین کیا گیا ہے ، اور آپ کے کاروبار کی قیمتوں کا تعین کیا گیا ہے۔
اس کے علاوہ، یہ بھی کہا گیا ہے کہ یہ ایک الگ الگ حکمت عملی نہیں ہے، اس کے بجائے، یہ دیگر اشارے کے ساتھ مل کر بڑے رجحانات کا تعین کرنے کی ضرورت ہے.
اس بات کا خیال رکھنا ضروری ہے کہ پیرامیٹرز کو غیر مناسب طریقے سے ایڈجسٹ کرنے سے زیادہ بار بار تجارت ہوسکتی ہے۔
اس کے علاوہ، یہ بھی کہا گیا ہے کہ اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ.
پوزیشن کے سائز کو مناسب طریقے سے کم کیا جاسکتا ہے ، جبکہ دوسرے اشارے کو معاون فیصلے کے طور پر حوالہ دیا جاسکتا ہے ، اور بڑے رجحانات کے تحت کام کیا جاسکتا ہے۔
ایک پوزیشن مینجمنٹ ماڈیول شامل کیا جاسکتا ہے ، جس میں رجحان کے مختلف مراحل میں پوزیشنوں کو متحرک طور پر ایڈجسٹ کیا جاسکتا ہے۔
اتار چڑھاؤ کی شرح کے اشارے کے ساتھ مل کر ، اتار چڑھاؤ بڑھنے پر پوزیشن کو کم کیا جاسکتا ہے۔
اسٹاپ نقصان کو روکنے کے لئے ، آپ کو ایک ہی نقصان پر قابو پانے کے لئے واپسی کے تناسب کے مطابق اسٹاپ نقصان کا تعین کرنا ہوگا۔
فلٹرز کو شامل کیا جاسکتا ہے تاکہ قیمتوں میں انحراف کی صورت میں تجارت کو روک دیا جاسکے۔
کثیر درجے کے کنٹینر سلپ کو تقسیم کیا جاسکتا ہے ، جس سے مختلف شدت کے رجحانات کی شناخت کی جاسکتی ہے۔
متحرک طور پر پوزیشنوں کو ایڈجسٹ کرکے ، اسٹاپ نقصان اور فلٹرنگ کی شرائط طے کرکے ، قیمت کے رجحانات کو زیادہ مستحکم طریقے سے ٹریک کیا جاسکتا ہے۔
ٹرینڈ بلاک حکمت عملی کا استعمال کرتے ہوئے کراس لائن قیمت کے رجحان میں تبدیلی کو ظاہر کرتی ہے ، معاون مزاحمت کی سطح اور توڑنے کی جگہ کو واضح طور پر پہچان سکتی ہے۔ تاہم ، کراس لائن کے آزاد فیصلے پر انحصار نہیں کیا جاسکتا ہے ، خطرے کو کنٹرول کرتے ہوئے جامع تجزیہ کے لئے دوسرے اشارے کی مدد کی ضرورت ہے۔ یہ ایک بہت ہی قیمتی معاون آلہ ہے ، جو تاجروں کو مارکیٹ کی رفتار کو بہتر طور پر سمجھنے میں مدد فراہم کرتا ہے۔ اصلاح کے ذریعہ حکمت عملی کو زیادہ مستحکم اور موثر بنایا جاسکتا ہے ، جس میں بہت زیادہ اطلاق کی صلاحیت ہے۔
/*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! ;>
// *********************