اس حکمت عملی کا نام 5 دن کی اونچائی اور کم کی قیمتوں میں توڑنے والی چینل حکمت عملی ہے۔ یہ حکمت عملی حالیہ 5 تجارتی دنوں کی اعلی ترین قیمتوں اور کم ترین قیمتوں کے اعدادوشمار کے ذریعہ قیمتوں کا ایک چینل بناتی ہے اور جب قیمتیں چینل کو توڑتی ہیں تو رجحان کی تجارت کرتی ہیں۔
اس کے لیے اقدامات درج ذیل ہیں:
پچھلے 5 کاروباری دنوں کی کم سے کم اور زیادہ سے زیادہ قیمتوں کا حساب لگائیں۔
سب سے زیادہ 2 سب سے زیادہ قیمتوں پر تعمیر کرنے کے لئے، سب سے کم 2 کم قیمتوں پر تعمیر کرنے کے لئے.
جب قیمتوں میں اضافہ ایک خاص تناسب سے زیادہ ہوتا ہے (مثال کے طور پر 0.3٪) ، خریدنے کا اشارہ ہوتا ہے۔
جب قیمت نیچے کی طرف ایک خاص تناسب سے زیادہ گرتی ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے۔
داخلے کے بعد دوسرے اعلی کم سطح کو بطور اسٹاپ نقصان کی پوزیشن ، یا کسی خاص تناسب کی روک تھام (جیسے 0.5٪) کے بعد فلیٹ پوزیشن۔
اس حکمت عملی کا فائدہ یہ ہے کہ اہم اعلی / کم قیمتوں کو توڑنے کے ذریعے رجحان کی تبدیلی کا فیصلہ کیا جائے۔ بریکنگ چینل قیمتوں کو فروغ دینے کے لئے قیمتوں کو مرکوز کرنے کی نمائندگی کرتا ہے۔ لیکن اس کو روکنے کی ضرورت ہے کہ اس میں بہت زیادہ غیر موثر سگنل پیدا نہ ہوں۔
مجموعی طور پر ، اہم قیمتوں کے علاقوں میں توجہ مرکوز کرنا ایک کلاسیکی رجحان کی پیروی کی حکمت عملی ہے۔ تاہم ، اس حکمت عملی کو زیادہ سے زیادہ فائدہ اٹھانے کے ل traders ، تاجروں کو دوسرے اشارے کی تصدیق اور پیرامیٹرز کو بہتر بنانے کی ضرورت ہے۔
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// Based on Sort pseudo-array v2 by apozdnyakov https://www.tradingview.com/script/IUlIoSnA-Sort-pseudo-array-v2/
strategy(title="5 Day high/low breakout strategy", shorttitle="5 days range breakout", overlay=true)
entry_factor = input(title="Entry - % point above high/low", type=input.float, defval=0.3, minval=0, maxval=5)
profit_target = input(title="Profit Target %", type=input.float, defval=0.5, minval=0, maxval=5)
trade_type = input(defval = "BOTH", title = "Trade Type: LONG, SHORT, BOTH ( case sensitive )", type = input.string)
width = input(defval = 2, title = "High/Low line width (Enter 0 to hide )", type = input.integer, minval=0, maxval=5)
debug = input(defval= "NO", title = "Display sorted low/high: YES, NO ( case sensitive )", type = input.string)
high_day1 = security(syminfo.tickerid, "D", high[1], lookahead = barmerge.lookahead_on)
high_day2 = security(syminfo.tickerid, "D", high[2], lookahead = barmerge.lookahead_on)
high_day3 = security(syminfo.tickerid, "D", high[3], lookahead = barmerge.lookahead_on)
high_day4 = security(syminfo.tickerid, "D", high[4], lookahead = barmerge.lookahead_on)
high_day5 = security(syminfo.tickerid, "D", high[5], lookahead = barmerge.lookahead_on)
low_day1 = security(syminfo.tickerid, "D", low[1], lookahead = barmerge.lookahead_on)
low_day2 = security(syminfo.tickerid, "D", low[2], lookahead = barmerge.lookahead_on)
low_day3 = security(syminfo.tickerid, "D", low[3], lookahead = barmerge.lookahead_on)
low_day4 = security(syminfo.tickerid, "D", low[4], lookahead = barmerge.lookahead_on)
low_day5 = security(syminfo.tickerid, "D", low[5], lookahead = barmerge.lookahead_on)
// sorts a list of up to the fixed length
sort_all(type) =>
float s0 = na
float s1 = na
float s2 = na
float s3 = na
float s4 = na
h_val = security(syminfo.tickerid, "D", high, false)
float min = na
float last = na
for i = 0 to 4
float min_local = na
float last_local = na
float val = na
for l = 0 to 4
if type == "high"
val := l == 0 ? high_day1 : val
val := l == 1 ? high_day2 : val
val := l == 2 ? high_day3 : val
val := l == 3 ? high_day4 : val
val := l == 4 ? high_day5 : val
else
val := l == 0 ? low_day1 : val
val := l == 1 ? low_day2 : val
val := l == 2 ? low_day3 : val
val := l == 3 ? low_day4 : val
val := l == 4 ? low_day5 : val
if(na(min) or val > min or (val == min and l > last))
new_min_local = na(min_local) ? val : min(min_local, na(min) ? val : max(min, val))
if(na(min_local) or new_min_local != min_local)
last_local := l
min_local := new_min_local
min := min_local
last := last_local
s0 := i == 0 ? min : s0
s1 := i == 1 ? min : s1
s2 := i == 2 ? min : s2
s3 := i == 3 ? min : s3
s4 := i == 4 ? min : s4
[s0, s1, s2, s3, s4]
[high5, high4, high3, high2, high1] = sort_all("high")
[low1, low2, low3, low4, low5] = sort_all("low")
plot(high1, color = color.blue, style=plot.style_circles, linewidth=width)
plot(high2, color = color.red, style=plot.style_circles, linewidth=width)
plot(low1, color = color.blue, style=plot.style_circles, linewidth=width)
plot(low2, color = color.red, style=plot.style_circles, linewidth=width)
if close >= (high1 * (1 + entry_factor/100)) and strategy.position_size == 0 and hour <= 12
strategy.entry(id = "long_entry", long = true, qty = 1, stop = high2)
strategy.close(id = "long_entry", when = strategy.position_size != 0 and (close < high2 or close > high1 * (1 + (entry_factor + profit_target)/100)))
if close <= (low1 * (1 - entry_factor/100)) and strategy.position_size == 0 and hour <= 12
strategy.entry(id = "short_entry", long = false, qty = 1, stop = low2)
strategy.close(id = "short_entry", when = strategy.position_size != 0 and (close > low2 or close < low1 * (1 - (entry_factor + profit_target)/100)))
if (hour == 14)
strategy.close_all()
//No more than 1 order per day
// strategy.risk.max_intraday_filled_orders(2)
//Check whether this is the first bar of the day? If yes, display highs for last 5 days
// t = time("1440", session.regular)
// is_first = na(t[1]) and not na(t) or t[1] < t
// if (is_first and debug != "NO")
// label.new(bar_index, na, tostring(high1) + ", " + tostring(high2) + ", " + tostring(high3) + ", " + tostring(high4) + ", " + tostring(high5), style=label.style_cross, yloc=yloc.abovebar)
// label.new(bar_index, na, tostring(low1) + ", " + tostring(low2) + ", " + tostring(low3) + ", " + tostring(low4) + ", " + tostring(low5), style=label.style_cross, yloc=yloc.belowbar)