millionchart
English

واحدها و لیترال‌ها

مدت، ساعت روز، لحظهٔ دقیق، درصد و رنگ را چطور بنویسید، هر کدام چه عددی است، و حرکت قیمت را چطور با پیپ و تیک اندازه بگیرید.

عددها در اسکریپت اغلب معنایی دارند: هشت ساعت، نیم درصد، یک ساعت از روز، یک پیپ. Cuprel اجازه می‌دهد این‌ها را مستقیم بنویسید. هر کدام در اصل یک عدد معمولی است، پس می‌توانید جمع، تفریق و مقایسه‌اش کنید. اینکه هر کدام عددِ چه چیزی است در همین صفحه آمده است.

مدت#

عدد صحیحی که بعدش یک واحد بیاید یک مدت است: 90s، 15m، 8h، 3d، 2w. مدت یک عدد بر حسب میلی‌ثانیه است، همان واحد bar.time که زمان کندل است.

Cuprel
indicator "Recent bars only"
    edition = 1
    display = price

input window: int = 8, name = "Hours", min = 1
let recent = bar.time > clock.now - window * 1h
plot(if recent then close else na, name = "Close, last hours only")
chart.background(if recent then color.fade(color.blue, 94) else na)
نوشته‌شدهیعنی
90s90000
15m900000
8h28800000
1d86400000
2w1209600000

مدت‌ها مثل عدد جمع و مقایسه می‌شوند: 2h + 30m می‌شود 9000000، و 8h / 15m می‌شود 32، یعنی تعداد کندل‌های 15 دقیقه‌ای در هشت ساعت. هر بار فقط یک واحد بنویسید: 1h30m خطاست، به‌جایش 90m بنویسید.

ساعت روز#

08:30 یک ساعت از روز است که با ساعت و دقیقه نوشته می‌شود. این عدد، میلی‌ثانیه‌های گذشته از نیمه‌شب است و کاربرد اصلی‌اش همراه با یک منطقهٔ زمانی، در session و clock.reached است:

Cuprel
indicator "Open of the New York session"
    edition = 1
    display = price

let past_open = clock.reached(09:30 @ "America/New_York")
chart.background(if past_open then color.fade(color.green, 94) else na, name = "After the open")

منطقه بعد از @ می‌آید و یک متن است. clock.reached(time @ zone) در اولین کندل هر تاریخ درست است که بسته‌شدنش در آن منطقه، همان ساعت یا بعد از آن باشد. بقیهٔ ماجرا در روز معاملاتی و سشن‌ها آمده است.

لحظهٔ دقیق#

لحظه با @ شروع می‌شود: @2026-09-17T07:10Z (Z یعنی UTC)، @2026-09-17T07:10+03:30 (با اختلاف ساعت) یا @2026-09-17 07:10[Asia/Tehran] (با نام منطقه). این عدد، میلی‌ثانیه‌های گذشته از سال 1970 به وقت UTC است، همان واحد bar.time.

Cuprel
indicator "Since a date"
    edition = 1
    display = price

let start = @2026-09-17 07:10[Asia/Tehran]
chart.background(
    if bar.time >= start then color.fade(color.orange, 92) else na,
    name = "After the start",
)
plot(close)

لحظه باید بگوید کجاست. همین متن بدون منطقه روی هر دستگاه لحظهٔ دیگری می‌شد، برای همین پذیرفته نمی‌شود:

Cuprel · خطا E-DT-ZONE
indicator "An instant without a zone"
    edition = 1
let start = @2026-09-17 07:10
plot(close)

clock.timestamp("2026-09-17T07:10:00Z") یک متن را به همین نوع عدد تبدیل می‌کند. متن باید منطقه‌اش را داشته باشد، به همان دلیل؛ clock.timestamp("2026-09-17 07:10") خطای E-TS-ZONE است.

درصد#

0.5% همان عدد 0.005 است. هر جا منظورتان یک سهم است از آن استفاده کنید:

Cuprel
indicator "Band of half a percent"
    edition = 1
    display = price

let average = tech.sma(close, 20)
plot(average * (1 + 0.5%), name = "Upper", color = color.red)
plot(average * (1 - 0.5%), name = "Lower", color = color.green)

رنگ#

#rrggbb و #rrggbbaa رنگ هستند؛ به مقدارها و نوع‌ها نگاه کنید.

پیپ و تیک#

حرکت قیمت روی هر نماد معنای دیگری دارد. نسخهٔ زبان (edition) 1 عددهای خود قرارداد را به شما می‌دهد و حساب‌وکتاب را به خودتان می‌سپارد:

نامچیست
symbol.tickکوچک‌ترین گام قیمت، یک تیک
symbol.pipاندازهٔ یک پیپ بر حسب واحد قیمت
symbol.point_valueپولی که یک واحد کامل قیمت برای یک لات می‌سازد
Cuprel
indicator "A stop ten pips away"
    edition = 1
    display = price

input pips_away: float = 10, name = "Pips", min = 1
let stop_distance = pips_away * symbol.pip
plot(close - stop_distance, name = "Stop below the close", color = color.red)
Cuprel · خطا E3160
indicator "A helper that is not available"
    edition = 1

plot(close - pips(10))

عددی که واحدش را همراه خودش داشته باشد (مقداری که یادش بماند تیک است یا پیپ) برای یک نسخهٔ بعدی برنامه‌ریزی شده است. در edition 1 مدت فقط یک عدد میلی‌ثانیه است و درصد فقط یک کسر.

نگاه کنید به: روز معاملاتی و سشن‌ها، اولین استراتژی شما، قالب‌بندی متن و عدد.