Kutubxona qachon asosli, qachon esa kopipast yetarli?
Asosiysi
kutubxona u yerda boshlanadi, qachonki bir xil kod qismi uchta skriptda mavjud boʻlsa va siz uni uchta joyda tahrirlashdan charchadingiz. Bitta funksiyaga bitta indikator uchun nashr qilishi shart emas.
Halol chegara oddiy. Hisoblash bitta skriptga kerak bo‘lsa, u aynan shu skript ichida boʻlishi kerak. Siz o‘zingizni eski indikatorni ochib, undan funksiyani nusxalashga tushmoqchi bo‘lganingizda, keyin yana bir bor, va yana, kopipast qilish qimmatga tushishni boshlaydi, nashr bilan bir martalik ishlashdan qimmatroq.
Kutubxonaning narxi bor va uni oldindan bilish yaxshi. Uni shunchaki muharrirda saqlab, ulashib bo‘lmaydi: u nashr qilingan bo‘lishi shart, hatto shaxsiy bo‘lsa ham. U har doim ochiq manba bilan nashr etiladi, boshqa variant TradingView bermaydi. Va uni orqaga qaytarib tahrirlash endi muharrirdagi loyihadek erkin bo‘lmaydi.
Buning o‘rniga siz bitta haqiqat manbaiga ega bo‘lasiz. Kutubxonadagi formulani o‘zgartirdingiz, yangi versiyasini chiqardingiz, va undan keyin qaysi skriptlarni unga moslashtirishni o‘zingiz hal qilasiz. Hech kim sirtdan o‘tkazilmaydi, va bu ishni noto‘g‘ri qilganlik emas, balki platformaning ongli qaroridir.
Mos keladi, agar
- Bir xil hisoblash uchta yoki undan ko‘p skriptingizda yashaydi.
- Siz umumiy signal mantiqiga ega indikatorlar to‘plamini yozasiz.
- O‘z funksiyalaringizni boshqa mualliflarga berishni xohlaysiz.
- Ichki yordamchi dasturlar to‘plamini yig‘asiz: yaxlitlash, formatlash, sessiyalar bilan ishlash.
Mos kelmaydi, agar
- Funksiya faqat bitta indikatorga kerak.
- Kod har kuni o‘zgaradi va hali barqaror emas.
- Mantiqni ko‘rsatib bo‘lmaydi: kutubxona har doim ochiq
- Savolni sotish uchun yopiq mahsulot kerak
Agar siz hali tilni o‘rganayotgan bo‘lsangiz va o‘z skriptlaringizni yozish lozim yoki yo‘qligini hal qilmagan bo‘lsangiz, umumiy tasvirdan boshlang: bu nima Pine Script va u qanday tuzilgan. Kutubxonalar – bu ikkinchi bosqich, ular hamma uchun kerak emas.
Nima bilan library() farqlanadi indicator() Va strategy()?
Asosiysi
bu uchinchi turdagi skript. Skript ichida e’lon faqat bitta, indikator va kutubxonani bitta faylda birlashtirib bo‘lmaydi, va faqat kutubxonalar export so‘zi bilan kodni tashqariga berishga qodir.
Kutubxonalar Pine Script – indikator va strategiya bilan bir qatorda uchinchi turdagi skript. Har bir skript aniq bitta e’lon bilan boshlanadi va u global sohada joylashgan. Demak, tanlov oddiy: yoki indicator(), yoki strategy(), yoki library(). Uchinchi variant mavjud emas va birlashtirish ham yo‘q.
Indikatordan kutubxonani ajratadigan bir nechta jihatlar bor, va deyarli hammasi mantiqiy.
So‘z export faqat kutubxonalarga mavjud. Indikator butun xohlashga qaramay o‘z funksiyasini boshqa skriptga topshira olmaydi, bu shunchaki man etish uchun man etilgan emas, balki rollarni ajratishdir.
Kutubxona sarlavhasi nomlar maydoni nomi sifatida ishlaydi va unga qo‘llaniladigan qoidalar qat’iyroq. Faqat lotin harflari, raqamlar va ostki chiziq maqul, raqam bilan boshlanishi mumkin emas. Qator "Library for 14-day averages" bo‘sh joylar va chiziqcha tufayli shunchaki kompilyatsiya xatosini keltirib chiqaradi, va "Library_for_14_day_averages" o‘tadi.
Kutubxonani grafikga osish rejalashtirilmagan. Ma'lumot TradingView buni ochiq aytadi: kutubxonalar ularni qo'llash uchun emas, balki boshqa skript yozilganda import qilinadi. Texnik jihatdan kod grafikda oddiy indikator sifatida ishlaydi va uni nashr qilishdan oldin toza grafik tayyorlash uchun ishlatishadi.
Va yana bir kichik narsa, keyinroq paydo bo'ladigan: kutubxona o'z-o'zidan ogohlantirishlarni yaratmaydi. U funksiyani chaqirish bilan eksport qilishi mumkin alert() ichida, va alertni ana shu funksiyani chaqirgan skript allaqachon yaratadi.
Kutubxonani qanday yig‘ish: funksiyadan tortib export
Asosiysi
siz ishlaydigan funksiyani olasiz, skript e'lonini library ga o‘zgartirasiz, funksiyadan oldin export so‘zini qo‘yasiz va parametr turlarini qo‘shasiz. Kutubxona umuman kompilyatsiya qilinishi uchun, hech bo‘lmasa bitta narsani eksport qilishingiz kerak.
Tilda oltinchi versiyada kutubxona karkasi shunday ko‘rinadi:
//@version=6
// @description Короткое описание, что тут лежит
library("My_Tools", overlay = true)
export myEma(int x) =>
ta.ema(close, length = x)E'lonida library() aniq uchta parametr bor: title, overlay Va dynamic_requests. Birinchisi majburiy, u import qilinayotganda identifikator sifatida ham ishlatiladi. Ikkinchisi rasmning asosiy grafik panelga tushishini nazorat qiladi, odatda yo'q. Uchinchi dinamik so'rovlarni ruxsat beradi, va oltinchi versiyada u standart bo'yicha yoqilgan, beshinchisida esa o'chirilgan edi.
Eksport qilish faqat funksiyalar bilan emas. Ro'yxatga metodlar, foydalanuvchi tiplari, enum va konstant o'zgaruvchilar kiradi. Konstantlar boshqa narsalardan keyin tilga kelgan, iyunda 2025 yili, va ularning o'z sharti bor: faqat turi int, float, bool, color yoki string, va e'lon qilinishida albatta so'z bo'lishi kerak const.
Tiplar va enumlar bilan noaniq qoida bor. Agar eksport qilinadigan funktsiya sizning turdagi obyektni qabul qilsa yoki qaytarsa, o‘sha tur ham eksport qilinishi shart. Xuddi shu narsa, agar bir eksport qilinadigan tur maydoni boshqa turdan foydalansa. Ammo agar tur faqat kutubxonaning ichki ishlariga kerak bo‘lsa, uni tashqariga chiqarish shart emas.
Bo‘sh kutubxona yig‘ilmaydi. Kompilyatsiya o‘tishi uchun, tashqariga kamida bitta nom chiqishi kerak: funktsiya, metod, tur yoki enum.
- 1
Funktsiyani ajratish
Skriptlar orasida nusxalab oladigan hisob-kitobni topish
- 2
E’lonni library bilan almashtirish
Sarlavha faqat lotin harflari, raqamlar va pastki chiziq bilan
- 3
Export va turlarni qo‘yish
Har bir parametrda tur majburiy, aks holda yig‘ilmaydi
- 4
Kirishlar va global havolalarni olib tashlash
Ichkarida input chaqirib bo‘lmaydi va global massivlardan foydalanib bo‘lmaydi
- 5
Grafikda tekshirish
Kutubxona kodi oddiy indikator kabi ishlaydi
- 6
Shaxsiy yoki jamoat tarzida nashr qilish
Nashrsiz kutubxonani import qilish mumkin emas
Muharrirni oching, qoralamani saqlang va skriptni grafikga qo‘shish bu alohida mexanika, bu muharrir haqida maqolada batafsil tushuntirilgan Pine Script.
Eksport qilinadigan funksiyaning parametrlariga nima uchun turlar majburiy?
Asosiysi
oddiy indikatorlardagi funksiyalar turga ega emas, eksport qilinadigan funksiyalar esa bor. Tur kerak, shunda boshqa skript unga nima qo‘llanilishi mumkinligini va nima mumkin emasligini biladi.
Hujjatlashtirish shakli hech qanday erkinlik qoldirmaydi: parametr turini ko‘rsatish majburiy, indikatorlar va strategiyalardagi foydalanuvchi funksiyalaridan farqli o‘laroq, ularda turlar ko‘rsatilmaydi. Sababi foydali. Funksiya boshqa odamlarga boradi va kompilyator oldindan uning shartnomasi haqida bilishi shart.
Parametrda turdan tashqari kvalifikator ham bo‘lishi mumkin, va bu yerda tanlov faqat ikkita so‘zdan iborat: simple Va series. So‘z const eksport qilinadigan funksiyada ruxsat berilmaydi, u faqat oddiy, eksport qilinmagan funksiyalar uchun mavjud.
Standart bo‘yicha argumentlar keladi qaysi shaklda series, agar siz aniq yozmagan bo‘lsangiz simple. Kompilyator shu paytda qaraydi, parametr qanday ishlatilayotganini ichida, va o‘zi kvalifikatorni tanlaydi. Shundan eng ko‘p uchraydigan tuzoq, hujjatlarda so‘zma-so‘z barmoq bilan ko‘rsatiladi. Funksiyani olaylik:
export myEma(int x) =>
ta.ema(close, length = x)Parametr x argument uzunligiga ketadi, va slayding o‘rtacha uzunligi oddiy qiymat bo‘lishi kerak. Demak, x avtomatik tarzda kvalifikator oladi simple. Chaqirish myEma(x = 20) osmonda yig‘iladi, ammo myEma(x = bar_index) kompilyatsiya xatosi beradi: bar_index har bir bar o‘zgaradi, bu seriya. Hech qanday sirli narsa yo‘q, shunchaki funksiya shartnomasi kodda ko‘rinishidan qat’iyroqligi chiqdi.
Teskarisi ham bo‘ladi. Agar sizga kerak bo‘lsa, funktsiya oddiy qiymatni qaytarsin, seriya emas, ichida birorta seriyali qiymat bo‘lmasligiga e’tibor berishingiz kerak bo‘ladi. Faqat bittasi kifoya, va natija seriya bo‘ladi.
Eksport qilinadigan funksiya ichida nima qilmaslik kerak?
Asosiysi
global o'zgaruvchilarni konstanta bo'lmagan holda ishlatmaslik, input chaqirmaslik, so'rovlarni o'z parametrlaringga bog'lamaslik. Va funksiya ichidan to'g'ridan-to'g'ri plot orqali chizish ham mumkin emas, lekin bu allaqachon tilning umumiy qoidasi.
Hujjatlar cheklovlarning yopiq ro'yxatini beradi, va uni bir marta to'liq o'qish kerak, shunda keyinchalik taxmin qilmaslik.
Birinchisi. Kitobxonlikning global sohasidagi o'zgaruvchilarga, faqat konstantalar sifatida e'lon qilinganlardan tashqari, murojaat qilinmaydi. Sozlamalardan kelgan qiymat yoki global tarzda yaratilgan massiv, eksport qilinayotgan funksiya ichida mavjud emas.
Ikkinchisi. Oila funksiyalarini chaqirish mumkin emas input. Sozlamalar foydalanuvchi skriptida yashaydi, kutubxona emas, va bu to'g'ri: aks holda bitta kutubxona uni ulagan har kimga interfeysni belgilardi.
Uchinchisi. So'rovlar request.*() mahalliy sohada parametr mavjud bo'lganda ruxsat etiladi dynamic_requests qo'lda o'chirilmagan. Lekin ularda o'z sharti bor: argument expression sizning funksiyangiz parametrlaridan bog'liq bo'lishi mumkin emas. Tiker esa vaqt oralig‘i bog'liq bo'lishi mumkin, lekin ifoda o'zi yo'q.
To'rtinchisi. alert() funksiya ichida ruxsat etilgan, lekin alertni faqat o'sha funksiyani chaqirgan yaratadi. Grafikda osilgan kutubxonadan alert qilish mumkin emas.
Beshinchisi. Kutubxona funksiyasi har doim simple yoki series, zaifroq bo'lmaydi. Shuning uchun uning natijasini doimiy qiymat kutayotgan joyga qo'yib bo'lmaydi. Klassik misol: parametr show_last uz plot() qiymat turini talab qiladi input int yoki const int, va uni kutubxonadan qaytarib bo'lmaydi.
Bunga tilning ikki umumiy qoidasi qo'shiladi, ular ko'pincha unutiladi. Chaqirish plot() faqat global sohada yashaydi, ya'ni har qanday funksiyaning ichida u umuman bo'lmaydi. Va foydalanuvchi funksiyalarida rekurziya taqiqlangan, o'zini chaqirish mumkin emas.
Kutubxonani qanday e’lon qilish va kim uni ko‘radi?
Asosiysi
nashr majburiy, maxfiyga yetarli. Manba har holda ochiq. Ommaviy nashr uchun tahrirga o'n besh daqiqa bor, keyin u muzlaydi.
Kutubxona nashr qilinmaguncha uni import qilish mumkin emas. Bu yerda «tahrirlovchida saqladim va ulangan» degan narsa nazarda tutilmagan.
Shaxsiy va ommaviy nashr orasidagi tanlov, kimni chaqirishingizga bog‘liq. Shaxsiy nashr jamoa tasmasida chiqmaydi va qidiruvda topilmaydi, vidjet esa faqat sizning profilingizda ko‘rinadi. Lekin muhim bir jihat, ko‘pchilik noto‘g‘ri yozadigan: shaxsiy nashr sahifasi, agar bu havola mavjud bo‘lsa, har kim uchun ochiq. Bu seyf emas, bu qidiruvdan yashirilgan vitrina.
Mos kelish qoidalarini bir marta o‘rganib qo‘yish kerak. Ommaviy skript faqat ommaviy kutubxonalarni ishlatishi mumkin va o‘zi ham ochiq bo‘lishi shart. Shaxsiy skriptlar va tahrirchidagi loyihalar ham ommaviy, ham shaxsiy kutubxonalarni ishlatishi mumkin. Ammo ommaviy yopiq skript, protected yoki invite-only bo‘lsa, shaxsiy kutubxonani ishlatishga ruxsat bor.
Tahrirlash huquqi ikki variantda ham turlicha. Shaxsiy nashrni muallif har doim o‘zgartirishi va o‘chirishi mumkin. Jamoatning faqat o'n besh daqiqasi bor, undan so‘ng u yakunlanadi. Shuning uchun jamoat kutubxonasi tavsifida tez eskirishi mumkin bo‘lgan hech narsa yozilmaydi.
Boshqalarning kodiga oid qoidalar maydoncha tomonidan ravshan aytiladi: kutubxonalar umumiy mulkga kiradi. Ularning funksiyalarini chaqirish va ochiq skriptda kodni qayta ishlatish muallifning ruxsatisiz mumkin. Lekin ularning kodini yopiq nashrga ko‘chirish aniq roziliksiz mumkin emas. Ikkala holatda ham muallif tavsifda ko‘rsatiladi. Ochiq kod odatda Mozilla Public License litsenziyasi ostida tarqatiladi 2.0, agar muallif manba kodda boshqasini yozmagan bo‘lsa.
Va tariflar haqida, agar bu pulga taalluqli bo‘lsa. Basic tarifida umumiy e’lonlar umuman yo‘q, shaxsiylari mavjud. Umumiy e’lonlar uchun chastota cheklovlari mavjud: harakatlanuvchi kunlarda beshgacha va o‘ttiz kunda o‘n beshgacha. Shaxsiy e’lonlar va allaqachon chop etilgan skriptlarni yangilash uchun bu cheklovlar tatbiq etilmaydi.
Kutubxonani qanday import qilish va alias nima uchun kerak?
Asosiysi
Import satri uch qismdan iborat: slash, muallif, ism va versiya raqami. as dan keyingi alias funksiyalarni chaqiradigan nom fazosiga aylanadi.
Sintaksis quyidagicha:
//@version=6
indicator("Using AllTimeHighLow library", "", true)
import PineCoders/AllTimeHighLow/1 as allTime
plot(allTime.hi())
plot(allTime.lo())Uch qismli yo'l aynan nimani bog'laganingizni noyob tarzda belgilaydi. Bu yerda tez-tez uchraydigan bir shart bor: importda bu yozilgan title kutubxona e'lonidan olingan, muallif nashr uchun o'ylab topgan nomdan emas. Bu ko'pincha turli liniyalar bo'ladi.
Laqab nomi as nomlar fazosini belgilaydi. S as allTime Funksiyalar quyidagicha nomlanadi allTime.hi(). Agar siz alias yozmasangiz, kutubxona nomi o'zi nom maydoniga aylanadi. Bir xil nuqta notatsiyasi orqali kutubxonaning turlari va enumlari mavjud.
Darhol eslab qolish osonroq bo'lgan bir nechta import qoidalari:
- Yo'ldagi versiya raqami har doim aniq yoziladi, bu qatorda "eng so'nggi" qiymat yo'q.
- Ommaviy skript faqat jamoat kutubxonalarini o'z ichiga olishi mumkin va u ochiq manba bo'lishi kerak.
- Shaxsiy kutubxona shaxsiy skript, muharrirdagi qoralama va yopiq kodli jamoat skripti uchun mos keladi.
Ulangan kutubxonalar soni to‘g‘ridan-to‘g‘ri cheklanmagan, kodning umumiy hajmi cheklangan. Buning haqida quyida, xavflarda.
- 1
Kutubxona sahifasini oching
Jamoat kutubxonalari Community scripts lentasida joylashgan
- 2
Import qatorini nusxalash
Sahifada tayyor qatorni nusxalash tugmasi mavjud
- 3
E’lon ostiga import qatorini joylashtiring
Qator ichidagi versiya raqami siz olgan holatda qoladi
- 4
Tushunarli kinonimni belgilang
as dan keyin qisqa nom yoziladi, uning orqali funksiyalar chaqiriladi
- 5
Muallifni tavsifda ko‘rsatish
Bu maydon qoidalari talabi, muloyimlik emas
Asbobni amalda Midas bilan o'rganing
Midas ekotizimida bosqichma-bosqich ko'rsatmalar, texnik tahlil o'qitish va jamoa qo'llab-quvvatlashi mavjud — birinchi ishga tushirishdan o'z savdo logikangizni tahlil qilishgacha.
- mahsulot bo'yicha bosqichma-bosqich ko'rsatmalar
- texnik tahlilni strukturalangan o'rganish
- jamoa va klub ishtirokchilari bilan chat
Nima uchun import yangi versiyaga avtomatik o‘tmaydi?
Asosiysi
shuning uchun shunday o‘ylangan, bashorat qilinadiganligi uchun. Import qatoridagi versiya raqami to‘liq mahkamlanadi va uni almashtirish bu bitta raqamni qo‘l bilan tahrirlash.
Hujjatlarning ifodalanishi to'g'ridir: kutubxonalardan foydalanadigan skriptlar ishonchli ishlashi uchun oxirgi versiyani avtomatik ravishda olish mumkin emas. Har safar muallif yangilanishni e'lon qilganda, kutubxona versiya raqami oshadi. Yangi versiyasini xohlaysizmi, borib qator ichidagi raqamni o'zgartiring import.
Bu noqulaylikdek eshitiladi, lekin aslida bu sug'urta. Teskari holatni tasavvur qiling: boshqa kutubxona muallifi o'zida formulani tuzatdi, va ertasi kuni sizning indikatoringiz boshqa signallarni chizadi, garchi siz unga tegmagan bo'lsangiz ham. Aynan shuni maydoncha ruxsat bermaydi.
Amaliy xulosa: versiya raqamini o‘zgartirish sizning skriptingizning xulq-atvorini o‘zgartirish demakdir, kosmetika emas. Uni o‘tkazgandan so‘ng signallarni qayta ko‘rib chiqish kerak: haydash backtest shu asbobda va indikatorni tekshirish chizib qayta ishlash, xuddi siz har qanday mantiqiy tuzatish bilan qilganingizdek. Eski va yangi natijalar mos kelishini hech kim kafolatlamaydi.
Amaldagi raqamni qayerdan olish mumkin. Nashr etilgan kutubxona sahifasida tayyor import qatorini buferga nusxalash tugmasi bor, bu eng tezkor usul. Ikkinchi variant, qo'lda yozadiganlar uchun: muharrirda muallif nomi bo'yicha avtomatik to'ldirish ishlaydi, u mavjud kutubxonalarni ko'rsatadi.
Qanday versiyalarni chiqarish, boshqalarning skriptlarini buzmaslik uchun?
Asosiysi
versiya raqamini va'da sifatida o'ylang. Yangi narsani qo'shdik, hech kimga tegmadik, bu bittasi. Boshqalar foydalangan funksiyani qayta nomladik yoki olib tashladik, bu butunlay boshqa.
Kutubxonalar Pine Script mexanik ravishda raqamlanadi: platforma raqam ma'nosi haqida hech narsa aytmaydi va har bir yangilanish nashrida uni shunchaki oshiradi. Demak, intizomni o'zingiz saqlashingiz kerak bo'ladi, va bu yerda qo'shni ekotizimlardan tayyorini qarzga olish osonroq.
Semantic Versioning spetsifikatsiyasi qoidani shakllantiradi, negadir uni ochishga arziydigan: chiqarilgan versiya o'zgarmaydi, har qanday o'zgarish yangi nashr sifatida chiqadi. TradingView da bu so'zma-so'z ishlaydi, chunki nashr manbaning mustaqil nusxasini yaratadi va u versiyalar tarixining bir qismiga aylanadi.
Qaysi o'zgarishni buzuvchi deb hisoblash kerakligini Cargo hujjatidagi tahlilga qarab qulay ko'rish mumkin: jamoat elementini o'chirish moslikni buzadi, Funksiya uchun majburiy parametr qo'shish ham shunday, lekin yangi jamoat elementini qo'shish mos keladi. Pine Script ga bir-biriga tarjima qilinadi. Kutubxonaga yangi eksport qilinadigan funktsiya qo'shildi, eski foydalanuvchilar hech narsani sezishmadi. Mavjud funksiyaga majburiy argument qo'shildi, va uni eski usulda chaqirganlar muammoga duch keldi.
npm hujjati raqamlar bo'yicha juda oddiy eslatma beradi: birinchi chiqarish 1.0.0, tuzatish 1.0.1, mos keladigan yangilik 1.1.0, buzuvchi o'zgarish 2.0.0. Ha, aslida, darhol shuni aniqlashtirib olish kerak, xuddi Python paketchasi qo'llanmasidagi kabi: amalda qat'iy semver hamma tomonidan hurmat qilinmaydi, va raqam oxir-oqibat muallifning hukmidir.
Alohida tavsif haqida. Agar jamoat nashrini o‘n besh daqiqa o‘tgach tahrirlash mumkin bo‘lmasa, o‘zgartirishlar tarixini boshidan o‘zi intizom bilan yuritish maqsadga muvofiqdir. Keep a Changelog yondashuvi bu yerda shunisi bilan qulay: o‘zgarishlar ro‘yxati odamlar uchun yoziladi, har bir versiyada o‘z yozuvi bo‘ladi, sana va tushunarli bandlar bilan. Aks holda bir yil o‘tib, siz uchinchi versiya ikkinchisidan nimasi bilan farq qilganini eslay olmaysiz.
Hech narsa buzilmaydi
Hamma sindiradi
- 1.Yangi funksiya qo‘shildi
- 2.Funktsiyaning ichki hisob-kitobi o‘zgartirildi
- 3.Eksport olib tashlandi yoki qayta nomlandi
Pine Script v6 chiqarilishi bilan kutubxonalarda nima o‘zgardi?
Asosiysi
Asosiy o‘zgarish bu dinamik so‘rovlar. Oltinchi versiyada request.*() eksport qilinayotgan funksiyalar ichida ruxsat berildi va parametr dynamic_requests standart bo‘yicha yoqilgan edi.
Oltinchi versiyagacha eksport qilinadigan funksiyaning ichidagi ma'lumot so‘rovi, agar muallif dinamik so‘rovlarni qo‘lda qo‘shmagan bo‘lsa, yopiq edi. Noyabrda 2024 yilda v6 chiqishi bilan bu o‘zgardi: chaqiruvlar request.*() tsikllar, shartli konstruksiyalar va eksport qilinadigan kutubxona funksiyalari ichida ruxsat berildi.
Bir vaqtning o‘zida sukut saqlash ham o‘zgardi. Beshinchi versiyada dynamic_requests o‘chirilgan edi, oltinchisida yoqilgan. Eski kodni ko'chirishda shuning uchun quyidagi tuzoqqa tushib qolishadi: agar e'lon qilinishda aniqlik saqlanib qolsa dynamic_requests = false, mahalliy doiradan soʻrov chaqiruvi, hatto u foydalanuvchi funksiyasi ichida yashirilgan boʻlsa ham, taqiqlanadi. Migratsiya bo‘yicha qo‘llanma oddiy davolashni tavsiya qiladi: konvertatsiya qilishda shunchaki aniq parametrni olib tashlang va kompilyatorga o‘zi hal qilishi uchun imkon bering.
Oktyabr 2021
Kutubxonalar paydo bo‘ldi Pine Script v5
Qayta ishlatilishi mumkin bo‘lgan funksiyalar uchun yangi nashr turi
Iyun 2024
Tilga enum-tiplar qo'shildi
Ruxsat etilgan qiymatlar ro'yxatiga ega yangi ma'lumotlar tipi
Noyabr 2024
Pine Script v6 va dinamik so‘rovlar
request eksport qilinadigan funksiyalar ichida ruxsat etilgan
Iyun 2025
Doimiy o'zgaruvchilarni eksport qilish
Faqat int, float, bool, color va string soʻzi bilan const
Agar siz o‘z funksiyalaringizdan shunchaki bir qator utilitalar emas, balki ishlaydigan algoritm yaratgan bo‘lsangiz, keyin umumiy tekshiruv ramkasi foydali bo‘ladi: qanday tashkil etilgan algotreyderlik va algoritmni nimadan tekshirishadi dastlab unga qaror qabul qilishga ishonishdan oldin.
Xatarlar va cheklovlar
Asosiysi
kutubxona butunlay kompilyatsiyaga ketadi, hajm uchun limitlar juda erishiladigan bo‘ladi, boshqa kutubxona esa barcha oqibati bilan bog‘liqlik hisoblanadi.
Hajm haqida. Bitta skriptning kompilyatsiyalangan shakli taxminan yuz ming token bilan cheklangan, aniq soni 100 256. Kutubxonalar alohida kompilyatsiyalanadi va ularning kodi sizning indikatoringiz hajmini oshirmaydi. Ammo barcha ulangan kutubxonalar jami hajmi bir million token bilan cheklangan, va o‘zi kompilyatsiya so‘rovi besh megabaytdan oshmasligi kerak.
Bu yerda oldindan bilish tavsiya etiladigan noxush xususiyat bor: kutubxona toʻliq kompilyatsiya qilinadi, siz undan qancha funktsiyani chaqirganingizdan qatʼi nazar. Katta toʻplamdagi bitta kichik funksiya ham butun toʻplamni oʻz orqasida tortib yuradi. Xulosa sodda: kutubxonalarni ixcham va mavzular bo‘yicha saqlash yaxshiroq, hamma narsani bitta joyga yig‘maslik kerak.
Xuddi shu operaning yana bir mayda detali: so'rovlar request.*() import qilingan funksiyalar ichidagi hisob-kitoblar sizning so‘rovlar limitiga kiradi, hatto agar asosiy skript kodida ayni shu so‘rov va xuddi shunday argumentlar mavjud bo‘lsa ham.
Qaramlik haqida. Boshqa kutubxonani ulash orqali siz hisob-kitoblar bo‘yicha boshqa odamning qarorlarini qabul qilasiz. Muallif yangi versiyani chiqarganida, siz uni ko‘rmaysiz, to‘xtamagan holda o‘zingiz almashtirmaguncha, va bu yaxshi. Lekin aksincha ham to‘g‘ri: agar eski versiyada xato bo‘lsa, u sizda qoladi, to‘xtamagan holda o‘zingiz yangilamaguningizcha.
Maxfiylik haqida. Keling, yuqorida aytilgan narsani takrorlaylik, chunki shu yerda xatolarga duch kelishadi: shaxsiy nashr lentadan va qidiruvdan yashirilgan, lekin to‘g‘ridan-to‘g‘ri havola orqali ochiladi. Hech kimga ko‘rsatib bo‘lmaydigan kod kutubxonaga umuman chiqarilmaydi.
Mualliflik haqida. O‘zingizning nashringiz tavsifida boshqa bir kutubxonaning muallifini ko‘rsatish muloyimlik emas, balki platforma qoidalari talabi. Plagiat uchun platforma qoidalari hisobni doimiy bloklashgacha jazo ko‘rishni nazarda tutadi, shuning uchun muallifga kredit berish – bu yana bir sug‘urta hisoblanadi.
Va bu maqola haqida halol eslatma. Parametr turi yoki chaqiruvning yetishmasligi kabi holatlar uchun kompilatsiya xatolarining aniq matnlari input rasmiy hujjatda eksport qilinadigan funksiyaning ichida yo‘q: u yerda o‘zi taqiqlar tavsiflangan. Shunday qilib, agar kompilyator sizga biror narsa ko'rsatgan bo'lsa, cheklovlar ro'yxati bilan solishtiring, boshqa odamlarning bayonotlari bilan emas.
Manbalar
- Pine Script Kutubxonalar, rasmiy hujjatlar TradingView
- Declaration statements: library, indicator, strategy
- Foydalanuvchi tomonidan aniqlangan funksiyalar: parametr turlari va kvalifikatorlari
- Cheklovlar: token va kompilyatsiya hajmi cheklovlari
- Skriptlarni nashr etish: nashr turlari va litsenziya
- Release notes Pine Script
- Migration guide to Pine Script v6
- Yordam TradingView: Pine kutubxonasi nima va uni qanday ishlatish
- Skriptlarni nashr qilish qoidalari TradingView
- Skript mualliflariga maslahatlar: nashr tariflari va cheklovlari
- Semantic Versioning 2.0.0
- The Cargo Book: SemVer compatibility
- npm: about semantic versioning
- Python Packaging User Guide: versioning
- Keep a Changelog 1.1.0
- PineCoders FAQ and Code
- PineCoders pine-utils GitHub da
- Awesome Pine Script: resurslar toʻplami
Tez-tez beriladigan savollar
Kutubxonadan foydalanish uchun uni nashr qilish shartmi?
Ha. Kutubxona nashr qilinmaguncha uni import qilish mumkin emas. Bu bilan shaxsiy nashr yetarli, u jamoa lentasiga tushmaydi.
Kutubxonaning manba kodini yashirish mumkinmi?
Yo‘q. Barcha kutubxonalar faqat ochiq manba bilan nashr etiladi, boshqa turdagi ko‘rinish tanlab bo‘lmaydi. Xususiy nashr uni qidiruvdan yashiradi, lekin havola mavjud bo‘lganlardan emas.
Nega eksport qilinadigan funksiyada input ishlatib bo‘lmaydi?
Sozlamalar iste’molchi skriptga tegishli. Eksport qilinadigan funksiya oilaviy funksiyalarni chaqira olmaydi input va sozlamalardan inizializatsiya qilingan global o‘zgaruvchilarni ololmaydi.
Muallif kutubxonaning yangi versiyasini chiqarganida mening skriptim avtomatik yangilanadimi?
Yo‘q. Import qatoridagi versiya raqami belgilangan, oxirgi versiyaga avtomatik o‘tish mavjud emas. O‘zgartirish raqamni qo‘lda tahrirlash orqali amalga oshiriladi.
Bir nechta kutubxonani bitta skriptga ulash mumkinmi?
Ha, importlar soni to‘g‘ridan-to‘g‘ri cheklanmagan. Cheklangan umumiy hajm: barcha ulangan kutubxonalar birgalikda bir million tokenni oshmasligi kerak. Shu bilan birga, har bir import alohida satrda uning versiya raqami bilan yoziladi, funksiyalarga esa keyin qulay tushunarli taxallus orqali murojaat qilish yaxshiroq as.
Boshqa kishining kutubxonasidan foydalanish mumkinmi TradingView?
Ha, kutubxonalar maydon qo'llanmalari tomonidan umumiy mulk sifatida belgilangan: Ularning funksiyalarini chaqirish va kodni ochiq skriptda qayta ishlatish muallifga so'ramasdan ruxsat etiladi. Yopiq nashr uchun ruxsat kerak. Muallif har holda tavsifda ko'rsatiladi.




Izohlar
Manba izohlari tarjima qilinmaydi.