Session Ranges
Draws the Asia, Europe and US sessions as range boxes, with weekly and monthly opens and funding times, using Crypto Calendar.
Session Ranges draws the Asia, Europe and US sessions as boxes on the chart, from the high to the low of each session, and writes how wide each range was. It also marks the weekly and monthly opens and the funding times, so that the daily rhythm of the market can be read at a glance. All the time calculations come from the Crypto Calendar library.
How it works
When a session opens, a box starts at its first bar. While the session is open, the box grows to the right and its top and bottom follow the session high and low. When the session closes, the box stays in place and a label above its left edge gives the session name and the size of its range as a percentage of the session low.
The sessions use fixed UTC hours: Asia from 00:00 to 08:00, Europe from 07:00 to 16:00, and the US from 13:00 to 22:00. The overlapping hours, Asia with Europe and Europe with the US, therefore appear as overlapping boxes. On the last bar, a label shows which sessions are active and how long remains until the next funding payment.
Comparing the boxes of a day shows where the activity was: a narrow Asia range followed by a wide Europe range, for example, means that most of the movement came after Europe opened. A session that breaks the high or the low of the previous one is easy to see.
Reading the chart
Hover over an item below to see it on the chart.
- Blue boxes: the Asia session.
- Amber boxes: the Europe session.
- Purple boxes: the US session.
- Grey dashed line: the weekly open, Monday 00:00 UTC.
- Green dashed line: the monthly open.
- Red dots at the bottom: bars during which a funding payment takes place.
Settings
- Asia session
- on
- Draws the Asia boxes.
- Europe session
- on
- Draws the Europe boxes.
- US session
- on
- Draws the US boxes.
- Weekly and monthly opens
- on
- Draws the two open lines.
- Funding times
- on
- Marks the funding bars.
- Funding interval (hours)
- 8
- 8 for most perpetual contracts; choose 4 or 1 when the contract uses a shorter interval.
How it reads the calendar
Each session is read with the same few calls; the box is updated with the high and the low that the library returns:
import MarkudaDev/CryptoCalendar/1 as cal
euStart = cal.sessionStarted(cal.Session.Europe)
euHi = cal.sessionHigh(cal.Session.Europe)
euLo = cal.sessionLow(cal.Session.Europe)Limits and points to note
- Boxes are drawn only on charts below 1 day; on daily and longer charts the indicator shows only the open lines.
- The session hours are fixed UTC windows and do not move with daylight saving time.
- On charts of 2 hours and above, a session starts with the first bar that opens inside it, so its box can be shorter than the session.
- The chart keeps up to 300 boxes and 300 labels, which is about 100 days of sessions. Older ones are removed first.
- The countdown on the last bar is measured from the opening time of that bar, not from the current moment.
- The boxes describe past ranges. They are not support or resistance by themselves and do not indicate where price will go.
Session Ranges, Asya, Avrupa ve ABD seanslarını grafikte her seansın en yüksek fiyatından en düşük fiyatına uzanan kutular olarak çizer ve her aralığın ne kadar geniş olduğunu yazar. Haftalık ve aylık açılışları ve funding saatlerini de işaretler; böylece piyasanın gün içindeki akışı tek bakışta okunur. Bütün zaman hesapları Crypto Calendar kitaplığından gelir.
Nasıl çalışır
Bir seans açıldığında ilk barında bir kutu başlar. Seans açık kaldıkça kutu sağa doğru büyür; üst ve alt kenarı seansın en yüksek ve en düşük fiyatını izler. Seans kapanınca kutu yerinde kalır ve sol kenarının üstündeki etiket seansın adını ve aralığının seansın en düşük fiyatına göre yüzde büyüklüğünü verir.
Seanslar sabit UTC saatleri kullanır: Asya 00:00 ile 08:00, Avrupa 07:00 ile 16:00, ABD 13:00 ile 22:00 arası. Bu yüzden örtüşen saatler, Asya ile Avrupa ve Avrupa ile ABD, üst üste binen kutular olarak görünür. Son barda bir etiket hangi seansların açık olduğunu ve bir sonraki funding ödemesine ne kadar kaldığını gösterir.
Bir günün kutularını karşılaştırmak hareketin nerede olduğunu gösterir: örneğin dar bir Asya aralığının ardından gelen geniş bir Avrupa aralığı, hareketin büyük bölümünün Avrupa açıldıktan sonra geldiğini anlatır. Bir önceki seansın en yüksek ya da en düşük fiyatını geçen seans kolayca görülür.
Grafiği okuma
Aşağıdaki bir maddenin üzerine geldiğinizde grafikte öne çıkar.
- Mavi kutular: Asya seansı.
- Amber kutular: Avrupa seansı.
- Mor kutular: ABD seansı.
- Gri kesikli çizgi: haftalık açılış, pazartesi UTC 00:00.
- Yeşil kesikli çizgi: aylık açılış.
- Alttaki kırmızı noktalar: funding ödemesinin gerçekleştiği barlar.
Ayarlar
- Asia session
- açık
- Asya kutularını çizer.
- Europe session
- açık
- Avrupa kutularını çizer.
- US session
- açık
- ABD kutularını çizer.
- Weekly and monthly opens
- açık
- İki açılış çizgisini çizer.
- Funding times
- açık
- Funding barlarını işaretler.
- Funding interval (hours)
- 8
- Çoğu süresiz sözleşme için 8; sözleşme daha kısa aralık kullanıyorsa 4 ya da 1 seçin.
Takvimi nasıl okur
Her seans aynı birkaç çağrıyla okunur; kutu, kitaplığın döndürdüğü en yüksek ve en düşük fiyatla güncellenir:
import MarkudaDev/CryptoCalendar/1 as cal
euStart = cal.sessionStarted(cal.Session.Europe)
euHi = cal.sessionHigh(cal.Session.Europe)
euLo = cal.sessionLow(cal.Session.Europe)Sınırlar ve dikkat edilecekler
- Kutular yalnız 1 günden kısa grafiklerde çizilir; günlük ve daha uzun grafiklerde gösterge yalnız açılış çizgilerini gösterir.
- Seans saatleri sabit UTC aralıklarıdır ve yaz saati uygulamasıyla kaymaz.
- 2 saatlik ve daha büyük grafiklerde seans, içinde açılan ilk barla başlar; bu yüzden kutu seanstan kısa olabilir.
- Grafik en çok 300 kutu ve 300 etiket tutar; bu yaklaşık 100 günlük seans demektir. Eskiler önce silinir.
- Son bardaki geri sayım o andan değil, o barın açılış saatinden ölçülür.
- Kutular geçmiş aralıkları anlatır. Tek başlarına destek ya da direnç değildir ve fiyatın nereye gideceğine işaret etmez.
indicator("Session Ranges", overlay = true, max_boxes_count = 300, max_labels_count = 300)import MarkudaDev/CryptoCalendar/1 as cal showAsia = input.bool(true, "Asia session")showEurope = input.bool(true, "Europe session")showUS = input.bool(true, "US session")showOpens = input.bool(true, "Weekly and monthly opens")showFunding = input.bool(true, "Funding times")fundingHours = input.int(8, "Funding interval (hours)", options = [1, 4, 8]) ASIA = "#6d7cff"EUROPE = "#e3b341"US = "#c084fc"intraday = timeframe.isintraday
indicator("Session Ranges", overlay = true, max_boxes_count = 300, max_labels_count = 300)import MarkudaDev/CryptoCalendar/1 as cal showAsia = input.bool(true, "Asia session")showEurope = input.bool(true, "Europe session")showUS = input.bool(true, "US session")showOpens = input.bool(true, "Weekly and monthly opens")showFunding = input.bool(true, "Funding times")fundingHours = input.int(8, "Funding interval (hours)", options = [1, 4, 8]) ASIA = "#6d7cff"EUROPE = "#e3b341"US = "#c084fc"intraday = timeframe.isintraday rangeText(string name, float hi, float lo) => name + " " + formatNumber((hi - lo) / lo * 100, 2) + "%" asiaStart = cal.sessionStarted(cal.Session.Asia)asiaIn = cal.inSessionOf(cal.Session.Asia)asiaEnd = cal.sessionEnded(cal.Session.Asia)asiaHi = cal.sessionHigh(cal.Session.Asia)asiaLo = cal.sessionLow(cal.Session.Asia)var asiaBox = naif showAsia and intraday { if asiaStart { asiaBox := boxNew(barIndex, asiaHi, barIndex, asiaLo, ASIA, bgcolor = ASIA + "1f", border_width = 1) } else if asiaIn and not na(asiaBox) { boxSetRight(asiaBox, barIndex) boxSetTop(asiaBox, asiaHi) boxSetBottom(asiaBox, asiaLo) } if asiaEnd and not na(asiaBox) { labelNew(asiaHi, rangeText("Asia", asiaHi, asiaLo), boxGetLeft(asiaBox), ASIA, style = "label_down", size = "small") }} euStart = cal.sessionStarted(cal.Session.Europe)euIn = cal.inSessionOf(cal.Session.Europe)euEnd = cal.sessionEnded(cal.Session.Europe)euHi = cal.sessionHigh(cal.Session.Europe)euLo = cal.sessionLow(cal.Session.Europe)var euBox = naif showEurope and intraday { if euStart { euBox := boxNew(barIndex, euHi, barIndex, euLo, EUROPE, bgcolor = EUROPE + "1f", border_width = 1) } else if euIn and not na(euBox) { boxSetRight(euBox, barIndex) boxSetTop(euBox, euHi) boxSetBottom(euBox, euLo) } if euEnd and not na(euBox) { labelNew(euHi, rangeText("Europe", euHi, euLo), boxGetLeft(euBox), EUROPE, style = "label_down", size = "small") }} usStart = cal.sessionStarted(cal.Session.US)usIn = cal.inSessionOf(cal.Session.US)usEnd = cal.sessionEnded(cal.Session.US)usHi = cal.sessionHigh(cal.Session.US)usLo = cal.sessionLow(cal.Session.US)var usBox = naif showUS and intraday { if usStart { usBox := boxNew(barIndex, usHi, barIndex, usLo, US, bgcolor = US + "1f", border_width = 1) } else if usIn and not na(usBox) { boxSetRight(usBox, barIndex) boxSetTop(usBox, usHi) boxSetBottom(usBox, usLo) } if usEnd and not na(usBox) { labelNew(usHi, rangeText("US", usHi, usLo), boxGetLeft(usBox), US, style = "label_down", size = "small") }} plot(showOpens ? cal.weeklyOpen() : na, "Weekly open", "#818692", style = "stepline", linestyle = "dashed")plot(showOpens ? cal.monthlyOpen() : na, "Monthly open", "#33d69f", style = "stepline", linestyle = "dashed")plotshape(showFunding and intraday and cal.isFundingBar(fundingHours), "Funding", style = "circle", location = "bottom", color = "#fb5b6b", size = "tiny") minutesLeft = cal.minutesToFunding(fundingHours)now = cal.activeSessions()if barstate.islast and intraday { labelNew(high, (now == "" ? "Between sessions" : now) + " · next funding in " + str(floor(minutesLeft / 60)) + "h " + str(minutesLeft % 60) + "m", barIndex, "#818692", style = "label_left", size = "small")}
Version 119 Oct 2026Latest
First release
There are no community posts about this indicator yet. You can write the first post about it.


