درس 1: اولین اسکریپت شما
در پنج خط یک میانگین متحرک بنویسید، به آن ورودی بدهید، ظاهرش را همانطور که میخواهید دربیاورید و آن را روی نمودارتان بگذارید.
درس 1 از 18. در این درس اندیکاتوری مینویسید که میانگین متحرک قیمت بستهشدن را رسم میکند، و بعد سه بار آن را تغییر میدهید. هر برنامه کامل است: میتوانید همانطور که هست در ویرایشگر اسکریپت کپی کنید.
یک خط روی نمودار#
// A moving average of the close.
indicator "My first average"
edition = 1
display = price
plot(tech.sma(close, 20))از بالا بخوانید.
- خطی که با
//شروع شود یک توضیح (comment) است. موتور آن را نادیده میگیرد. indicator "My first average"سرآیند است. متنی که بعد ازindicatorمیآید نام اسکریپت است. خطهای تورفتهٔ زیر آن تنظیمات سرآیندند:display = priceروی نمودار قیمت رسم میکند؛ بدون آن، اسکریپت زیر نمودار یک پنل مخصوص خودش میگیرد که برای چیزهایی مثل اسیلاتور مناسب است.edition = 1میگوید اسکریپت از کدام نسخهٔ زبان (edition) استفاده میکند. آن را در هر سرآیند بگذارید؛ اسکریپتی کهedition = 1دارد، وقتی نسخهٔ بعدی زبان بیاید هم معنای خودش را حفظ میکند.closeقیمت بستهشدن کندل است. هر نام قیمت (open،high،low،close،volume) یک سری است: برای هر کندل یک مقدار. هرجاcloseبنویسید، منظورتان بستهشدن همان کندلی است که اسکریپت الان روی آن اجرا میشود.tech.sma(close, 20)میانگین متحرک ساده (simple) 20 قیمت بستهشدن آخر است.techگروه تابعهای تکنیکال است وsmaیکی از آنهاست. 19 کندل اول هنوز میانگینی ندارند، برای همین خط از کندل بیستم شروع میشود.plot(...)یک عدد را روی هر کندل به شکل خط رسم میکند.
اسکریپت برای هر کندل یک بار اجرا میشود، از قدیمیترین تا جدیدترین. عدد میانگین روی یک کندل فقط از کندلها تا همان کندل استفاده میکند.
ورودیای که میتوانید عوضش کنید#
عدد ثابت 20 یک حدس است. آن را به یک تنظیم تبدیل کنید:
indicator "My first average"
edition = 1
display = price
input length: int = 20, name = "Length", min = 1
plot(tech.sma(close, length))input length: int = 20 تنظیمی به نام length تعریف میکند. نوعش int (عدد صحیح) و مقدار اولش 20 است. name چیزی است که پنل تنظیمات نشان میدهد و min = 1 جلوی صفر گذاشتن آن را میگیرد. درون اسکریپت، length یک عدد ساده است. وقتی تنظیم را روی نمودار عوض کنید، اسکریپت با مقدار جدید دوباره اجرا میشود.
نام length شناسهٔ (id) تنظیم هم هست: نمودار ذخیرهشده مقدار را با آن پیدا میکند، حتی اگر بعداً عنوان را عوض کنید. شناسهها این را توضیح میدهد.
نام بدهید و رنگش کنید#
indicator "My first average"
edition = 1
display = price
input length: int = 20, name = "Length", min = 1
let average = tech.sma(close, length)
plot(average, name = "Average", color = color.orange, width = 2)let average = ... به نتیجه یک نام میدهد. نامی که با let ساخته شود بعد از تعیینشدن هرگز عوض نمیشود؛ هر وقت میخواهید یک مقدار را بیش از یک بار بخوانید یا به آن معنایی بدهید، از آن استفاده کنید. name، color و width آرگومانهایی هستند که با نام نوشته میشوند. ترتیب آرگومانهای نامدار مهم نیست.
دو میانگین، یک اسکریپت#
indicator "Two averages"
edition = 1
display = price
input fast_length: int = 10, name = "Fast length", min = 1
input slow_length: int = 30, name = "Slow length", min = 2
let fast = tech.ema(close, fast_length)
let slow = tech.ema(close, slow_length)
plot(fast, name = "Fast", color = color.green)
plot(slow, name = "Slow", color = color.red)tech.ema میانگین متحرک نمایی است. یک اسکریپت میتواند هر تعداد ورودی و خط لازم داشته باشد. هر خط در تنظیمات رنگ و ضخامت مخصوص خودش را دارد.
روی نمودار اجرایش کنید#
- پنل اندیکاتورها را باز کنید، به زبانهٔ روی نمودار بروید و زیر اسکریپتهای من اسکریپت جدید را بزنید.
- اسکریپت جدید با یک متن نمونهٔ کوچک شروع میشود. همهٔ آن را انتخاب کنید و با برنامهٔ خودتان جایگزین کنید (دو سرآیند در یک اسکریپت خطاست). ویرایشگر زیر اشتباهها خط میکشد و آنها را زیر مشکلات فهرست میکند.
- ذخیره و بعد افزودن به نمودار را بزنید. خط ظاهر میشود و تنظیمات از نام اندیکاتور باز میشود.
- تنظیمات اندیکاتور را باز کنید و یک مقدار را عوض کنید. نمودار خط را با مقدار جدید دوباره رسم میکند.
امتحان کنید#
- در برنامهٔ اول،
tech.smaرا باtech.emaعوض کنید. خط قیمت را نزدیکتر دنبال میکند، چون میانگین نمایی به کندلهای تازهتر وزن بیشتری میدهد. - در برنامهٔ دوم،
min = 1را بهmin = 5تغییر دهید، ذخیره کنید و در تنظیمات طول را روی 2 بگذارید: فیلد پایینتر از 5 نمیرود. - در «نام بدهید و رنگش کنید»،
color.orangeرا بهcolor.blueوwidth = 2را بهwidth = 4تغییر دهید. - در «دو میانگین، یک اسکریپت»، در هر دو میانگین به جای
closeمقدارhl2(وسط هر کندل) را بخوانید:tech.ema(hl2, fast_length). - خط
display = priceرا از سرآیند پاک کنید و اسکریپت را دوباره اضافه کنید: به یک پنل جدا زیر نمودار میرود.
نقطهٔ بررسی#
- میتوانید سرآیندی با
edition = 1وdisplay = priceبنویسید. - میتوانید یک میانگین داخلی را با
plotرسم کنید و به آن نام، رنگ و پهنا بدهید. - میتوانید یک عدد ثابت را به یک
inputتبدیل کنید. - میتوانید اسکریپت را ذخیره کنید و از اسکریپتهای من روی نمودار بگذارید.
نگاه کنید به: نحو و چیدمان، ورودیها، خطها و ترسیمها.