Kitabxana əsaslandırıldıqda və kopyala-yapışdır kifayət edəndə?
Əsas məqam
Kitabxana elə başlayır ki, eyni kod parçası üç skriptdə qalır və siz onu üç yerdə tənzimləməkdən yorulmusunuz. Bir funksiyanı bir göstəricidə saxlamaq üçün nəşr etməyə dəyməz.
Dürüst hədd sadədir. Bir skript hesablamaya ehtiyac duyursa, o, bu skriptin içində olmalıdır. Köhnə bir göstəricini açaraq oradan bir funksiyanı kopyalayanda və sonra daha çoxunu tapanda, kopyala-yapışdır daha baha başa gəlməyə başlayır, nəşrlə bağlı birdəfəlik təlaşdan daha çox.
Kitabxananın bir qiyməti var və onu əvvəlcədən bilmək daha yaxşıdır. O, sadəcə redaktorda saxlanılıb birləşdirilə bilməz: ən azı şəxsi şəkildə nəşr olunmalıdır. Həmişə açıq mənbə ilə nəşr olunur TradingView başqa seçim təqdim etmir. Və onu geriyə dönük redaktə etmək artıq redaktorda layihə kimi sərbəst işləməyəcək.
Əvəzində bir həqiqət yeri əldə edirsən. Kitabxanadakı formulu düzəldin, yeni versiya buraxın və sonra hansı skriptləri ona çevirəcəyinizə özünüz qərar verin. Heç kim sakitcə köçürülməyəcək və bu qüsur deyil, saytın şüurlu qərarıdır.
Əgər uyğundur
- Eyni hesablama üç və ya daha çox ssenaridə də mövcuddur
- Siqnalların ümumi məntiqi ilə bir sıra göstəricilər yazırsınız
- Funksiyalarınızı digər müəlliflərə vermək istəyirsiniz?
- Daxili alətlər toplusu qurun: yuvarlaqlaşdırma, formatlama, sessiyalarla işləmə
Əgər uyğun deyil
- Dəqiq olaraq bir göstərici funksiyanı tələb edir
- Kod hər gün dəyişir və hələ formalaşmayıb
- Məntiq göstərilə bilməz: kitabxana həmişə açıqdır
- Giriş satmaq üçün özəl məhsul lazımdır
Əgər sadəcə dilə baxırsınızsa və hələ öz dilinizi yazmağa qərar verməmisinizsə, böyük mənzərədən başlayın: nədir Pine Script və necə işləyir. Kitabxanalar artıq ikinci mərhələdir, hər kəsə lazım deyil.
Necə library() -dən fərqlidir indicator() Və strategy()?
Əsas məqam
bu skriptin üçüncü növüdür. Skriptdəki bəyanat tamamilə eynidir, göstərici və kitabxananı bir faylda birləşdirmək mümkün deyil və yalnız kitabxanalar kodu export sözü ilə xaricə göndərə bilər.
Pine Script kitabxanaları indikator və strategiya ilə eyni səviyyədə üçüncü növ skriptdir. Hər skript dəqiq bir bəyanatla başlayır və qlobal miqyasda dayanır. Beləliklə, seçim sadədir: ya indicator(), və ya strategy(), və ya library(). Üçüncü seçim və birləşmə də yoxdur.
Kitabxana ilə göstərici arasında bir neçə fərq var və onların demək olar ki, hamısı məntiqlidir.
Söz export yalnız kitabxanalarda mövcuddur. İndikator, nə qədər istəsə də, funksiyasını başqa bir skriptə verə bilməz, bu sadəcə ban üçün ban deyil, rolların bölünməsidir.
Kitabxana başlığı ad məkanı adı kimi işləyir və onun qaydaları daha sərtdir. Yalnız latın hərfləri, rəqəmlər və altı xətt uyğundur, rəqəmlə başlamaq olmaz. Xətt "Library for 14-day averages" sadəcə boşluq və tire səbəbindən kompilyasiya xətasına səbəb olacaq, və "Library_for_14_day_averages" keçəcək.
Kitabxana cədvəldə asılmamalıdır. Kömək TradingView bunu birbaşa deyir: kitabxanalar üst-üstə qoyulmaq üçün nəzərdə tutulmayıb, başqa skript yazıldıqda idxal olunur. Texniki olaraq, qrafikdəki kod hələ də adi göstərici kimi icra olunur və bu, dərcdən əvvəl təmiz qrafik hazırlamaq üçün istifadə olunur.
Və sonra bir kiçik şey də ortaya çıxır: kitabxana özü xəbərdarlıq yaratmır. O, funksiyanı ixrac edə bilər və aşağıdakı çağırışla alert() daxildə, xəbərdarlıq artıq bu funksiyanı çağıran skripti yaradacaq.
Kitabxana necə qurulur: Funksiyadan Kitabxanaya export
Əsas məqam
İşləyən bir funksiya götürün, skript bəyanatını kitabxanaya çevirin, funksiyanın önünə export sözünü qoyun və parametr növlərini əlavə edin. Kitabxananın kompilyasiya olunması üçün ən azı birini ixrac etməlisiniz.
Dilin altıncı versiyasında kitabxananın çərçivəsi belə görünür:
//@version=6
// @description Короткое описание, что тут лежит
library("My_Tools", overlay = true)
export myEma(int x) =>
ta.ema(close, length = x)Elanda library() tam üç parametr: title, overlay Və dynamic_requests. Birincisi tələb olunur, həmçinin idxal zamanı identifikator rolunu oynayır. İkincisi isə şəkilin əsas qrafik panelinə düşüb-düşməyəcəyinə cavabdehdir, standart olaraq belə bir şey yoxdur. Üçüncü versiya dinamik sorğulara imkan verir və altıncı versiyada standart olaraq aktivdir, beşinci versiyada isə deaktiv edilib.
Yalnız funksiyaları ixrac edə bilməzsiniz. Siyahıya metodlar, istifadəçi tərəfindən təyin olunan tiplər, enumlar və sabit dəyişənlər daxildir. Sabitlər dilə digərlərindən daha gec, 2025-ci ilin iyununda gəldi və onların öz şərti var: tip yalnız int, float, bool, color və ya string, və reklamda söz olmalıdır const.
Tiplər və enumlarla bağlı açıq olmayan bir qayda var. Əgər ixrac olunan funksiya sizin tipinizə uyğun bir obyekti qəbul edirsə və ya qaytarırsa, onda həmin tip özü ixrac edilməlidir. Eyni şey bir ixrac olunan tipli sahə başqa bir sahə istifadə edərsə də keçərlidir. Amma əgər şrift yalnız kitabxananın daxili mətbəxi üçün lazımdırsa, onu çölə çıxarmağa ehtiyac yoxdur.
Boş kitabxana yığılmayacaq. Kompilyasiyanın uğurlu olması üçün ən azı bir ad çıxmalıdır: function, method, type və ya enum.
- 1
Funksiya seçin
Skriptdən skriptə köçürdüyünüz hesablamanı tapın
- 2
Bəyannaməni kitabxana ilə əvəz edin
Yalnız latınca başlıq, rəqəmlər və alt xətt
- 3
İxrac və növləri təyin edin
Növ hər parametr üçün tələb olunur, əks halda toplanmayacaq
- 4
Girişləri və qlobal bağlantıları silin
İçəridə giriş çağırıb qlobal massivləri götürmək mümkün deyil
- 5
Qrafikdə yoxlayın
Kitabxana kodu müntəzəm göstərici kimi icra olunur
- 6
Şəxsi və ya açıq şəkildə göndərin
Nəşr etmədən kitabxananı idxal etmək mümkün deyil
Redaktoru açmaq, qaralamanı yadda saxlamaq və skripti cədvələ əlavə etmək ayrıca mexanikadır, bu məqalədə ətraflı təhlil olunur. redaktor Pine Script.
Niyə ixrac olunan funksiya parametrləri tiplər tələb edir?
Əsas məqam
İndikatorlardakı adi funksiyalar qeyri-adi olsa da, ixrac olunanlar deyil. Tip lazımdır ki, başqasının skripti çağırışda nəyin əvəz oluna biləcəyini və nəyin əvəz oluna bilməyəcəyini bilsin.
Sənədlərin mətnində heç bir azadlıq yoxdur: parametrin növünü müəyyən etmək məcburidir, göstəricilər və strategiyalarda xüsusi funksiyalardan fərqli olaraq, növlərin yazılmadığı yerlərdə. Səbəb utilitardır. Funksiya yad şəxslərə verilir və kompilyator onun müqaviləsini əvvəlcədən bilməlidir.
Tipə əlavə olaraq, parametrin bir kvalifikatoru var və burada seçim yalnız iki sözdür: simple Və series. Söz const ixrac olunan funksiya icazəlidir, yalnız adi, ixrac edilə bilməyən funksiyalar üçün əlçatandır.
Varsayılan olaraq arqumentlər kimi gəlir series, açıq şəkildə yazmasanız simple. Kompilyator parametrin daxili istifadəsinə baxır və kvalifikatoru özü seçir. Buna görə də ən çox rast gəlinən tələ, sənədlərdə sözün əsl mənasında barmaqlarda göstərilir. Gəlin funksiyanı götürək:
export myEma(int x) =>
ta.ema(close, length = x)Parametr x uzunluq arqumentinə daxil olur və hərəkətli ortalamanın uzunluğu sadə bir dəyər olmalıdır. deməkdir, x avtomatik olaraq kvalifikator alır simple. Zəng edin myEma(x = 20) sakitcə toplanacaq, amma myEma(x = bar_index) kompilyasiya xətası verəcəkdir: bar_index hər barda dəyişir, bu bir seriyadır. Heç bir mistik şey yox idi, sadəcə funksiya müqaviləsi kodda göründüyündən daha sərt çıxdı.
Əks vəziyyət də baş verir. Əgər funksiyanın ardıcıl deyil, sadə bir dəyər qaytarmasını istəyirsinizsə, içində serial dəyərlərin olmamasına əmin olmalısınız. Bir nəfər kifayətdir və nəticə bir seriya olacaq.
İxrac olunan funksiya daxilində nə etməmək lazımdır?
Əsas məqam
sabitlər istisna olmaqla qlobal dəyişənləri qəbul etməyin, input çağırmayın, sorğuları parametrlərinizə bağlamayın. Və funksiyadan birbaşa qrafiklə çəkmək də mümkün deyil, amma bu dilin ümumi qaydasıdır.
Sənədlər məhdudiyyətlərin qapalı siyahısını verir və onu tam şəkildə bir dəfə oxumağa dəyər ki, sonradan təxmin etməyəsiniz.
Birinci. Kitabxananın qlobal sahəsindəki dəyişənlərə giriş əldə etmək mümkün deyil, yalnız sabit kimi elan edilənlərə. Parametrlərdən və ya qlobal yaradılmış massivdən gələn dəyər ixrac olunan funksiyanın daxilində mövcud deyil.
İkinci. Ailə funksiyalarını çağırmaq olmaz input. Parametrlər kitabxanada deyil, istehlakçı skriptində yerləşir və bu, haqlıdır: əks halda, bir kitabxana interfeysi onu qoşan hər kəsə diktə edərdi.
üçüncü. Sorğular request.*() Yerli Scope daxilində icazə verilir, yetər ki, dynamic_requests əl ilə söndürülməyib. Amma onların öz şərti var: arqument expression Funksiya parametrlərinizdən asılı ola bilməz. Ticker və müddət asılı ola bilər, amma ifadənin özü asılı deyil.
Dördüncüsü. alert() funksiyanın içində icazəlidir, amma yalnız funksiyanı çağıran şəxs xəbərdarlıq yaradacaq. Kitabxananın özündən xəbərdarlıq edə bilməzsən, cədvəldə asılıb.
Beşinci. Kitabxana funksiyası həmişə geri dönür simple və ya series, daha zəifləmir. Buna görə də, sabitin gözlənildiyi yerdə onun nəticəsi əvəz edilə bilməz. Klassik nümunə: parametr show_last saat plot() dəyər növü tələb olunur input int və ya const int, Və onu kitabxanadan geri qaytara bilməyəcəksən.
Buna əlavə olaraq, tez-tez unudulan iki ümumi dil qaydası var. Zəng edin plot() yalnız qlobal domendə yaşayır, yəni istənilən funksiyada ümumiyyətlə mövcud deyil. İstifadəçi funksiyaları üçün rekursiya qadağandır, özünüzü belə adlandıra bilməzsiniz.
Kitabxananı necə nəşr etmək olar və onu kim görəcək?
Əsas məqam
Nəşr məcburidir, özəl kifayətdir. Mənbə hər halda açıq mənbədir. İctimai nəşrin redaktə üçün on beş dəqiqəsi var, sonra donur.
Kitabxananı nəşr olunana qədər idxal edə bilməzsiniz. Burada "redaktorda saxla və qoşul" yoxdur.
Özəl və ictimai paylaşım arasında seçim kimə zəng etdiyinizdən asılıdır. Özəl olan icma lentinə daxil olmur və axtarışla tapılmır, vidjet isə yalnız profilinizdə görünür. Amma tez-tez səhv yazılan vacib bir detal odur ki, şəxsi yazı səhifəsi birbaşa link vasitəsilə həmin linkə sahib olan hər kəsə açılır. Bu seyf deyil, axtarışdan gizli bir vitrindir.
Uyğunluq qaydaları bir dəfə yadda saxlanmalıdır. İctimai skript yalnız ictimai kitabxanalardan istifadə edə bilər və özü açıq mənbə olmalıdır. Redaktorda özəl skriptlər və qaralamalar həm ictimai, həm də özəl kitabxanaları götürə bilər. Amma ictimai qapalı skriptdə, qoruyucu və ya yalnız dəvətli skriptdə, özəl kitabxanadan istifadə edə bilərsiniz.
Redaktə hüququ iki seçim üçün fərqlidir. Müəllif həmişə şəxsi nəşri dəyişib silə bilər. İctimai jurnalın cəmi on beş dəqiqəsi var, bundan sonra qərar yekunlaşır. Buna görə də, ictimai kitabxananın təsvirində tezliklə köhnələcək heç nə yazılmayıb.
Saytın qaydaları başqasının kodundan açıq şəkildə danışır: kitabxanalar ictimai mülkiyyətdədir. Onların funksiyalarını çağırıb kodu müəllifin icazəsi olmadan açıq skriptdə yenidən istifadə edə bilərsiniz. Amma artıq onların kodunu açıq razılıq olmadan özəl nəşrə köçürmək mümkün deyil. Hər iki halda müəllif təsvirdə göstərilir. Açıq mənbə kodu standart olaraq Mozilla İctimai Lisenziyası 2.0 altında lisenziyalaşdırılır, əgər müəllif mənbədə başqa bir lisenziya yazmayıbsa.
Və tariflər barədə, çünki məsələ pula bağlıdır. Basic tarifində isə heç bir ictimai nəşr yoxdur, özəl nəşrlər mövcuddur. İctimai səfərlər üçün tezlik limitləri var: bir gündə beşə qədər, otuz gün üçün isə on beşə qədər. Bu məhdudiyyətlər özəl nəşrlərə və artıq yayımlanmış ssenarilərin yenilənməsinə şamil edilmir.
Kitabxananı necə idxal etmək olar və niyə alias lazımdır?
Əsas məqam
İdxal sətiri üç hissədən ibarətdir: slash, müəllif, ad və versiya nömrəsi. as sonrası alias funksiyaları çağırdığınız ad məkanına çevrilir.
Sintaksis belədir:
//@version=6
indicator("Using AllTimeHighLow library", "", true)
import PineCoders/AllTimeHighLow/1 as allTime
plot(allTime.hi())
plot(allTime.lo())Üç hissəli yol unikal olaraq nəyi birləşdirdiyinizi müəyyən edir. Burada tez-tez rast gəlinən bir tələ var: idxal versiyalarında belə yazılır title Kitabxana elanından, müəllifin nəşr üçün seçdiyi başlıqdan deyil. Bunlar çox vaxt fərqli xətlərdir.
Sonra ləqəb as ad sahəsini təyin edir. İLƏ as allTime kimi funksiyalar deyilir allTime.hi(). Əgər alias yazmasanız, kitabxana adı özü ad məkanı olur. Eyni nöqtə notasiyası vasitəsilə kitabxananın həm növləri, həm də enumları mövcuddur.
Bir neçə idxal qaydası var ki, dərhal yadda saxlamaq asan olur:
- Yolda versiya nömrəsi həmişə açıq şəkildə yazılır, bu sətrdə "ən son" dəyəri yoxdur.
- İctimai skript yalnız ictimai kitabxanaları əhatə edə bilər və açıq mənbə olmalıdır.
- Şəxsi kitabxana şəxsi skript, redaktorda layihə və qapalı kodlu ictimai skript üçün uyğundur.
Əlaqəli kitabxanaların sayı birbaşa məhdudlaşdırılmır, ümumi kodun həcmi məhduddur. Bu barədə daha çox aşağıda, risklərdə.
- 1
Kitabxana səhifəsini açın
İctimai kitabxanalar Community scripts feed-də yer alır
- 2
İdxal xəttini kopyalayın
Səhifədə bitmiş sətiri kopyalamaq üçün düymə var
- 3
Bəyannamənin altına idxalı daxil edin
Sətirdəki versiya nömrəsi götürdüyün kimi qalacaq
- 4
Dost ləqəb təyin edin
As-dan sonra qısa ad yazırlar və funksiyalar bu ad vasitəsilə çağırılır
- 5
Təsvirdə müəllifi göstərin
Saytın qaydalarını tələb edir, nəzakəti yox
Aləti Midas ilə tətbiq edin
Midas ekosistemində addım-addım təlimatlar, texniki analiz təlimləri və icma dəstəyi var — ilk buraxılışdan tutmuş öz ticarət məntiqinizin analizinə qədər.
- addım-addım məhsul təlimatları
- Texniki analiz üzrə strukturlaşdırılmış təlim
- komanda və klub üzvləri ilə söhbət edin
Niyə idxallar öz-özünə yeni versiyaya keçmir?
Əsas məqam
bu, proqnozlaşdırıla bilmək üçün nəzərdə tutulub. İdxal sətirində versiya nömrəsi möhkəm sabitdir və keçid bir rəqəmin əl ilə düzəldilməsidir.
Sənədlərin ifadəsi sadədir: kitabxanalardan istifadə edən skriptlərin etibarlı işləməsi üçün ən son versiyanı avtomatik götürmək mümkün deyil. Hər dəfə müəllif yeniləmə dərc etdikcə, kitabxananın versiya nömrəsi artır. Yeni versiya istəyirsinizsə, gedib sətirdəki nömrəni dəyişin import.
Bu, narahatlıq kimi səslənir, amma əslində sığortadır. Əksini təsəvvür edin: başqasının kitabxanasının müəllifi formulu öz üsulu ilə düzəldib, səhər isə sizin göstəriciniz başqa siqnallar çəkir, baxmayaraq ki, siz ona toxunmamısınız. Platforma məhz buna icazə vermir.
Nəticə: Versiya nömrəsini dəyişmək skriptinizin davranışında dəyişiklikdir, kosmetik deyil. Bundan sonra siqnallar yenidən dəyişdirilməlidir: uzaqlaşmaq lazımdır geri test Eyni alətdə və göstəricini yoxlayın yenidən çəkmək, Hər hansı məntiq redaktəsində etdiyiniz kimi. Heç kim köhnə və yeni nəticələrin üst-üstə düşəcəyinə zəmanət vermir.
Cari nömrəni haradan əldə edə bilərəm. Nəşr olunmuş kitabxananın səhifəsində tamamlanmış idxal sətirini clipboard-a köçürmək üçün bir düymə var, bu ən sürətli yoldur. İkinci seçim, əl ilə yazanlar üçün: redaktor müəllif adına görə avtomatik tamamlamaya malikdir, mövcud kitabxanaları göstərəcək.
Başqalarının ssenarilərini pozmamaq üçün versiyaları necə buraxmaq olar?
Əsas məqam
Versiya nömrəsini vəd kimi düşünün. Heç kimə toxunmadan yeni bir şey əlavə etdilər, bu başqa məsələdir. Başqalarının istifadə etdiyi xüsusiyyətin adını dəyişmək və ya silmək tamamilə fərqlidir.
Kitabxanalar mexaniki olaraq Pine Script nömrələnir: platforma məsələnin mənası barədə heç nə demir, sadəcə hər yeniləmə dərc olunduqda onu artırır. Bu o deməkdir ki, özünüz intizamlı olmalısınız və burada qonşu ekosistemlərdən hazır məhsulları götürmək daha asandır.
Semantik Versiyalaşdırma spesifikasiyası kəşf etməyə dəyər bir qayda müəyyən edir: buraxılan versiya dəyişmir, istənilən dəyişiklik yeni buraxılış kimi buraxılır. TradingView bu, sözün əsl mənasında işləyir, çünki nəşr mənbə kodunun müstəqil surətini yaradır və o, versiya tarixçəsinin bir hissəsinə çevrilir.
Cargo sənədlərindən analizdə hansı dəyişiklik kimi qiymətləndirildiyini görmək rahatdır: ictimai elementin çıxarılması uyğunluğu pozur, Tələb olunan funksiya parametrinin əlavə olunması da uyğundur, lakin yeni ictimai element əlavə etmək də uyğundur. Pine Script-ə təkbətək köçürüldü. Kitabxanaya yeni ixrac funksiyası əlavə olundu, köhnə istifadəçilər heç nə hiss etmədilər. Mövcud arqumentə məcburi arqument əlavə etdik və köhnə üsulla çağıran hər kəs gəldi.
NPM sənədləri rəqəmləri çox sadə şəkildə xatırladır: 1.0.0-nin ilk buraxılışı, 1.0.1 üçün düzəliş, dəyişiklikləri pozan uyğun yenilik 1.1.0 2.0.0. Lakin, Python paketləmə bələdçisində olduğu kimi, dərhal rezervasiya etmək daha dürüstdür: hər kəs praktikada sərt qaydalara əməl etmir, və sonuncu nömrə müəllifin hökmü olaraq qalır.
Təsvir haqqında ayrıca. İctimai nəşr on beş dəqiqədən sonra redaktə edilə bilmədiyindən, dəyişikliklərin əvvəldən intizamlı tarixçəsini qorumaq məntiqlidir. Keep a Changelog yanaşması burada çox faydalıdır: dəyişikliklərin siyahısı insanlar üçün yazılıb, hər versiyanın öz tarixi və aydın nöqtələri olan öz girişi var. Yoxsa, bir il sonra özünüz üçüncü versiyanın ikincidən necə fərqləndiyini xatırlamayacaqsınız.
Heç nə pozulmur
Hər kəs dağılır
- 1.Yeni funksiya əlavə edildi
- 2.Funksiya daxilində hesablama dəyişdi
- 3.Silinmiş və ya adı dəyişdirilmiş ixrac
Pine Script v6 buraxılışı ilə kitabxanalarda nələr dəyişib?
Əsas məqam
Əsas dəyişiklik dinamik sorğulardır. Altıncı versiyada request.*() ixrac olunan funksiyaların daxilində icazə verilir və dynamic_requests defolt olaraq aktiv oldu.
Altıncı versiyadan əvvəl, ixrac olunan funksiyanın içindəki məlumat sorğusu müəllif dinamik sorğuları əl ilə aktiv etmədikdə bağlanırdı. 2024-ci ilin noyabrında v6 çıxanda vəziyyət dəyişdi: çətinliklər request.*() icazə verilən daxili dövrlər, şərtlər və ixrac edilmiş kitabxana funksiyaları.
Eyni zamanda standart dəyişdi. Beşinci versiyada dynamic_requests söndürüldü, altıncıda açıldı. Köhnə kodu port edərkən bu, bəyannamədə açıq qalma tələsinə gətirib çıxarır dynamic_requests = false, Sonra sorğunu lokal əhatə dairəsindən çağırmaq qadağan olunacaq, hətta istifadəçi funksiyası daxilində gizlədilsə belə. Miqrasiya bələdçisi sadə bir həll təklif edir: çevirmə zamanı sadəcə açıq parametri silin və kompilyatorun özü qərar verməsinə imkan verin.
Oktyabr 2021
Kitabxanalar Pine Script v5-ci ildə meydana çıxdı
Təkrar istifadə olunan funksiyalar üçün yeni nəşr növü
İyun 2024
Dilə enum növləri əlavə edilmişdir
Etibarlı dəyərlər siyahısı ilə yeni verilənlər tipi
Noyabr 2024
Pine Script v6 və dinamik sorğular
Sorğu ixrac olunan funksiyalar daxilində icazə verilir
İyun 2025
Sabit dəyişənlərin ixracı
Yalnız int, float, bool, color və const sözü ilə string
Əgər funksiyalarınızdan yalnız utilitlər toplusu deyil, həm də işlək bir alqoritm yığırsınızsa, onda ümumi yoxlama çərçivəsi faydalı olacaq: necə işlədiyi Alqoritm ticarəti və alqoritmin necə test olunması qərarları ona etibar etməzdən əvvəl.
Risklər və məhdudiyyətlər
Əsas məqam
Kitabxana tam şəkildə kompilyasiyaya buraxılır, cildin məhdudiyyətləri asanlıqla əldə edilə biləndir və başqasının kitabxanası bütün bunlarla bağlı asılıdır.
Həcmi haqqında. Bir skriptin tərtib olunmuş forması təxminən yüz min tokenlə məhdudlaşır, dəqiq sayı 100 256. Kitabxanalar ayrı-ayrılıqda tərtib olunur və onların kodu indikatorun ölçüsünü şişirtmir. Amma bütün əlaqəli kitabxanaların ümumi həcmi bir milyon tokenlə məhdudlaşır və kompilyasiya sorğusu özü beş meqabaytdan çox ola bilməz.
Buna görə də xoşagəlməz bir xüsusiyyət var ki, əvvəlcədən bilmək daha yaxşıdır: bütün kitabxana kompilyasiya olunur, neçə funksiyanı çağırmağınızdan asılı olmayaraq. Böyük bir dəstdən kiçik bir xüsusiyyət hələ də bütün dəsti özü ilə aparır. Nəticə sadədir: kitabxanaları mövzuya görə kompakt saxlamaq daha yaxşıdır, hər şeyi bir yerə yığmaqdan daha yaxşıdır.
Eyni operadan başqa bir kiçik şey: istəklər request.*() daxili funksiyalar sorğu limitinizə daxil edilir, hətta eyni sorğu və eyni arqumentlər əsas skript kodunda olsa belə.
Asılılıq haqqında. Başqasının kitabxanasını birləşdirərək, hesablamalarla bağlı başqasının qərarlarını verirsən. Dizayner yeni versiya çıxaracaq, onu yalnız özünüz dəyişənə qədər görəcəksiniz və bu yaxşıdır. Amma əksinə də doğrudur: köhnə versiyada səhv varsa, onu əl ilə yeniləməyincə saxlayacaqsınız.
Məxfilik haqqında. Gəlin yuxarıda danışdığımızı təkrarlayaq, çünki onlar məhz burada yanırlar: şəxsi post lent və axtarışdan gizlədilir, amma birbaşa link vasitəsilə açılır. Heç kimə göstərilə bilməyən kod ümumiyyətlə kitabxanaya aparılmır.
Müəlliflik haqqında. Nəşrinizin təsvirində başqasının kitabxanasının müəllifini göstərmək nəzakət deyil, sayt qaydalarının tələbidir. Plagiat üçün saytın qaydaları hesabın daimi bloklanmasına səbəb olur, buna görə müəllifə verilən kredit də sığorta sayılır.
Və bu məqalə ilə bağlı vicdanlı bir imtina. Dəqiq kompilyasiya xəta mətnləri, məsələn, parametr tipinin və ya çağırışın olmaması kimi hallar üçün input Rəsmi sənədlərdə daxili funksiya yoxdur: qadağaların özləri orada təsvir olunub. Əgər kompilyator sizə nəsə verirsə, məhdudiyyətlər siyahısına baxın, başqalarının parafrazlarına yox.
Mənbələr
- Pine Script Kitabxanalar, rəsmi sənədlər TradingView
- Declaration statements: library, indicator, strategy
- İstifadəçi tərəfindən təyin olunan funksiyalar: parametr növləri və kvalifikatorlar
- Məhdudiyyətlər: Token və kompilyasiya ölçü məhdudiyyətləri
- Nəşr ssenariləri: Nəşr növləri və lisenziya
- Release notes Pine Script
- Migration guide to Pine Script v6
- Kömək TradingView: Pine kitabxanası nədir və necə istifadə olunur
- Ssenarilərin nəşr qaydaları TradingView
- Ssenari müəllifləri üçün məsləhətlər: tariflər və nəşr limitləri
- 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
- GitHub -də PineCoders pine-utils
- Möhtəşəm Pine Script: Resurslar Toplusu
Tez-tez verilən suallar
İstifadə etmək üçün kitabxana nəşr etməliyəm?
Bəli. Kitabxananı nəşr olunana qədər idxal edə bilməzsiniz. Eyni zamanda, özəl nəşr kifayətdir, çünki o, icma lentinə düşməyəcək.
Kitabxananın mənbə kodunu gizlətmək mümkündürmü?
yox. Bütün kitabxanalar yalnız açıq mənbə kimi nəşr olunur, fərqli görünürlük növü seçmək mümkün deyil. Şəxsi paylaşım onu axtarışdan gizlədir, amma linki olan şəxsdən gizlətmir.
Niyə ixrac olunan funksiyada input istifadə edə bilmirsiniz?
Parametrlər istehlakçı skriptinə aiddir. İxrac olunan funksiya ailə funksiyalarını çağıra bilməz input və parametrlərdən ilkinləşdirilmiş qlobal dəyişənləri qəbul edə bilmir.
Müəllif kitabxananın yeni versiyasını buraxanda skriptim öz-özünə yenilənəcəkmi?
yox. İdxal sətirində versiya nömrəsi sabitlənib, ən son versiyaya avtomatik keçid yoxdur. Kommutasiya əl ilə nömrə redaktəsidir.
Bir skriptdə bir neçə kitabxananı daxil etmək mümkündürmü?
Bəli, idxal sayına birbaşa limit yoxdur. Ümumi ölçü məhduddur: bütün əlaqəli kitabxanalar birlikdə bir milyon tokeni keçməməlidir. Eyni zamanda, hər idxal öz versiya nömrəsi ilə ayrıca sətir kimi yazılır və funksiyalara sonra aydın alias vasitəsilə istinad etmək daha rahatdır as.
TradingView lentindən başqasının kitabxanasından istifadə edə bilərəmmi?
Bəli, kitabxanalar saytın qaydalarına görə ictimai mülkiyyət kimi təsnif edilir: Onların funksiyalarını çağırmaq və kodun açıq skriptdə təkrar istifadəsi müəllifə müraciət etmədən icazəlidir. Özəl nəşr üçün icazə tələb olunur. Hər halda, müəllif təsvirdə göstərilib.




Şərhlər
Mənbə şərhləri tərcümə edilmir.