Pine Script գրադարաններ՝ ներմուծման, արտահանման եւ առանձնահատկությունների տարբերակներ

«Pine Script Գրադարաններ. ներմուծման, արտահանման եւ ֆունկցիայի տարբերակներ» հոդվածի կազմը. ձախ կողմում գրադարանային բլոկ է՝ երեք արտահանված ֆունկցիաներով, աջ կողմում՝ երեք սցենար; Երկուսը միացված են առաջին տարբերակին, երրորդը փոխանցվում է երկրորդին

Երբ գրադարանը արդարացված է, եւ երբ պատճենել-տեղադրելը բավարար է?

Ազնիվ շեմը պարզ է. Քանի դեռ մեկ սցենարը հաշվարկի կարիք ունի, այն պետք է լինի այս սցենարի մեջ. Հենց որ դուք բռնում եք ինքներդ ձեզ բացելով հին ցուցիչը՝ այնտեղից ֆունկցիան պատճենելու համար, եւ հետո նորից եւ ավելի, copy-paste սկսում է ավելի թանկ արժենալ, քան հրատարակության հետ մեկանգամյա խառնաշփոթ.

Գրադարանն ունի գին, եւ ավելի լավ է նախապես իմանալ դրա մասին. Այն չի կարող պարզապես պահպանվել խմբագրիչում եւ միացվել. այն պետք է հրապարակվի, գոնե մասնավոր. Այն միշտ հրատարակվում է բաց կոդով, TradingView այլ տարբերակ չի տալիս. Եվ հետադարձ հայացք նետելը այլեւս չի աշխատի այնքան ազատ, որքան խմբագրի սեւագիրը.

Դրա դիմաց դուք ստանում եք ճշմարտության մեկ տեղ. Ուղղեք գրադարանի բանաձեւը, թողարկեք նոր տարբերակը, այնուհետեւ ինքներդ որոշեք, թե որ սցենարները թարգմանել դրան. Ոչ ոք լուռ չի փոխանցվի, եւ սա թերություն չէ, այլ կայքի գիտակցված որոշում.

Ո՞ւմ կփրկի գրադարանը
Հարմար է, եթե
  • Նույն հաշվարկը ապրում է ձեր երեք կամ ավելի սցենարներում
  • Դուք գրում եք ազդանշանների ընդհանուր տրամաբանությամբ ցուցանիշների հավաքածու
  • Ցանկանո՞ւմ եք Ձեր գործառույթները տալ այլ հեղինակների
  • Կառուցել կոմունալ ծառայությունների ներքին հավաքածու՝ կլորացում, ձեւաչափում, նիստերի հետ աշխատելու
Հարմար չէ, եթե
  • Ճիշտ մեկ ցուցանիշը ֆունկցիայի կարիք ունի
  • Օրենսգիրքը փոխվում է ամեն օր եւ դեռեւս հաստատված չէ
  • Անհնար է ցույց տալ տրամաբանությունը. գրադարանը միշտ բաց է
  • Հասանելիություն վաճառելու համար մասնավոր արտադրանքի կարիք կա

Եթե դուք պարզապես նայում եք լեզվին եւ դեռ չեք որոշել, թե արդյոք պետք է գրել ձեր սեփականը, սկսեք մեծ պատկերից. Pine Script եւ ինչպես է այն աշխատում. Գրադարաններն արդեն երկրորդ քայլն են, ոչ բոլորն են դրանց կարիքը.

Քան library() տարբերվում է indicator() Եվ strategy()?

Pine Script գրադարանները երրորդ տեսակի սցենարն են, որը հավասար է ցուցանիշին եւ ռազմավարությանը. Յուրաքանչյուր սցենար սկսվում է ճիշտ մեկ հայտարարությամբ, եւ այն կանգնած է գլոբալ մասշտաբում. Այսպիսով, ընտրությունը պարզ է. կա՛մ indicator(), կամ strategy(), կամ library(). Երրորդը չի տրվում, եւ կոմբինացիան նույնպես չի տրվում.

Գրադարանի եւ ցուցանիշի միջեւ կան մի քանի տարբերություններ, եւ գրեթե բոլորը տրամաբանական են.

Խոսք export Հասանելի է միայն գրադարաններին. Ցուցիչը, որքան էլ ցանկանա, չի կարող իր ֆունկցիան տալ մեկ այլ սցենարի, սա արգելք չէ հանուն արգելքի, այլ դերերի բաժանում.

Գրադարանի վերնագիրը աշխատում է անվանատարածքի անվանման նման, եւ դրա կանոնները ավելի խիստ են. Հարմար են միայն լատիներեն տառերը, թվերը եւ ընդգծումը, դուք չեք կարող սկսել թվով. Լարային "Library for 14-day averages" կոմպիլյացիայի սխալ կառաջացնի զուտ բացատների եւ հրեշի պատճառով, եւ "Library_for_14_day_averages" կանցնի.

Գրադարանը չպետք է կախվի գրաֆիկից. Օգնության TradingView ուղղակիորեն ասում է սա. գրադարանները նախատեսված չեն ծածկելու համար, դրանք ներմուծվում են, երբ գրվում է մեկ այլ սցենար. Տեխնիկապես աղյուսակի կոդը դեռեւս կատարվում է սովորական ցուցանիշի նման, եւ սա օգտագործվում է հրապարակումից առաջ մաքուր աղյուսակ պատրաստելու համար.

Եվ մեկ այլ փոքրիկ բան, որը հայտնվում է հետագայում. գրադարանն ինքնին ահազանգեր չի ստեղծում. Այն կարող է արտահանել ֆունկցիա կանչով alert() ներսում, եւ ահազանգն արդեն կստեղծի այն սցենարը, որը կանչել է այս ֆունկցիան.

Ինչպե՞ս կառուցել գրադարան՝ ֆունկցիայից մինչեւ export

Լեզվի վեցերորդ տարբերակի գրադարանի շրջանակը այսպիսի տեսք ունի:

//@version=6
// @description Короткое описание, что тут лежит
library("My_Tools", overlay = true)

export myEma(int x) =>
    ta.ema(close, length = x)

Գովազդում library() ճիշտ երեք պարամետր: title, overlay Եվ dynamic_requests. Առաջինը պարտադիր է, այն նաեւ ծառայում է որպես նույնացուցիչ ներմուծման ժամանակ. Երկրորդը պատասխանատու է, թե արդյոք նկարը կհասնի աղյուսակի հիմնական վահանակին, ըստ նախնական չկա. Երրորդը թույլ է տալիս դինամիկ հարցումներ, իսկ վեցերորդ տարբերակում այն միացված է լռելյայնով, իսկ հինգերորդում՝ անջատված է.

Դուք կարող եք արտահանել ոչ միայն ֆունկցիաները. Ցանկը ներառում է մեթոդներ, օգտագործողի կողմից սահմանված տիպեր, էնումներ եւ հաստատուն փոփոխականներ. Հաստատունները լեզվին եկան ավելի ուշ, քան մյուսները՝ 2025 թվականի հունիսին, եւ նրանք ունեն իրենց վիճակը. int, float, bool, color կամ string, Իսկ գովազդում խոսքը const.

Գոյություն ունի ոչ ակնհայտ կանոն՝ տիպերով եւ էնումներով. Եթե արտահանված ֆունկցիան ընդունում կամ վերադարձնում է ձեր տիպի օբյեկտը, ապա տիպն ինքնին պետք է արտահանվի. Նույնը, եթե մեկ արտահանվող տիպի դաշտում օգտագործվում է մեկ այլ. Բայց եթե տեսակը անհրաժեշտ է միայն գրադարանի ներքին խոհանոցի համար, ապա կարիք չկա այն դուրս տանել.

Դատարկ գրադարանը չի հավաքվի. Կոմպիլյացիան հաջողության հասնելու համար առնվազն մեկ անուն պետք է դուրս գա՝ ֆունկցիա, մեթոդ, տիպ կամ էնում.

  1. 1

    Ընդգծել ֆունկցիան

    Գտեք այն հաշվարկը, որը պատճենում եք սցենարից սցենար

  2. 2

    Հայտարարությունը փոխարինել գրադարանով

    Վերնագիրը միայն լատիներենով, թվերով եւ ընդգծմամբ

  3. 3

    Մատակարարում, արտահանում եւ տեսակներ

    Տեսակը պահանջվում է յուրաքանչյուր պարամետրի համար, հակառակ դեպքում այն չի հավաքվի

  4. 4

    Հեռացնել մուտքերը եւ գլոբալ հղումները

    Ներսում դուք չեք կարող զանգահարել մուտքագրում եւ վերցնել գլոբալ զանգվածներ

  5. 5

    Ստուգեք աղյուսակը

    Գրադարանի կոդը կատարվում է որպես կանոնավոր ցուցիչ

  6. 6

    Հրապարակել մասնավոր կամ հրապարակայնորեն

    Առանց հրատարակման՝ գրադարան ներմուծելու անհնար է ներմուծել

Ընթացակարգ, եթե դուք արդեն ունեք աշխատանքային ֆունկցիա ներսում կանոնավոր ցուցիչի եւ ցանկանում եք կրկին օգտագործել այն այլ սցենարներում.

Խմբագրիչի բացումը, սեւագիրը պահելը եւ սցենարը աղյուսակում ավելացնելը առանձին մեխանիզմ է, այն մանրամասն վերլուծվում է հոդվածում Խմբագիր Pine Script.

Ինչու արտահանվող ֆունկցիայի պարամետրերը պահանջում են տեսակներ?

Փաստաթղթի ձեւակերպումը ազատություն չի թողնում. պարամետրի տեսակը նշելը պարտադիր է, ի տարբերություն ցուցանիշների եւ ռազմավարությունների մաքսային ֆունկցիաների, որտեղ տիպերը չեն գրվում. Պատճառը ուտիլիտար է. Ֆունկցիան գնում է անծանոթներին, եւ կոմպիլյատորը պետք է նախապես իմանա իր պայմանագիրը.

Բացի տիպից, պարամետրն ունի որակավորիչ, եւ այստեղ ընտրությունը ընդամենը երկու բառ է: simple Եվ series. Խոսք const արտահանվող ֆունկցիայում չի թույլատրվում, այն հասանելի է միայն կանոնավոր, ոչ արտահանվող.

Ըստ լռելյայնի, փաստարկները հասնում են որպես series, եթե հստակ չեք գրել simple. Կոմպիլյատորը դիտարկում է, թե ինչպես է պարամետրը օգտագործվում ներսում եւ ընտրում է որակիչը հենց. Այստեղից էլ ամենատարածված ծուղակը, որը փաստաթղթում բառացիորեն ցույց է տրվում մատների վրա. Եկեք վերցնենք:

export myEma(int x) =>
    ta.ema(close, length = x)

Պարամետր x մտնում է երկարության փաստարկի մեջ, իսկ շարժվող միջինի երկարությունը պետք է լինի պարզ արժեք. Դա նշանակում է, որ, x ավտոմատ կերպով ստանում է որակավորման simple. Մարտահրավեր myEma(x = 20) հանգիստ կհավաքվի, բայց myEma(x = bar_index) կտա կոմպիլյացիայի սխալ: bar_index փոփոխություններ յուրաքանչյուր բարում, սա շարք է. Ոչ մի առեղծվածային բան, պարզապես ֆունկցիայի պայմանագիրը պարզվեց, որ ավելի կոշտ է, քան կոդում էր երեւում.

Հակառակ իրավիճակ է տեղի ունենում նաեւ. Եթե ցանկանում եք, որ ֆունկցիան վերադարձնի պարզ արժեք, այլ ոչ թե շարք, ապա պետք է համոզվեք, որ ներսում սերիական արժեքներ չկան. Մեկը բավական է, եւ արդյունքը կլինի շարք.

Ինչ չանել արտահանված ֆունկցիայի ներսում?

Փաստաթղթում տրված է սահմանափակումների փակ ցանկ, եւ արժե մեկ անգամ կարդալ ամբողջությամբ, որպեսզի հետագայում չգուշակեք.

Առաջին. Դուք չեք կարող մատչել գրադարանի գլոբալ տարածքի փոփոխականներին, բացառությամբ այն փոփոխականների, որոնք հայտարարված են որպես հաստատուններ. Արժեքը, որը գալիս է գլոբալ ստեղծված պարամետրերից կամ զանգվածից, հասանելի չէ արտահանված ֆունկցիայի ներսում.

Երկրորդ. Դուք չեք կարող կանչել ընտանեկան ֆունկցիաներ input. Պարամետրերը ապրում են սպառողի սցենարում, ոչ թե գրադարանում, եւ ճիշտ է. հակառակ դեպքում գրադարաններից մեկը կթելադրի ինտերֆեյսը բոլոր նրանց, ովքեր միացնում են այն.

Երրորդ. Հարցումներ request.*() տեղական շրջանակներում թույլատրվում են այնքան ժամանակ, քանի դեռ dynamic_requests ձեռքով անջատված չէ. Բայց նրանք ունեն իրենց վիճակը՝ վիճաբանությունը expression Չի կարող կախված լինել ձեր ֆունկցիայի պարամետրերից. Ticker եւ Ժամկետ կարող է կախված լինել, բայց արտահայտությունն ինքնին՝ չի.

Չորրորդ. alert() թույլատրվում է ֆունկցիայի ներսում, բայց միայն նա, ով կանչել է ֆունկցիան, կստեղծի ահազանգ. Դուք չեք կարող ահազանգ անել հենց գրադարանից, կախված աղյուսակից.

Հինգերորդ. Գրադարանային ֆունկցիան միշտ վերադարձնում է simple կամ series, Այն չի թուլանում. Հետեւաբար, դրա արդյունքը չի կարող փոխարինվել այնտեղ, որտեղ ակնկալվում է հաստատունը. Դասական օրինակ. show_last ում plot() պահանջում է տիպի արժեք input int կամ const int, եւ դուք չեք կարողանա այն վերադարձնել գրադարանից.

Դրան գումարվում են լեզվի երկու ընդհանուր կանոններ, որոնք հաճախ մոռացվում են. Մարտահրավեր plot() ապրում է միայն գլոբալ տիրույթում, այսինքն՝ ցանկացած ֆունկցիայի շրջանակներում այն ընդհանրապես գոյություն չունի. Իսկ օգտատիրոջ ֆունկցիաների ռեկուրսիան արգելված է, դուք չեք կարող ինքներդ ձեզ կոչել.

Ինչպե՞ս հրատարակել գրադարան եւ ով կտեսնի այն?

Անհնար է ներմուծել գրադարանը, քանի դեռ այն չի հրապարակվել. Այստեղ չկա «պահպանել խմբագրիչում եւ կապել».

Անձնական եւ հանրային տեղադրման միջեւ ընտրությունը կախված է նրանից, թե ում եք զանգահարում. Մասնավորը չի մտնում համայնքի սնունդ եւ չի գտնվում որոնման միջոցով, իսկ վիջեթը տեսանելի է միայն ձեր պրոֆիլում. Բայց մի կարեւոր դետալ, որը հաճախ սխալ է գրվում, այն է, որ անձնական գրառման էջը բացվում է ուղիղ հղումով ցանկացած մարդու համար, ով ունի այդ հղումը. Սա անվտանգ չէ, սա որոնումներից թաքնված ցուցափեղկ է.

Համատեղելիության կանոնները պետք է հիշել մեկ անգամ. Հանրային սցենարը կարող է օգտագործել միայն հանրային գրադարանները եւ ինքնին պետք է լինի բաց կոդով. Խմբագրի մասնավոր սցենարները եւ սեւագրերը կարող են վերցնել ինչպես հանրային, այնպես էլ մասնավոր գրադարաններ. Բայց հանրային փակ սցենարում, պաշտպանված կամ միայն հրավիրատոմսերում, դուք կարող եք օգտվել մասնավոր գրադարանից.

Խմբագրման իրավունքը տարբեր է երկու տարբերակների համար. Հեղինակը միշտ կարող է փոխել եւ ջնջել մասնավոր հրատարակությունը. Հանրային մեկը ընդամենը տասնհինգ րոպե ունի, որից հետո այն վերջնականապես հաստատվում է. Հետեւաբար, հանրային գրադարանի նկարագրության մեջ ոչինչ չի գրված, որը շուտով հնացած կդառնա.

Կայքի կանոնները հստակ խոսում են ուրիշի կոդի մասին. գրադարանները հանրային տիրույթում են. Դուք կարող եք կանչել նրանց ֆունկցիաները եւ կրկին օգտագործել կոդը բաց սցենարով՝ առանց հեղինակի թույլտվության. Սակայն առանց հստակ համաձայնության այլեւս հնարավոր չէ նրանց կոդը փոխանցել մասնավոր հրատարակությանը. Երկու դեպքում էլ նկարագրության մեջ նշվում է հեղինակը. Բաց կոդը լիցենզավորված է Mozilla Public License 2.0 լռելյայն արտոնագրի ներքո, եթե հեղինակը սկզբնաղբյուրում չի գրել մեկ ուրիշը.

Եվ հարկերի մասին, քանի որ խոսքը վերաբերում է փողին. Հիմնական սակագնով ընդհանրապես հրապարակային հրապարակումներ չկան, մասնավոր հրապարակումներ առկա են. Հանրային մարդկանց համար կան հաճախականության սահմանափակումներ՝ մինչեւ հինգը գլորվող օրվա համար եւ մինչեւ տասնհինգը՝ երեսուն օրվա համար. Այս սահմանափակումները չեն վերաբերում մասնավոր հրատարակություններին եւ արդեն հրատարակված սցենարների թարմացումներին.

Ինչպե՞ս ներմուծել գրադարան եւ ինչու է ձեզ անհրաժեշտ alias?

Շարահյուսությունը հետեւյալն է:

//@version=6
indicator("Using AllTimeHighLow library", "", true)
import PineCoders/AllTimeHighLow/1 as allTime

plot(allTime.hi())
plot(allTime.lo())

Երեք մասից բաղկացած ուղին եզակի կերպով որոշում է, թե կոնկրետ ինչ եք միացրել. Այստեղ կա մի որսորդություն, որը պարբերաբար սայթաքում է. ներմուծման մեջ գրված է title գրադարանի հայտարարությունից, այլ ոչ թե վերնագրից, որը հեղինակը հորինել է հրատարակության համար. Սրանք հաճախ տարբեր գծեր են.

Մականուն հետո as հատկորոշում է անվանատարածքը. Ս as allTime ֆունկցիաները կոչվում են որպես allTime.hi(). Եթե դուք չեք գրում alias, գրադարանի անունն ինքնին դառնում է անվանատարածք. Միեւնույն կետային նշագրության միջոցով հասանելի են գրադարանի եւ՛ տիպերը, եւ՛ էնումները.

Ներմուծման մի քանի կանոններ, որոնք ավելի հեշտ է անմիջապես հիշել:

  • Ճանապարհի տարբերակի համարը միշտ գրվում է հստակ, այս տողում չկա «վերջին» արժեք.
  • Հանրային սցենարը կարող է ներառել միայն հանրային գրադարանները, եւ այն պետք է լինի բաց կոդով.
  • Մասնավոր գրադարանը հարմար է անհատական սցենարի, խմբագրության սեւագրի եւ փակ կոդով հանրային գրքի համար.

Միացված գրադարանների քանակը ուղղակիորեն սահմանափակված չէ, կոդի ընդհանուր քանակը սահմանափակ է. Այս մասին ավելին ստորեւ՝ ռիսկերի մասին.

  1. 1

    Բացել գրադարանի էջը

    Հանրային գրադարանները գտնվում են Համայնքի սցենարների հոսքում

  2. 2

    Պատճենել ներմուծման տողը

    Էջում կա կոճակ՝ ավարտված տողը պատճենելու համար

  3. 3

    Զետեղել ներմուծումը գովազդի տակ

    Տողի տարբերակի համարը կմնա այն, ինչ վերցրել եք

  4. 4

    Սահմանել բարեկամական մականուն

    Հետո նրանք գրում են կարճ անուն, որի միջոցով ֆունկցիաները կոչվում են

  5. 5

    Նկարագրության մեջ նշեք հեղինակին

    Պահանջել կայքի կանոնները, ոչ թե քաղաքավարությունը

Կարճ ճանապարհ, եթե համայնքի հոսքում գտնում եք պատրաստի Pine Script գրադարան եւ ցանկանում եք կանչել դրա գործառույթը ձեր.

Ինչո՞ւ ներմուծումն ինքնուրույն չի տեղափոխվում նոր տարբերակ?

Փաստաթղթի ձեւակերպումը պարզ է. որպեսզի գրադարաններն օգտագործող սցենարները հուսալիորեն աշխատեն, անհնար է ավտոմատ կերպով վերցնել վերջին տարբերակը. Ամեն անգամ, երբ հեղինակը հրատարակում է թարմացում, գրադարանի տարբերակների թիվը մեծանում է. Եթե ցանկանում եք նոր տարբերակ, գնացեք եւ փոխեք տողի համարը import.

Դա անհարմարություն է հնչում, բայց իրականում դա ապահովագրություն է. Պատկերացրեք հակառակը՝ ուրիշի գրադարանի հեղինակը իր ձեւով ուղղել է բանաձեւը, իսկ առավոտյան ձեր ցուցիչը այլ ազդանշաններ է քաշում, թեեւ դուք չեք դիպչել դրան. Սա հենց այն է, ինչ հարթակը թույլ չի տալիս.

Տարբերակի համարը փոխելը ձեր սցենարի վարքագծի փոփոխություն է, այլ ոչ թե կոսմետիկայի. Դրանից հետո ազդանշանները պետք է կրկին վերանայվեն. Հետադարձ թեստ նույն գործիքի վրա եւ փորձարկել ցուցանիշը Վերաներկել, Ճիշտ այնպես, ինչպես դուք անում եք ցանկացած տրամաբանական խմբագրման դեպքում. Ոչ ոք չի երաշխավորում հին եւ նոր արդյունքների համընկնումը.

Որտե՞ղ ստանալ թարմ համարը. Հրատարակված գրադարանի էջում կա կոճակ՝ պատրաստված ներմուծման տողը սեղմատախտակին պատճենելու համար, սա ամենաարագ միջոցն է. Երկրորդ տարբերակը, նրանց համար, ովքեր գրում են ձեռքով. խմբագիրը ունի ավտոմատ լրացում հեղինակի անունով, այն ցույց կտա առկա գրադարանները.

Ինչպե՞ս թողարկել տարբերակները, որպեսզի չկոտրեք ուրիշների սցենարները?

Գրադարանները Pine Script համարակալվում են մեխանիկականորեն. հարթակը ոչինչ չի ասում խնդրի իմաստի մասին եւ պարզապես մեծացնում է այն ամեն անգամ, երբ թարմացում է հրապարակվում. Սա նշանակում է, որ դուք ինքներդ պետք է պահեք կարգապահությունը, եւ այստեղ ավելի հեշտ է հարեւան էկոհամակարգերից պատրաստի պարտք վերցնել.

Semantic Versioning specification-ը ձեւակերպում է կանոն, որի համար արժե բացահայտել. թողարկված տարբերակը չի փոխվում, ցանկացած փոփոխություն թողարկվում է որպես նոր թողարկում. TradingView սա աշխատում է բառացիորեն, քանի որ հրատարակությունը ստեղծում է սկզբնական կոդի ինքնուրույն պատճենը եւ այն դառնում է տարբերակների պատմության մի մասը.

Հարմար է տեսնել, թե ինչ է համարվում Cargo փաստաթղթից վերլուծության խախտման փոփոխություն. հանրային տարրի հեռացումը խախտում է համատեղելիությունը, պահանջվող ֆունկցիայի պարամետրի ավելացումը նույնպես համատեղելի է, բայց նոր հանրային տարր ավելացնելը համատեղելի է. Փոխանցվել է Pine Script մեկ առ մեկ. Ավելացվել է նոր արտահանված ֆունկցիա գրադարանում, հին օգտվողները ոչինչ չեն նկատել. Մենք պարտադիր փաստարկ ավելացրեցինք գոյություն ունեցողին, եւ բոլոր նրանք, ովքեր այն անվանում էին հին ձեւով, եկան.

npm փաստաթուղթը տալիս է թվերի շատ պարզ հիշեցում՝ 1.0.0-ի առաջին թողարկումը, 1.0.1-ի շտկումը, համատեղելի նորույթ 1.1.0, որը խախտում է փոփոխությունը 2.0.0. Այնուամենայնիվ, ավելի ազնիվ է անմիջապես ամրագրել, ինչպես անում է Python փաթեթավորման ուղեցույցը. գործնականում ոչ բոլորն են հետեւում խիստ semver-ին, իսկ վերջում թիվը մնում է հեղինակի դատողությունը.

Նկարագրության մասին առանձին. Քանի որ հանրային հրատարակությունը չի կարող խմբագրվել տասնհինգ րոպե անց, տրամաբանական է հենց սկզբից պահել փոփոխությունների կարգապահ պատմությունը. Փոփոխությունների ցանկը գրված է մարդկանց համար, յուրաքանչյուր տարբերակ ունի իր գրառումը՝ ամսաթվով եւ հստակ կետերով. Հակառակ դեպքում մեկ տարվա ընթացքում դուք ինքներդ չեք հիշի, թե ինչպես է երրորդ տարբերակը տարբերվում երկրորդից.

Ոչինչ չի կոտրվում

Ընդմիջումներ բոլորի համար

  1. 1.Ավելացվել է նոր գործառույթ
  2. 2.Փոխվել է հաշվարկը ֆունկցիայի ներսում
  3. 3.Հեռացված կամ վերանվանված արտահանումները
Ուղեցույց, թե երբ պետք է լուռ թողարկել թարմացումը եւ երբ զգուշացնել նրանց, ովքեր արդեն ներմուծել են ձեր գրադարանը.

Ի՞նչ է փոխվել գրադարաններում Pine Script v6 թողարկման հետ մեկտեղ?

Վեցերորդ տարբերակից առաջ արտահանված ֆունկցիայի ներսում տվյալների հարցումը փակվում էր, եթե հեղինակը ձեռքով չէր միացնում դինամիկ հարցումները. 2024 թվականի նոյեմբերին v6-ի թողարկման հետ մեկտեղ սա փոխվեց. մարտահրավերներ request.*() թույլատրվում է օղակների, պայմանականների եւ արտահանված գրադարանի ֆունկցիաների ներսում.

Միեւնույն ժամանակ, լռությունը փոխվել է. Հինգերորդ տարբերակում dynamic_requests անջատվեց, վեցերորդում այն միացվեց. Հին կոդը տեղափոխելիս դա հանգեցնում է հայտարարության մեջ հստակ մնալու ծուղակին dynamic_requests = false, այդ դեպքում տեղային ոլորտից հարցման կանչն արգելվելու է, նույնիսկ եթե այն թաքնված է օգտատիրոջ ֆունկցիայի ներսում. Միգրացիայի ուղեցույցը խորհուրդ է տալիս պարզ լուծում. փոխարկման ժամանակ պարզապես հեռացրեք բացահայտ պարամետրը և թող հանձնարարիչը որոշի ինքնուրույն.

  1. Հոկտեմբեր 2021

    Գրադարանները հայտնվել են Pine Script v5

    Նոր հրատարակման տեսակ վերաօգտագործվող ֆունկցիաների համար

  2. Հունիս 2024

    Լեզվին ավելացվել են enum տիպեր

    Նոր տվյալների տիպ՝ վավեր արժեքների ցուցակով

  3. Նոյեմբեր 2024

    Pine Script v6 եւ դինամիկ հարցումներ

    հարցումը թույլատրվում է արտահանված ֆունկցիաների ներսում

  4. Հունիս 2025

    Արտահանել հաստատուն փոփոխականներ

    Միայն int, float, bool, color եւ string const բառով

Չորս կետեր, որոնք որոշում են, թե կոնկրետ ինչ կարող է անել ձեր գրադարանը այսօր եւ ինչ շարահյուսություն կգտնեք ուրիշի կոդում.

Եթե դուք հավաքում եք ոչ միայն կոմունալ ծառայությունների հավաքածու ձեր ֆունկցիաներից, այլ աշխատող ալգորիթմ, ապա ստուգման ընդհանուր շրջանակը օգտակար կլինի. ինչպես է այն աշխատում Ալգորիթմների առեւտուրը եւ ինչպես է փորձարկվում ալգորիթմը նախքան նրան որոշումներ կայացնելը.

Ռիսկեր եւ սահմանափակումներ

Ծավալի մասին. Մեկ սցենարի կոմպիլյացված ձեւը սահմանափակվում է մոտ հարյուր հազար նշանով, ճշգրիտ թիվը 100 256. Գրադարանները կազմվում են առանձին եւ դրանց կոդը չի բորբոքում ձեր ցուցանիշի չափը. Սակայն բոլոր միացված գրադարանների ընդհանուր ծավալը սահմանափակվում է մեկ միլիոն թոքենով, եւ կոմպիլյացիայի հարցումն ինքնին չի կարող գերազանցել հինգ մեգաբայթը.

Այստեղից էլ տհաճ առանձնահատկությունը, որն ավելի լավ է նախապես իմանալ. ամբողջ գրադարանը կոմպիլյացված է, անկախ նրանից, թե քանի ֆունկցիա եք կանչել դրանից. Հսկայական հավաքածուի մի փոքր առանձնահատկություն մինչեւ օրս քաշում է ամբողջ հավաքածուն իր հետ. Եզրակացությունը պարզ է. ավելի լավ է գրադարանները պահել կոմպակտ եւ ըստ թեմայի, քան ամեն ինչ գցել մեկի մեջ.

Եվս մեկ փոքրիկ բան նույն օպերայից. խնդրանքներ request.*() ներսում ներմուծված ֆունկցիաները հաշվարկվում են ձեր հարցման սահմանաչափում, նույնիսկ եթե նույն հարցումը նույն փաստարկներով արդեն գտնվում է հիմնական սցենարի կոդում.

Կախվածության մասին. Միացնելով ուրիշի գրադարանը՝ դուք կայացնում եք ուրիշի որոշումները հաշվարկների վերաբերյալ. Դիզայները նոր տարբերակ կթողարկի, դուք չեք տեսնի, մինչեւ ինքներդ չփոխեք, եւ դա լավ բան է. Բայց ճիշտ է նաեւ հակառակը. եթե հին տարբերակում սխալ կա, դուք կպահեք այն մինչեւ ձեռքով թարմացնելը.

Գաղտնիության մասին. Կրկնենք այն, ինչի մասին խոսեցինք վերեւում, քանի որ այստեղ են այրվում. անձնական գրառումը թաքնված է սնուցումից եւ որոնումից, բայց բացվում է ուղիղ հղումով. Կոդը, որը հնարավոր չէ ցույց տալ որեւէ մեկին, ընդհանրապես գրադարան չի տարվում.

Հեղինակության մասին. Ձեր հրատարակության նկարագրության մեջ ուրիշի գրադարանի հեղինակին նշելը քաղաքավարություն չէ, այլ կայքի կանոնների պահանջ. Գրագողության դեպքում կայքի կանոնները նախատեսում են մինչեւ հաշվի մշտական արգելափակումը, ուստի հեղինակին տրամադրվող վարկը նույնպես ապահովագրություն է.

Եվ անկեղծ վերապահում այս հոդվածի վերաբերյալ. Ճշգրիտ կոմպիլյացիայի սխալ տեքստեր այնպիսի դեպքերի համար, ինչպիսիք են բացակայող պարամետրի տիպը կամ կանչը input Պաշտոնական փաստաթղթում ներքին գործառույթ չկա. արգելքներն ինքնին նկարագրված են այնտեղ. Այսպիսով, եթե կոմպիլյատորը ձեզ ինչ-որ բան է տալիս, ստուգեք սահմանափակումների ցանկը, այլ ոչ թե ուրիշների պարաֆրազները.

Աղբյուրներ

Հաճախ տրվող հարցեր

Արդյո՞ք ես պետք է հրատարակեմ գրադարան այն օգտագործելու համար?

Այո. Անհնար է ներմուծել գրադարանը, քանի դեռ այն չի հրապարակվել. Միեւնույն ժամանակ, մասնավոր հրատարակությունը բավական է, այն չի մտնի համայնքի սնունդ.

Հնարավո՞ր է թաքցնել գրադարանի ելակետային կոդը?

Ոչ. Բոլոր գրադարանները հրատարակվում են միայն որպես բաց կոդ, դուք չեք կարող ընտրել տեսանելիության այլ տեսակ. Անձնական գրառումը թաքցնում է այն որոնումներից, բայց ոչ այն անհատից, ով ունի հղումը.

Ինչո՞ւ չեք կարող օգտագործել մուտքագրումը արտահանված ֆունկցիայի մեջ?

Պարամետրերը պատկանում են սպառողի սցենարին. Արտահանված ֆունկցիան չի կարող կանչել ընտանիքի ֆունկցիաներ input եւ չի կարող վերցնել պարամետրերից սկզբնավորված գլոբալ փոփոխականները.

Արդյո՞ք իմ սցենարը կթարմանա, երբ հեղինակը թողարկի գրադարանի նոր տարբերակը?

Ոչ. Ներմուծման տողի տարբերակի համարը փակցված է, չկա ավտոմատ անցում դեպի վերջին տարբերակը. Անջատումը թվի ձեռքով ուղղումն է.

Հնարավո՞ր է մի քանի գրադարան ներառել մեկ սցենարում?

Այո, ներմուծման քանակի ուղղակի սահմանափակում չկա. Ընդհանուր չափը սահմանափակ է. բոլոր միացված գրադարանները միասին չպետք է գերազանցեն մեկ միլիոն նշանները. Միեւնույն ժամանակ, յուրաքանչյուր ներմուծում գրվում է որպես առանձին տող՝ իր տարբերակի համարով, եւ ավելի հարմար է ֆունկցիաներին հղում անել հստակ կեղծանունից հետո as.

Կարո՞ղ եմ օգտագործել ուրիշի գրադարանը TradingView հոսքից?

Այո, գրադարանները կայքի կանոններով դասակարգվում են որպես հանրային տիրույթ: Նրանց ֆունկցիաները կանչելը եւ կոդը բաց սցենարում կրկին օգտագործելը թույլատրվում է առանց հեղինակին հուշելու. Մասնավոր հրապարակման համար անհրաժեշտ է թույլտվություն. Նկարագրության մեջ նշված է հեղինակը, ամեն դեպքում.

Ինչ կսովորեք այս նյութից
  • Ինչո՞վ է Գրադարանը տարբերվում Ցուցիչից եւ երբ գրադարանի կարիք ընդհանրապես չկա
  • Ինչպե՞ս տեղափոխել ֆունկցիան արտահանման միջոցով եւ ինչու են պարամետրերը պահանջվում տեսակներ ունենալու համար
  • Ինչ տեսք ունի տարբերակի համարով ներմուծման տողը եւ ինչ է անում ALIAS-ը դրանում
  • Ինչո՞ւ ներմուծումը չի տեղափոխվում նոր տարբերակ եւ ինչպես զգուշորեն թողարկել տարբերակները
Կիրառեք 30 րոպեում
Միջին

Նյութն օգտակա՞ր էր

Այս լեզվական տարբերակի գնահատումը դեռ հասանելի չէ։

Մեկնաբանություններ

Աղբյուրի մեկնաբանությունները չեն թարգմանվում։

Մասնագիտացված փորձագետ
Max Vitkovsky
Market analyst

Analyses cryptocurrency market structure, levels and on-chain context, with attention to risk and invalidation conditions.

TradingView-ի գրաֆիկ՝ Midas ինդիկատորի Buy և Sell ազդանշաններով
Midas բազմաինդիկատոր՝ TradingView-ի համարԱռևտրի ամենաառաջադեմ ինդիկատորներից մեկը
  • Հետագայում չփոխվող ազդանշաններ
  • Ինտերակտիվ տեխնիկական վերլուծություն
  • 7 ռազմավարություն՝ ձեր ընտրությամբ
Midas բազմաինդիկատոր՝ TradingView-ի համարԱզդանշան, ստոպ և 3 թիրախ՝ անմիջապես գրաֆիկի վրա
  • Ազդանշանը ֆիքսվում է մոմի փակման պահին
  • Ստոպը և 3 թիրախները կառուցվում են ավտոմատ
  • Գործարքի պլանը տեսանելի է մինչև մուտքը