اندیکاتور Session Vlevel (سشن‌های معاملاتی)

Session Vlevel اندیکاتور اختصاصی Vlevel است که سشن‌های سیدنی، توکیو، لندن و نیویورک را با ساعت محلی هر شهر و سقف و کف هر سشن روی چارت نشان می‌دهد.

چیست

بازار فارکس و طلا ۲۴ ساعته است، ولی رفتارش در طول روز یکسان نیست. سشن آسیا معمولاً آرام است، باز شدن لندن حرکت می‌آورد و هم‌پوشانی لندن و نیویورک پرحجم‌ترین ساعت‌هاست. Session Vlevel این ساعت‌ها را با رنگ جدا روی چارت مشخص می‌کند و تغییر ساعت تابستانی هر شهر را خودش حساب می‌کند.

چطور محاسبه می‌شود

  1. هر سشن با ساعت رسمی شهر خودش تعریف می‌شود: سیدنی، توکیو، لندن و نیویورک.
  2. برای هر سشن، بالاترین و پایین‌ترین قیمت در طول آن سشن به‌صورت یک کادر روی چارت رسم می‌شود.
  3. ساعت تابستانی هر شهر جداگانه اعمال می‌شود، پس سشن‌ها همیشه با ساعت واقعی بازار هم‌خوان هستند.

تریدرها چطور آن را می‌خوانند

  • شکست سقف یا کف سشن آسیا در ابتدای لندن یکی از الگوهای رایج روزانه است.
  • هم‌پوشانی لندن و نیویورک معمولاً پرنوسان‌ترین ساعت‌های روز است.
  • برای فیلتر کردن ساعت معامله: بسیاری از استراتژی‌ها فقط در یک سشن مشخص لبه دارند.

تنظیمات

می‌توانی هر سشن را روشن یا خاموش کنی و رنگ‌ها را تغییر دهی. اندیکاتور روی تایم‌فریم‌های درون‌روزی (۱ دقیقه تا ۱ ساعت) بهترین نمایش را دارد.

کجا گول می‌زند

  • سشن‌ها برای بازارهای ۲۴/۵ مثل فارکس و طلا معنا دارند؛ در کریپتو که آخر هفته هم باز است، تأثیرشان کمتر است.
  • روزهای تعطیل رسمی هر کشور، رفتار سشن آن را تغییر می‌دهد.

کد Pine Script آن در Vlevel

این همان اسکریپتی است که چارت اجرا می‌کند. در پنجره‌ی اندیکاتورهای چارت می‌توانی آن را باز کنی، تغییر دهی و نسخه‌ی خودت را ذخیره کنی.

Session Vlevel · Pine Script v6
//@version=6
// Session Vlevel: the New York, London, Tokyo and Sydney sessions, each read in its own city's
// local time, so the boxes follow daylight-saving changes by themselves.
indicator("Session Vlevel", overlay = true, max_boxes_count = 500, max_labels_count = 500, max_lines_count = 500)

nyOn    = input.bool(true, "New York", group = "Sessions", inline = "ny")
nyHours = input.session("0800-1700", "", group = "Sessions", inline = "ny")
nyColor = input.color(#ff5d00, "", group = "Sessions", inline = "ny")
ldOn    = input.bool(true, "London", group = "Sessions", inline = "ld")
ldHours = input.session("0700-1600", "", group = "Sessions", inline = "ld")
ldColor = input.color(#2157f3, "", group = "Sessions", inline = "ld")
tkOn    = input.bool(true, "Tokyo", group = "Sessions", inline = "tk")
tkHours = input.session("0900-1800", "", group = "Sessions", inline = "tk")
tkColor = input.color(#e91e63, "", group = "Sessions", inline = "tk")
syOn    = input.bool(true, "Sydney", group = "Sessions", inline = "sy")
syHours = input.session("0800-1700", "", group = "Sessions", inline = "sy")
syColor = input.color(#ffeb3b, "", group = "Sessions", inline = "sy")

shade     = input.int(90, "Box transparency", minval = 0, maxval = 100, group = "Style", display = display.none)
showNames = input.bool(true, "Session names", group = "Style")
showMid   = input.bool(false, "Middle of the range", group = "Style")
showDays  = input.bool(true, "Day dividers", group = "Style")

// One session: while it runs, a box over its high and low with its name above the middle.
session(bool on, string hours, string zone, string name, color c) =>
    var box frame = na
    var label tag = na
    var line mid = na
    var float hi = na
    var float lo = na
    var int first = 0
    var bool was = false
    active = on and timeframe.isintraday and not na(time(timeframe.period, hours, zone))
    // A gap of hours (a weekend or a holiday) ends the session even if both sides fall inside it.
    reopened = bar_index > 0 and time - time[1] > 4 * 3600000
    if active and (not was or reopened)
        first := bar_index
        hi := high
        lo := low
        frame := box.new(bar_index, hi, bar_index, lo, border_color = c, border_style = line.style_dotted, bgcolor = color.new(c, shade))
        tag := showNames ? label.new(bar_index, hi, name, style = label.style_label_down, color = #00000000, textcolor = c, size = size.tiny) : na
        mid := showMid ? line.new(bar_index, (hi + lo) / 2, bar_index, (hi + lo) / 2, color = c, style = line.style_dashed) : na
    else if active
        hi := math.max(hi, high)
        lo := math.min(lo, low)
        box.set_top(frame, hi)
        box.set_rightbottom(frame, bar_index, lo)
        label.set_xy(tag, math.round((first + bar_index) / 2), hi)
        line.set_xy1(mid, first, (hi + lo) / 2)
        line.set_xy2(mid, bar_index, (hi + lo) / 2)
    was := active
    active

session(nyOn, nyHours, "America/New_York", "New York", nyColor)
session(ldOn, ldHours, "Europe/London", "London", ldColor)
session(tkOn, tkHours, "Asia/Tokyo", "Tokyo", tkColor)
session(syOn, syHours, "Australia/Sydney", "Sydney", syColor)

// A dashed line where each new day starts.
if showDays and timeframe.isintraday and dayofweek != dayofweek[1]
    line.new(bar_index, low, bar_index, high, extend = extend.both, color = color.new(color.gray, 55), style = line.style_dashed)

اندیکاتورها قیمت‌های گذشته را توصیف می‌کنند و هیچ‌کدام آینده را پیش‌بینی نمی‌کنند. برای آموزش است، نه توصیه‌ی سرمایه‌گذاری.