Կոմպիլյացիայի և կատարման սխալներ
1Կոմպիլյացիայի և կատարման սխալներ
Բոլոր LS կոդերը, որոնք ցույց են տալիս Խմբագիրը և գրաֆիկը՝ հաղորդման տեքստը, պատճառը և շտկման եղանակը, հաճախակի սխալների օրինակներ, կատարման սահմաններ և դեպքեր, երբ սխալի փոխարեն ստացվում է na։
Յուրաքանչյուր հաղորդագրություն կոմպիլյատորի և LootScript-ի կատարողի կողմից սկսվում է LS2008 տիպի կոդով։ Կոդը չի փոխվում տարբերակների շնորհիվ և չի կախված ինտերֆեյսի լեզվից, այդ պատճառով հեշտ է դրա միջոցով որոնել։ Այստեղ հավաքված են բոլոր կոդերը, որոնք կարող է ցույց տալ տերմինալը՝ հաղորդման տեքստով, պատճառով և շտկման եղանակով.
Հաղորդագրությունները ցուցադրվում են ռուսերեն՝ եթե տերմինալի ինտերֆեյսը ռուսերեն է, և անգլերեն՝ ցանկացած այլ լեզվի դեպքում։ Ստորև՝ առաջինը—հաճախ հանդիպող սխալները, այնուհետ՝ կատարման սխալները և ավարտում՝ ամբողջական աղյուսակը։
Որտեղ են երևում սխալները
Կոմպիլյացիայի ժամանակ. Խմբագիրը կոմպիլացնում է სკրիպտը ամեն տիպի հավաքման կանգում։ Մինչև գտնվածը հայտնվում է «Խնդիրներ» թաբում խմբագրիչի ստորին մասում՝ կոդով, տեքստով և դիրքով՝ «Стр 6:6» տեսքով։ Տողի վրա երկակի կտտոցը տեղափոխում է կուրսորը սխալի տեղը։ Խմբագրիչի վերնագրում արտացոլվում է ամփոփը՝ «ок · 12 мс», «предупреждений: 2» կամ «ошибок: 1»։
Կատարման ժամանակ. Կոմպիլյացիոն սխալներ չպահպանող սկրիպտը կարող է կանգնել որոշ բարի վրա՝ օրինակ՝ եթե գործողությունների բյուջեն վերջացել է, ինդեքսը вышел за границы массива կամ անհայտ է գործիքը։ Այդ դեպքում «Արդյունք» թաբում կհայտնվի տող՝ «Սկրիպտը կանգնեցվել է՝ LS6004: …», և նույն պատճառը կտեսնեք Ստրատեգիայի թեստեր պատուհանում։ Մյուս սկրիպտները, վահանակները և ինքն տերմինալը շարունակվում են աշխատել։
Դիագնոստիկան ունի երեք մակարդակ՝
| Մակարդակ | Ի՞նչ է նշանակում | Ի՞նչ է կատարվում գրաֆիկում |
|---|---|---|
| Սխալ | Սկրիպտը չի համակերպվել | Սկրիպտը գրաֆիկ չի ավելացվում: «Սկրիպտը սխալներով գրաֆիկ չի ավելացվում — siehe Խնդիրներ». Եթե սկրիպտը արդեն գրաֆիկների վրա է՝ այնտեղ կմնա նախկին աշխատանքային տարբերակը |
| Նախազգուշացում | Սկրիպտը համարվել է, բայց արդյունքը կարող է խաբել, օրինակ՝ այն կարող է փոփոխվել կենդանի բարի վրա | Սկրիպտը աշխատում է |
| Սведение | Սկրիպտը համարվել է, բայց իր որոշ կարգավորումներից մեկը ոչինչ չի անում | Սկրիպտը աշխատում է |
Ինչպես դասավորվում են կոդերը
| Կոդեր | Փուլի անվանում | Ի՞նչ մասին է |
|---|---|---|
| LS0001–LS0009 | Տեքստի ընթերցում | Նիշեր, տողեր, թվեր, գույներ, #version դիրեկտիվ |
| LS1000–LS1012 | Պարսում | Սառիչներ, բլոկներ, օպերատորների կարգ, սկրիպտի հայտարարություն |
| LS2000–LS2030 | Տիպեր և անուններ | Անհայտ անուններ, տիպեր, արգումենտներ, na |
| LS3000–LS3033 | Ծրագրի իմաստ | ta.* ճյուղերում, ռեկուրսիա, ստրատեգիաներ, գրադարաններ, request.security |
| LS4000–LS4009 | Կոմպիլյացիայի սահմաններ | Զգալի թվով σειրեր, արտանետումներ, կանչեր |
| LS5000–LS5013 | Պերերիսովկա և թեստերի ազնվություն | Ամբողջություններ, որոնք պատմության վրա կտարբերվեն կենդանի ժամանակից |
| LS6000–LS6036 | Կատարում | Բյուջեներ, ինդեքսներ, կոլեկցիաներ, տողեր, գրաֆիկական օբյեկտներ |
| LS0999 | Ներքին ձախողում | Կոմպիլյատորի սխալ — անհրաժեշտ է հայտնել աջակցությանը |
Հաճախ հանդիպող կոմպիլյացիոն սխալներ
LS1009 — սկրիպտի հայտարարություն չկա
«Нет объявления скрипта — начните с indicator(“Название”)». Ֆայլի առաջին օպերատորը պետք է լինի indicator(...), strategy(...) կամ library(...)։ Այդ նույն սխալը տալիս է, եթե հայտարարությունն ունի, բայց դրանից վեր ինչ-որ բան է գրված։ Հաշմանդամները և #version 1 դիրեկտիվը չեն խանգարում։
// Так нельзя: объявление не первое
len = input.int(14, "Длина")
indicator("RSI")indicator("RSI")
len = input.int(14, "Длина")Ֆայլում երկրորդ հայտարարությունը տալիս է LS1008՝ մի սկրիպտին թույլատրվում է միայն մեկը։
LS2002 — անհայտ անուն
«Неизвестное имя «…» — проверьте написание или объявите его выше». Հաճախ դա տպագրական սխալ է կամ ֆունկցիան կանչվել է առանց namespace-ի։ Բոլոր ինդիկատոր ֆունկցիաները գտնվում են ta-ում, մաթեմատիկականը — math-ում, գույները — color-ում։
avg = sma(close, 20)avg = ta.sma(close, 20)Նույն սխալը կգտնվի, եթե փոփոխականը կարդացվեց այն տողից վեր։ Լրիվ անունների ցուցակը՝ ֆունկցիաների ուղեցույցում։
LS2008 — na-ով համեմատում
«Сравнение с na всегда ложно — используйте na(x)». Ինչպիսի նիշով էլ լինի na-ի համեմատությունը (==, !=), այն միշտ տալիս է false, ուստի կոմպիլյատորը արգելում է նման գրել։
x = ta.sma(close, 50)
plot(x == na ? close : x)x = ta.sma(close, 50)
plot(na(x) ? close : x)Կարճ տարբերակը?? է՝ plot(x ?? close)։
LS2014 — արժեքը փոխվում է բար-բար այնտեղ, որտեղ պետք է լինի կոնստանտ
««…» в «…» требует значение не слабее input, а передано series — возьмите input.*(…) или литерал». ta.*-երի համար պատուհանի երկարությունը պետք է հայտնի լինի մինչ առաջին բար։ Բարերով ընտրվող երկարությունը չի անցնում։
len = close > open ? 10 : 20
avg = ta.sma(close, len)Համեմատեք երկու տարբերակները և ընտրեք արդյունքը, ոչ թե երկարությունը՝
fast = ta.sma(close, 10)
slow = ta.sma(close, 20)
avg = close > open ? fast : slowԵթե երկարությունը պետք է օգտագործողի կողմից տրվի, վերցրեք այն input.int(...)-ից։
LS3004 — ta.* կանչը կախված է ճյուղի փոփոխականից
«Аргумент «…» нельзя вычислить вне ветки — вынесите вызов ta.* на верхний уровень». ta.* ֆունկցիաները հիշում են անցյալ բարի տվյալները, ուստի կոմպիլյատորը դրանց հաշվարկը անում է յուրաքանչյուր բարի համար, նույնիսկ եթե կանչը հանգեցված է if-ի ներսում։ Եթե արգումենտը հայտարարված է միայն ճյուղի ներսում, այն մյուս բարի վրա չի լինի։
var float avgBody = na
if close > open {
body = close - open
avgBody := ta.sma(body, 10)
}body = close - open
avgBody = ta.sma(body, 10)LS2017, LS2007, LS1006 — տողեր, պայմաններ և համեմատություններ
Այս երեք սխալների ընդհանուր պատճառը՝ LootScript-ը չի կատարում տիպերի լռելյայն կոնվերտացիա։
| Կոդ | Հաղորդագրություն | Ինչպես շտկել |
|---|---|---|
| LS2017 | «Строку нельзя складывать с числом (… + …) — используйте str.tostring(…)» | "RSI " + str.tostring(r) փոխարեն "RSI " + r |
| LS2007 | «Условие должно быть bool, а здесь …» | if volume > 0՝ ոչ թե if volume — թվերին «ճշմարտականություն» չի վերագրվում |
| LS1006 | «Сравнения не сцепляются — напишите a < b and b < c» | low < close and close < high փոխարեն low < close < high |
LS2018 և LS2019 — անունը արդեն զբաղված է
««…» уже объявлено в этой области» (LS2018) — փոփոխականը հայտարարվել է երկրորդ անգամ =-ով։ Մնա փոփոխականը փոխելու համար օգտագործեք :=։
level = high
level := low««…» затеняет встроенное имя — выберите другое» (LS2019) — փոփոխականը, ֆունկցիան կամ տիպը անվանվել է այնպես, ինչպես built-in շարքը կամ ֆունկցիան՝ close, time, hour, volume. Փոխանակեք անունը՝ օրինակ startHour։ Տարածքային անուններ նման color կամ position կարելի է օգտագործել փոփոխականների անվան համար։
LS2004 և LS2005 — կանչի արգումենտները
««…» ожидает … аргумент(ов), а передано …» (LS2004) և «У «…» нет параметра «…»» (LS2005). Սովորեք կանչի signature-ները ֆունկցիաների ուղեցույցում: արգումենտների անունները և քանակը պետք է համապատասխանեն։
plot(close, colour = color.red)plot(close, color = color.red)LS3011 և LS5011 — ստրատեգիաներ
«strategy.* доступно только в strategy(…)» (LS3011): հայտերն ու դիրքի վիճակը հասանելի են միայն այն սկրիպտների համար, որոնք հայտարարված են strategy(...)-ով։ Փոխարինեք indicator("…")-ը strategy("…")-ով։
«Стратегия читает «…»: у order book և time and sales տվյալների պատմություն չկա, բեքթեստը կլինի շեղում» (LS5011): Ստրատեգիան իջնում է պատմության վրա, իսկ book.* և tape.* տվյալներին պատմություն չկա — անցյալ բոլոր բարերին այնտեղ na է։
strategy("Перекос стакана")
if book.imbalance(10) > 0.5 {
strategy.entry("L", strategy.long)
}Պատմության համար order book-ի արժեքները վերցրեք depth տարածքից՝ այնտեղից ստացված արժեքները հասանելի կլինեն պատմության յուրաքանչյուր բարի համար։
strategy("Перекос стакана")
if depth.imbalance(1.0) > 0.5 {
strategy.entry("L", strategy.long)
}LS5000–LS5006 — перерисовка-ի նախազգուշացումներ
Այս նախազգուշացումները չեն պատնեշում սկրիպտի աշխատանքը։ Նրանց նպատակն է ասել, որ պատմության վրա գիծը կարող է տարբերվել նրանից, ինչ էր տեսել կենդանի բարը:
- LS5001 — գրաֆիկին հասնում է արժեք, որը գոյություն ունի միայն կենդանի բարի վրա (
barstate.isrealtime,barstate.isnew). - LS5000 — գրաֆիկին հասնում է
varip-ը՝ այն կուտակում է կենդանի բարի տիկները, որոնք պատմության մեջ չկան։ - LS5006 — գրաֆիկին հասնում են
book.*կամtape.*՝ պատմության վրա շարքը դատարկ է։ - LS5003 — request.security-ից ստացվում է վերակարգ timeframe առանց
[1]՝ անփակված բարը կարող է փոխվել։ - LS5002 —
lookahead = truerequest.security-ում՝ պատմության վրա սկրիպտը տեսնում է ապագան։ - LS5005 —
math.randomկամtimenowցուցադրվում են՝ երկու անցում կտան տարբեր գծեր։
Եթե նպատակդ միայն կենդանի առևտուրն է, կարելի է այս նախազգուշացումները թողնել։
LS3016 — կարգավորումը ընդունվել է, բայց ոչինչ չի անում
Սա сведениե է, ոչ սխալ։ Վстречается import-ված կամ այլ փոխանցված սկրիպտներում՝ երբ կարգավորումը պահպանված է համատեղելիության համար, բայց տերմինալում այն ոչ մի ազդեցություն չունի։ Հաղորդագրության երկրորդ մասը բացատրում է պատճառը։
| Ինչ է գրված | Բացատրություն հաղորդման մեջ |
|---|---|
maxBarsBack հայտարարությունում |
Պատմությունը բեռնվում է ամբողջությամբ շարքով |
format, precision, scale հայտարարությունում |
Տերմինալը կառավարում է արժեքների մասշտաբն ու ֆորմատը |
timeframe հայտարարությունում |
Սկրիպտը հաշվվում է գրաֆիկի timeframe-ով; այլ timeframe-ի համար օգտագործեք request.security |
| Գծի բարակություն, ոճ կամ այլ ցուցիչներ, որոնք մատակարարեն արտահայտությամբ, ոչ թե կոնստանտով (օր. գույնը կարող է փոխվել բարերով) | Այս հավաքածուն այս կարգավորումները կկարդա միայն որպես կոնստանտներ |
color չորրորդ և հաջորդ plot-երի համար |
Վահանակը պատկերում է միայն առաջին երեք շարքերը |
location.absolute plotshape կամ plotchar-ում |
Նշման համար չկա հենվող շարք |
display, որը այս շարքի համար չկա |
Այս շարքը չունի համապատասխան մակերես |
Կատարման սխալներ
Կատարման սխալը կանգնեցնում է սկրիպտը այն բարի վրա, որտեղ այն տեղի է ունեցել։ Տեքստը ցույց է տրվում «Արդյունք» թաբում որպես «Սկրիպտը կանգնեցվել է՝ LS6004: …»։
LS6004 և LS6005 — սկրիպտը շատ časa է աշխատում
«Սկրիպտը սպառել է գործողությունների բյուջեն մեկ բարի համար — պարզեցրեք ցիկլը» (LS6004) և «Սկրիպտը գերազանցել է անցման ժամանակի սահմանը» (LS6005). Յուրաքանչյուր բարի համար բյուջեն 2 000 000 օպերացիա է։ Ժամանակի սահմանը նույնպես գործունեություն ունի՝ ամբողջ անցումը պատմության վրա — 2 վայրկյան, մեկ տիկ կենդանի բարի վրա — 20 մս։ Հաճախ պատճառը անսահման ցիկլն է կամ յուրաքանչյուր բարի վրա չափազանց շատ տվյալների համատեղումը։
var int n = 0
i = 0
while i < 10 {
n := n + 1
}var int n = 0
i = 0
while i < 10 {
n := n + 1
i := i + 1
}LS6002 և LS5004 — ապագայում ընթերցում
Պատմության ինդեքսը x[n] չի կարող բացասական լինել — close[-1] կմիանար հաջորդ բարին։ Եթե բացասական թիվը գրված է ուղղակիորեն, կոմպիլյատորը կպատժի դա անմիջապես (LS5004)। Եթե այն ստացվել է հաշվարկով, սկրիպտը կկանգնի և ցույց կտա «Отрицательное смещение истории — читать буду нельзя» (LS6002) սխալը։ Ինդեքսը, որը գերազանցում է բեռնված բարերի քանակը, չի համարվում սխալ՝ այն վերադարձնում է na։
LS6001, LS6007, LS6019 — կոլեկցիաներ և օբյեկտներ
- LS6001 «Индекс … вне границ» —
array.get,array.setկամmatrix.getկանչը դուրս է մեջտեղից։ Ստուգեքarray.size(a)-ը մինչ դիմումը։ - LS6007 «Обращение к пустому объекту (na)» — կոլեկցիան հայտարարված է, բայց չի ստեղծվել՝
var array<float> a = na, ապաa.push(x). Ստեղծեք այնarray.new<float>()-ով։ - LS6019 «Объект рисования уже удалён или вытеснен по потолку — создайте его заново». Միաժամանակ գոյություն ունեն 500 օբյեկտներ նույն տեսակի; ամենահինը հանում է հին մեկը։ Բարձրացրեք սահմանը
maxLinesCount,maxLabelsCountկամmaxBoxesCountհայտարարությունում կամ վերօգտագործեք օբյեկտըset_*-ով։
LS6017 և LS6018 — request.security-ում գործիքն ու timeframe-ը
«Символ «…» неизвестен — проверьте формат «ПЛОЩАДКА:СИМВОЛ» или задайте ignore_invalid_symbol = true» (LS6017) և «Таймфрейм «…» не разбирается — ожидается «5», «60», «4h», «1D», «1W»» (LS6018). Սահմանելով ignore_invalid_symbol = true, անհայտ սիմվոլը կվերադարձնի na՝ ոչ թե կանգնեցում։
Կատարման սահմաններ
| Ինչն է սահմանափակված | Սահման | Կոդը գերազանցման դեպքում |
|---|---|---|
| Օպերացիաներ մեկ բարի համար | 2 000 000 | LS6004 |
| Պատմության / կենդանի բարի անցման ժամանակ | 2 ս / 20 մս | LS6005 |
| Աղյուսակի տարրեր | 100 000 | LS6003 |
| Տառապոդում զույգեր | 50 000 | LS6003 |
| Մատրիցայի տարրեր | 1 000 000 | LS6003 |
ta.* պատուհանի երկարությունը |
100 000 բար | LS6034 |
| Մեկ տողի երկարությունը | 100 000 նիշ | LS6014 |
| Աղյուսակի բջիջներ | 2000 | LS6029 |
| Տերմալային դաշտի շերտեր | 4 (0-ից մինչև 3) | LS6036 |
| Գծային օբյեկտների մեկ տեսակի քանակը | 500 ըստ լռելյայն | հինը տեղահանվում են |
| request.security-ում տարբեր «ինստրումենտ + timeframe» զույգեր | 8 | — |
| request.security կանչերի քանակը | 32 | LS4009 կոմպիլյացիայում |
Երբ սխալ չկա, բայց արժեք չկա
Ամենա շատ դեպքեր, որոնք մյուս լեզուներում կհանգեցնեին runtime crash-ին, LootScript-ում վերադարձնում են na՝ գրաֆիկը չկոտրելու համար։
- Արիթմետիկան
na-ով վերադարձնում էna: օրինակclose - x՝ եթեxդատարկ է՝ արդյունքը նույնպես դատարկ է։ x[n]երբ n թեխն է ավելի մեծ՝ քան պատմության սկիզբը —na.- ամբողջ թվով բաժանումի ժամանակ զրոյով բաժանումը —
na, իսկ հարմարվող (դիրք ունեցող) բաժանումը չի կանգնեցնում սկրիպտը։ book.*,tape.*ևscreener.*պատմական բարերի վրա —na.- footprint cluster-ներ, delta, open interest և order book-ի պատմությունը —
naայն բարերի վրա, որտեղ տվյալներ չկան։ Ստուգեքcluster.available,delta.availableև հարակից ֆլագները։ ta.*առաջին բարերի վրա՝ մինչև պատուհանը լցված է —na。
na գրաֆիկին երբեք չի նկարվում որպես զրո։ Լայն գիծը ընդհատվում է։ Եթե պետք է փոխարինել արժեք, օգտագործեք nz(x), x ?? запасное կամ fixnan(x)։
Բոլոր կոդերը
LS0001–LS0009 և LS0999 — տեքստի ընթերցում
| Կոդ | Հաղորդագրություն | Ի՞նչ անել |
|---|---|---|
| LS0001 | Անսպասելի նիշ «…» | Հեռացրեք այն նիշը, որը լեզվում թույլատված չէ |
| LS0002 | Տողը փակված չէ — ավելացրեք փակող ուղակովորդը նույն տողի վերջում | Փակեք մատնանշիչը նույն տողում |
| LS0003 | Բլոկային մեկնաբանությունն փակված չէ — ավելացրեք */ | Փակեք /* … */ |
| LS0004 | Անծանոթ escape-հաջորդականություն «…» տողում | Աջակցվում են \n, \r, \t, \0, \\, \", \' և \u{…}; միայն \-ը կրկնեք |
| LS0005 | Սխալ թվային լիտերալ «…» | Ստուգեք թվի ձևը |
| LS0006 | Թիվը «…» չի տեղավորվում տիպում | Փոքրացրեք թիվը |
| LS0007 | Սխալ գույնի լիտերալ «…» — սպասվում է #RRGGBB կամ #RRGGBBAA | Վերցրեք 6 կամ 8 հեքս հաշվական նիշ |
| LS0008 | Եռանիշ բաժանարար _-ը ստարտի, վերջի կամ կրկնվող դիրքում է |
Գրեք 1_000_000 |
| LS0009 | Սխալ #version դիրեկտիվ — սպասվում է #version <թիվ> առաջին տողում |
Դոդեք #version 1 առաջին տողում |
| LS0999 | Կոմպիլյատորը չի կարողացել ֆայլը մշակել — սա բիլդի խափանում է, հաղորդեք աջակցությանը | Հաղորդեք աջակցությանը՝ կցելով սկրիպտը |
LS1000–LS1012 — պարսում
| Կոդ | Հաղորդագրություն | Ի՞նչ անել |
|---|---|---|
| LS1000 | Անսպասելի: … | Ստուգեք տողը ավելորդ նիշերի համար |
| LS1001 | Սպասվում էր «…», բայց հանդիպեց … | Հաճախ փակագծերը չկան |
| LS1002 | Սպասվում էր արտահայտություն, բայց հանդիպեց … | Հեռացրեք բացասական բանական արժեքների բացակայությունը |
| LS1004 | Սպասվում էր անուն, բայց հանդիպեց … | После var, func, . պետք է անուն |
| LS1005 | Սպասվում էր բլոկ ափագծված { }, բայց չկա … |
Ավելացրեք { … } |
| LS1006 | Համեմատությունները չեն շղթայվում — գրեք a < b and b < c | Բաժանել երկու համեմատության մեջ and-ով |
| LS1008 | Երկրորդ հայտարարություն սկրիպտի — մի սկրիպտին թույլատրվում է միայն մեկ հայտարարություն | Թողեք միայն մեկը |
| LS1009 | Սկրիպտի հայտարարություն չկա — սկսեք indicator("Название")-ից |
Առաջին տողի վրա indicator, strategy կամ library |
| LS1010 | Զգալի ներգնա խորըությունը (ավելի քան 64) — տեղափոխեք մի մասը ֆունկցիայի մեջ | Բաժանեք արտահայտությունները կամ բլոկները |
| LS1012 | if / for / while մարմինը պետք է լինի { ... } |
Ավելացրեք {} |
LS2000–LS2030 — տիպեր և անուններ
| Կոդ | Հաղորդագրություն | Ի՞նչ անել |
|---|---|---|
| LS2000 | Տիպերի անհամապատասխանություն: սպասվում էր …, ստացվեց … | Հաղորդեք ճիշտ տիպը |
| LS2001 | Չի կարելի վերափոխել …-ը …-ի | Վերափոխեք հստակ՝ str.tostring, math.round |
| LS2002 | Անհայտ անուն «…» — ստուգեք հորինումը կամ հայտարարեք այն վերևում | Շտկեք տպագրությունը, ավելացրեք namespace (ta.) կամ հայտարարեք վերևում |
| LS2003 | «…» — ոչ ֆունկցիա, կանչել չի կարելի | Հեռացրեքալ ()-երը: դա շարք կամ կոնստանտ է |
| LS2004 | «…» սպասում է … արգումենտ(ներ), իսկ տրված է … | Ս›հեք signatures-ները ուղեցույցում |
| LS2005 | «…»-ն չունի պարամետր «…» | Շտկեք պարամետրերի անունը |
| LS2006 | Արգումենտը «…» փոխանցվում է կրկնությամբ | Հեռացրեք կրկնությունը |
| LS2007 | Պայմանին անհրաժեշտ է bool, իսկ այստեղ … | Բացահայտեք համեմատությունը՝ x > 0, not na(x) |
| LS2008 | na-ով համեմատությունը միշտ կեղծ է — օգտագործեք na(x) | na(x) փոխարեն x == na |
| LS2014 | «…» в «…» պահանջում է input-ի մակարդակի արժեք, բայց փոխանցվել է series — օգտագործեք input.*(...) կամ լիտերալ |
Լիտերալ կամ input.*-ով փոխանցեք |
| LS2015 | «…» հայտարարված է որպես կոնստանտ — նրան հարցափոխել нельзя; հայտարարեք var-ով | input.* կարգավորումները, ցիկլի փոփոխականները և ֆունկցիայի պարամետրերը չեն փոխվում — պատճենեք արժեքը ձեր փոփոխականում |
| LS2017 | Տողը չի կարելի գումարել թվի հետ — օգտագործեք str.tostring(...) |
str.tostring կամ str.format |
| LS2018 | «…» արդեն հայտարարված է այս առակայությունում | Օգործեք := նոր արժեքի համար կամ ընտրեք այլ անուն |
| LS2019 | «…» ծածկում է բիլտին անունը — ընտրեք այլ անուն | Փոխանվեք անունը |
| LS2020 | Ճյուղերը տալիս են տարբեր տիպեր: … և … | Առաջացրեք երկու ճյուղերը նույն տիպի |
| LS2021 | switch առանց default ճյուղի — ավելացրեք => ... |
Ավելացրեք => արժեք |
| LS2022 | «…»-ի էլեմենտի տիպը չի ենթադրվում — նշեք այն | array.new<float>() |
| LS2028 | Տիպի հայտարարության ֆիլդը «…» չունի տիպ — գրեք այն վրա | float price объявления type-ի մեջ |
| LS2029 | export «…»: экспортируемая функция должна иметь объявлены типы всех параметров и результата | Ուշադրություն — նշեք բոլոր տիպերը |
| LS2030 | «…» в «…» читается до первого бара — нужен литерал или именованная константа | Հայտարարություններում թույլատրվում են միայն կոնստանտ արժեքներ |
LS3000–LS3033 — ծրագրի իմաստ
| Կոդ | Հաղորդագրություն | Ի՞նչ անել |
|---|---|---|
| LS3002 | «…» կանչում է ինքն իրեն — ռեկուրսիան verboten է LootScript-ում | Փոխարինեք ռեկուրսիան ցիկլով |
| LS3003 | Փոխադարձ ռեկուրսիան արգելված է: … | Խափանեք անվերջ ցիկլը |
| LS3004 | արգումենտը «…» չի հաշվարկվում ճյուղից դուրս — վեր թռչեցրեք ta.* կանչը վերև | Հաշվեք արգումենտները և կանչը if-ից դուրս |
| LS3006 | «…» ծածկում է արտաքին անունը (նախազգուշացում) | Փոխանվեք ներքին փոփոխականի անունը |
| LS3007 | «…» գտնվում է ցիկլի դուրսում | break և continue-ը միայն ցիկլի մեջ են |
| LS3008 | return-ը ֆունկցիայի դուրսում | return-ը միայն ֆունկցիայի մարմնում է |
| LS3009 | export «…» հնարավոր է միայն library(…)-ում | Հեռացրեք export կամ դարձեք գրադարան |
| LS3010 | «…» առանց կանգառի մակարդակի (profit/loss/stop/limit/trail) — դատարկ օպերացիա (նախազգուշացում) | Բացشفեք stop, take կամ trailing |
| LS3011 | strategy.* հասանելի է միայն strategy(...)-ում |
Հայտարարեք որպես strategy(...) |
| LS3012 | Գրադարաններում չի կարելի նկարել կամ հայտարարել input-ներ: … | Ներդրում և կարգավորումները տեղափոխեք ինդիկատորին |
| LS3013 | «…» request.security ներսում չի դառնա արժեքարգ/string — հայտարարեք input վերև և փոխանցեք | Հայտարարեք input.* վերև և փոխանցեք փոփոխականը |
| LS3016 | Կարգավորումը «…» ընդունվել է, բայց ոչինչ չի անում (սведение) | Կարող եք թողնել կամ հեռացնել այն |
| LS3018 | Գրադարան «…» չի գտնվել գրադարանների թղթապանակում — անունը վերցվում է library(“…”, N)-ից, ոչ ֆայլի անունից | Ստուգեք գրադարանի հայտարարության մեջ տրված անունը |
| LS3019 | Գրադարանների տարբերակները չեն գտնվել — նշեք տեղադրված տարբերակը | Ցույց տվեք տեղադրված տարբերակը |
| LS3020 | «…» request.security ներսում: order book և time and sales տվյալների վրա պատմություն չկա այլ սերիայի վրա | Հեռացրեք book.*, tape.* արտահայտությունից |
| LS3025 | Ֆունկցիա «…» հայտարարվում է, բայց չի կանչվում — նրա մարմինը միայն փորձարկվել է (նախազգուշացում) | Կանչեք ֆունկցիան կամ հեռացրեք այն |
| LS3026 | «…» պահանջում է stop, որի հաշվով հաշվարկել չափը: loss/stop պետք է նշված լինի մեջ կամ strategy.exit-ում |
Ավելացրեք stop-ը կամ օգտագործեք strategy.exit |
| LS3028 | Այս բիլդը չի աջակցում՝ … | Սարդարեք առանց այդ կառուցվածքի |
| LS3029 | switch ճյուղը խճճված է — կրկնությունը անհասանելի է | Հեռացրեք կրկնությունը |
| LS3030 | «…» — գրաֆիկի փոփոխական է, բայց request.security հաշվարկվում է այլ series-ով; փոխանցեք արժեքը input.* կամ հաշվեք ներսում |
Հաշվեք ներսում կամ օգտագործեք input.* |
| LS3031 | Գրադարանները ներառում են միմյանց՝ պտույտով | Խափանեք ներառումների շրջանակը |
| LS3032 | Գրադարանում «…» թույլատրվում են միայն ֆունկցիաների հայտարարություններ և import-ներ — այստեղ կա ավելին | Հեռացրեք ավելորդ կոդը գրադարանից |
| LS3033 | Գրադարան «…» չի համարկվում (…) — բացեք այն խմբագրիչում և շտկեք | Շտկեք այդ գրադարանի սխալը |
LS4000–LS4009 — կոմպիլյացիայի սահմաններ
| Կոդ | Հաղորդագրություն | Ի՞նչ անել |
|---|---|---|
| LS4000 | Շատ ta.* կանչեր: …՝ առավելագույնը 512 — հեռացրեք անիմաստ ta.*-երը կամ վերօգտագործեք փոփոխականներ |
Սահմանափակեք ta.* կանչերը և պատմող փոփոխականները |
| LS4001 | Ծրագրի չափը շատ մեծ է (ավելի քան 4096 ներդրումներ) — պարզեցրեք ֆունկցիաները | Խմբավորեք և նվազեցրեք пользовательские ֆունկցիաների կանչերը |
| LS4002 | Շատ plot-եր — վահանակը չի կարող նկարել ավելի քան երեք շարք |
Ամբողջ արտանետումների քանակը (plot, plotshape, plotchar, bgcolor) — մինչև 64; նկարվում են առաջին երեք plot-երը |
| LS4009 | Շատ request.security կանչեր: …, սահման 32 |
Միավորեք կանչերը |
LS5000–LS5013 — պերերիսովկա և թեստեր
| Կոդ | Հաղորդագրություն | Ի՞նչ անել |
|---|---|---|
| LS5000 | varip-ը հասնում է ցուցադրման՝ պատմության վրա բերվելու դեպքում այն կլինի այլ (перерисовка) (նախազգուշացում) |
Օգտագործեք var, եթե պետք է նույն պատմությունը |
| LS5001 | Միայն կենդանի բարի արժեքն է հասնում ցուցադրման — պատմության վրա այս արժեքը չի լինի (նախազգուշացում) | Օգտագործեք barstate.isconfirmed |
| LS5002 | lookahead = true ընթերցում է ապագայում — պատմության վրա արդյունքը անիրատեսական է (նախազգուշացում) |
Հեռացրեք lookahead = true |
| LS5003 | Մեծագույն timeframe առանց [1] — անփակված բարը կարող է վերափոխվել; ավելացրեք [1] (նախազգուշացում) |
request.security(…, close[1]) |
| LS5004 | Նեղ գոտու բացասական ինդեքսը տեղափոխում է ցուցադրման անցյալը — պատմության վրա գիծը կարող է ճանաչել ապագան | Հեռացրեք բացասական ինդեքսները x[-n] |
| LS5005 | Նետդետերմինացված արժեքը հասնում է ցուցադրման — երկու անցում կտան տարբեր գծեր (նախազգուշացում) | Մի ցուցադրեք math.random կամ timenow գրաֆիկում |
| LS5006 | Տվյալները հասանելի են միայն կենդանի ժամանակում — պատմության վրա շարքը դատարկ է (նախազգուշացում) | Պատմության համար օգտագործեք depth.* order book-ի տվյալների փոխարեն |
| LS5011 | Ստրատեգիան ընթերցում է book.* կամ tape.* — նրանց վրա պատմություն չկա, բեքթեստը կլիներ սխալ |
Հեռացրեք book.* և tape.*-ը ստրատեգիայից |
| LS5012 | Ստրատեգիան «օգտագործում է lookahead» («…») — զեկույցը նշվում է որպես անիրագործելի իրական ժամանակում (նախազգուշացում) | Հեռացրեք lookahead = true |
| LS5013 | «…» միացված է: հայտերը կատարվում են բարի փակման ժամանակ — զեկույցը նշված է (сведение) | Հեռացրեք processOrdersOnClose, եթե պետք է իրականիստичный զեկույց |
LS6000–LS6036 — կատարում
| Կոդ | Հաղորդագրություն | Ի՞նչ անել |
|---|---|---|
| LS6001 | Ինդեքսը … դուրս է սահմանների | Ստուգեք կոլեկցիայի չափը մինչև դիմումը |
| LS6002 | Բացասական տեղաշարժ պատմության մեջ — ապագայում ընթերցելն արգելված է | Պատմության ինդեքսը պետք է ≥ 0 |
| LS6003 | Ամբողջ կոլեկցիայի չափը գերազանցվել է (…) — կոլեկցիան ստեղծվել է տողում … | Սահմանափակեք աճը՝ հեռացնելով հին տարրերը |
| LS6004 | Սկրիպտը սպառել է մեկ բարի օպերացիոն բյուջեն — պարզեցրեք ցիկլը | Ստուգեք ելքի պայմանը ցիկլում |
| LS6005 | Սկրիպտը գերազանցել է անցման ժամանակը | Նվազեցրեք աշխատանքի վրա մեկ բարի համար |
| LS6007 | Միացումն ուղղված է դատարկ օբյեկտին (na) | Ստեղծեք կոլեկցիան կամ օբյեկտը մինչև դրանից օգտվելը |
| LS6014 | Տողը երկար է ավելի քան 100000 նիշ — կրճատեք կամ հավաքեք մասերով | Կրճատեք տողը |
| LS6015 | Անհայտ ժամային գոտի «…» — պետք է IANA նույնականիչ, օրինակ Europe/Berlin |
Օգտագործեք IANA ձևաչափի անուն |
| LS6017 | Սիմվոլը «…» անհայտ է — ստուգեք ֆորմատը «ՊԼՈՇԱԴԿԱ:SYMBOL» կամ նշանակեք ignore_invalid_symbol = true |
Շտկեք սիմվոլի ձևաչափը |
| LS6018 | timeframe «…» չի ընթեռնվում — սպասվում է «5», «60», «4h», «1D», «1W» | Շտկեք timeframe-ը |
| LS6019 | Գծային օբյեկտը արդեն ջնջված է կամ տեղահանվել է սահմանափակումից — իր վերանշանակեք կամ ստեղծեք նորը | Ստուգեք օբյեկտի հենակետը կամ բարձրացրեք սահմանը |
| LS6020 | str.format: մի {…} placeholder-ին չի տրվել արգումենտ |
Տվեք արգումենտ յուրաքանչյուր {n}-ին |
| LS6021 | str.match: regex-ն սպառել է բյուջեն — պարզեցրեք regex-ը | Պարզեցրեք արտահայտությունը |
| LS6026 | Սկրիպտի ընդհանուր կոլեկցիաների բյուջեն սպառվել է (… բջիջ) — տողից եկող կոլեկցիան չի տեղավորվում | Կրճատեք կամ սահմանափակեք կոլեկցիաները |
| LS6027 | Անվավեր արգումենտ «…» մեջ … | Օրինակ՝ բացասական չափ array.new-ում |
| LS6028 | Տողերի բյուջեն սպառվել է (…) — վերօգտագործեք տողերը նորերով յուրաքանչյուր բարի վրա | Մի միտք կազմեք նոր տողեր յուրաքանչյուր բարի համար |
| LS6029 | Աղյուսակում ավելի քան 2000 բջիջ — վահանակի բարձրագույն ոսկեզօծ | Կրճատեք աղյուսակը |
| LS6030 | Աղյուսակի բջիջը գտնվում է ցանցի սահմաններից դուրս: … | Սյունի և տողի համար օգտագործեք ճիշտ ներբեռնված չափերը |
| LS6031 | Ներքին ֆունկցիան «…» հայտարարված է, բայց չի իրականացված — սա բիլդի дэֆեկտ է, հաղորդեք աջակցություն | Հաղորդեք աջակցությանը |
| LS6032 | Handle-ը չի վերաբերում ճիշտ տեսակի օբյեկտին — օբյեկտը ազատվել է կամ handle-ը այլ պրոգրանից է | Մի պահեք հին handle-եր դեպի ջնջված օբյեկտներ |
| LS6033 | Փող … դուրս է տիպի հայտարարությունից — սա բիլդի սխալ է, հաղորդեք աջակցություն | Հաղորդեք աջակցությանը |
| LS6034 | Արագ պատուհանի երկարությունը … մեծ է 100000-ի — այդ պատուհանը չի տեղավորվի հիշողությունում | Փոքրացրեք պատուհանի երկարությունը |
| LS6035 | Ցիկլի քայլը հավասար է զրոյին — հաշվիչը չի շարժվում, և վերջը անհասանելի է | by-ը in for չի կարող լինել զրո |
| LS6036 | Տերմալ շերտը … դուրս է 0…3 միջակայքից | layer-ը պետք է լինի 0-ից 3վա մեջ |
Կոդեր, որոնք այս տարբերակը չի վերադարձնում
Այս համարները շարքայինորեն ամրագրված են լեզվում, սակայն այս վերսիայում տերմինալը դրանք չի ցուցադրում: LS1003, LS1007, LS1011, LS2016, LS3000, LS3001, LS3005, LS4003, LS4004, LS5007, LS6000, LS6006, LS6008, LS6022, LS6023. Օրինակ, հայտարարությունը առաջին տողում չլինելը հիմա հաշվարկվում է որպես LS1009, իսկ զրոյով բաժանումը չի կանգնեցնում սկրիպտը LS6000-ով։
Դրանից հետո
https://docs.lootx.trade/hy/loot/errors