واحدها و لیترالها
مدت، ساعت روز، لحظهٔ دقیق، درصد و رنگ را چطور بنویسید، هر کدام چه عددی است، و حرکت قیمت را چطور با پیپ و تیک اندازه بگیرید.
عددها در اسکریپت اغلب معنایی دارند: هشت ساعت، نیم درصد، یک ساعت از روز، یک پیپ. Cuprel اجازه میدهد اینها را مستقیم بنویسید. هر کدام در اصل یک عدد معمولی است، پس میتوانید جمع، تفریق و مقایسهاش کنید. اینکه هر کدام عددِ چه چیزی است در همین صفحه آمده است.
مدت#
عدد صحیحی که بعدش یک واحد بیاید یک مدت است: 90s، 15m، 8h، 3d، 2w. مدت یک عدد بر حسب میلیثانیه است، همان واحد bar.time که زمان کندل است.
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)| نوشتهشده | یعنی |
|---|---|
90s | 90000 |
15m | 900000 |
8h | 28800000 |
1d | 86400000 |
2w | 1209600000 |
مدتها مثل عدد جمع و مقایسه میشوند: 2h + 30m میشود 9000000، و 8h / 15m میشود 32، یعنی تعداد کندلهای 15 دقیقهای در هشت ساعت. هر بار فقط یک واحد بنویسید: 1h30m خطاست، بهجایش 90m بنویسید.
ساعت روز#
08:30 یک ساعت از روز است که با ساعت و دقیقه نوشته میشود. این عدد، میلیثانیههای گذشته از نیمهشب است و کاربرد اصلیاش همراه با یک منطقهٔ زمانی، در session و clock.reached است:
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.
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)لحظه باید بگوید کجاست. همین متن بدون منطقه روی هر دستگاه لحظهٔ دیگری میشد، برای همین پذیرفته نمیشود:
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 است. هر جا منظورتان یک سهم است از آن استفاده کنید:
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 | پولی که یک واحد کامل قیمت برای یک لات میسازد |
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)indicator "A helper that is not available"
edition = 1
plot(close - pips(10))عددی که واحدش را همراه خودش داشته باشد (مقداری که یادش بماند تیک است یا پیپ) برای یک نسخهٔ بعدی برنامهریزی شده است. در edition 1 مدت فقط یک عدد میلیثانیه است و درصد فقط یک کسر.
نگاه کنید به: روز معاملاتی و سشنها، اولین استراتژی شما، قالببندی متن و عدد.