LootX

Սկրիպտների օրինակներ

նոր Թարմացվել է 30 սեպտեմբերի, 2026 թ. Այս էջը PDF-ով

Ութ պատրաստի սկրիպտ LootScript‑ով՝ շարժական միջիններ, RSI, VWAP՝ գոտիներով, կումուլյատիվ delta՝ տարբերակներով, open interest, funding rate, footprint cluster-ների անհավասարակշռություններ և ստրատեգիա թեստերի համար.

Ութ պատրաստի սկրիպտ LootScript‑ով՝ սկսած շարժական միջիններից և RSI‑ից մինչև կումուլյատիվ delta, open interest, funding rate և footprint cluster-ներ։ Ամեն օրինակ՝ աշխատող Ինդիկատոր, որը կարելի է անմիջապես Ավելացնել գրաֆիկին և կարգավորել։ Բոլոր օրինակները հավաքվում են ընթացիկ վարկածի կոմպիլյատորով առանց սխալների և զգուշացումների.

Ինչպես գործարկել օրինակը

  1. Սեղմեք ƒ գրաֆիկի վահանակի վրա, Ինդիկատորներ պատուհանում — Խմբագրիչ….
  2. Խմբագրիչում սեղմեք Նոր (Ctrl+N), փոխարինեք տեմպլեյթը օրինակով և սեղմեք Պահպանել.
  3. Սեղմեք Ավելացնել գրաֆիկին (Ctrl+Enter). input.*‑ից պարամետրերը կհայտնվեն Ինդիկատորի կարգավորումների պատուհանում.

1. Երեք շարժական միջիններ՝ տիպի ընտրությամբ

Բыстрая, միջին և медленная նույն տեսակի՝ ընտրությամբ։ Ֆոնը ընդգծվում է, երբ երեքը դասավորված են ըստ թրենդի։

Loot
indicator("Три скользящие", shortTitle = "MA×3", overlay = true)
maType = input.string("EMA", "Тип средней", options = ["EMA", "SMA", "WMA", "HMA"])
src    = input.source(close, "Источник")
len1   = input.int(20, "Быстрая", minval = 1)
len2   = input.int(50, "Средняя", minval = 1)
len3   = input.int(200, "Медленная", minval = 1)

func ma(s, len) => switch maType {
    "SMA" => ta.sma(s, len)
    "WMA" => ta.wma(s, len)
    "HMA" => ta.hma(s, len)
    => ta.ema(s, len)
}

m1 = ma(src, len1)
m2 = ma(src, len2)
m3 = ma(src, len3)

plot(m1, "Быстрая", color = m1 >= m1[1] ? color.teal : color.red, linewidth = 2)
plot(m2, "Средняя", color = color.orange)
plot(m3, "Медленная", color = color.gray, linewidth = 2)
bgcolor(m1 > m2 and m2 > m3 ? color.new(color.teal, 20) : m1 < m2 and m2 < m3 ? color.new(color.red, 20) : na)

Ինչպես աշխատում է

  • input.string‑ը options‑ով վերափոխվում է dropdown ցանկի՝ կարգավորումների մեջ.
  • Ֆունկցիան ma ընտրում է համապատասխան միջինը switch‑ով. ta.*‑ի վիճակը անկախ է յուրաքանչյուր կանչից, ուստի երեք կանչերն արտադրում են երեք անկախ միջիններ.
  • Արագ գծի գույնը հաշվարկվում է համեմատությամբ նախորդ բարի (m1[1]) հետ: աճում է՝ color.teal, նվազում է՝ color.red.
  • Պանելն կարող է նկարել մինչև երեք plot գիծ յուրաքանչյուր ինդիկատորի համար, այդ պատճառով չի պահանջվում այլ գործողություն երեք միջինների համար.

2. RSI՝ գոտիներով և ծանուցումներով

RSI՝ երկու մակարդակի միջև լցոնմամբ. գիծը և ֆոնը ներկվում են, երբ RSI‑ը գտնվում է overbought կամ oversold գոտում։

Loot
indicator("RSI с зонами", shortTitle = "RSI", overlay = false)
len = input.int(14, "Период", minval = 2)
src = input.source(close, "Источник")
ob  = input.float(70, "Перекупленность", minval = 50, maxval = 100)
os  = input.float(30, "Перепроданность", minval = 0, maxval = 50)

r = ta.rsi(src, len)

hOb = hline(ob, "Перекупленность", color = color.red)
hOs = hline(os, "Перепроданность", color = color.teal)
fill(hOb, hOs, color = color.new(color.purple, 20))
plot(r, "RSI", color = r > ob ? color.red : r < os ? color.teal : color.purple, linewidth = 2)
bgcolor(r > ob ? color.new(color.red, 35) : r < os ? color.new(color.teal, 35) : na)

alertcondition(ta.crossunder(r, ob), "RSI вышел из перекупленности", "RSI опустился ниже верхнего уровня")
alertcondition(ta.crossover(r, os), "RSI вышел из перепроданности", "RSI поднялся выше нижнего уровня")

Ինչպես աշխատում է

  • hline վերադարձնում է մակարդակի հենակետը, իսկ fill‑ը կատարում է լցոնում երկու հենակետի միջև.
  • Մակարդակները input.float կարգավորումներ են, ուստի գծերն ու լցոնումը շարժվում են դրանց հետ.
  • alertcondition‑ը հայտարարում է երկու ծանուցում. դրանք ինքնաբերաբար չեն զանգում — ինչպես դրանք միացնելը նկարագրված է էջում Ծանուցումներ սկրիպտներից.
  • Ալֆան color.new‑ում՝ 0-ից (թափանցիկ) մինչև 255 (ամբողջապես պինդ).

3. VWAP дня с полосами отклонения

Օրվա սկիզբից (00:00 UTC) հաշվարկված VWAP և ±σ լայնությամբ գոտի:

Loot
indicator("VWAP дня с полосами", shortTitle = "VWAP", overlay = true)
src  = input.source(hlc3, "Цена")
mult = input.float(1.0, "Ширина полосы, σ", minval = 0.1, step = 0.1)

anchor = session.isfirstbar
vw = ta.vwap(src, anchor)

// Сумма объёма и сумма объёма на квадрат цены с начала дня — для разброса вокруг VWAP.
var float sumV  = 0.0
var float sumV2 = 0.0
if anchor {
    sumV  := 0.0
    sumV2 := 0.0
}
if not na(volume) and not na(src) {
    sumV  := sumV + volume
    sumV2 := sumV2 + volume * src * src
}
sigma = sumV > 0 and not na(vw) ? math.sqrt(math.max(sumV2 / sumV - vw * vw, 0)) : na

pUp = plot(vw + mult * sigma, "Верх", color = color.new(color.blue, 150))
plot(vw, "VWAP", color = color.blue, linewidth = 2)
pDn = plot(vw - mult * sigma, "Низ", color = color.new(color.blue, 150))
fill(pUp, pDn, color = color.new(color.blue, 25))

Ինչպես աշխատում է

  • ta.vwap սկսում է հաշվել նորից այն բարի վրա, որտեղ anchor‑ը ճիշտ է. կրիպտոյում session.isfirstbar‑ը առաջին բարն է 00:00 UTC‑ից հետո.
  • var փոփոխականները պահվում են բարերի միջով. նույն anchor‑ը դրանք զրոյացնում է, ուստի գոտին հաշվարկվում է նույն ժամանակահատվածի համար, ինչ VWAP‑ը.
  • Sigma‑ն հաշվարկվում է որպես քառակուսի միջինի արմատը նվազեցված VWAP‑ի քառակուսով. math.max(…, 0) պաշտպանում է ՛սկսաշրջանկացումից առաջացած փոքր բացասական արժեքներից.
  • Սենսը կա ինտրադեյ միավորների վրա. Եթե ուզում եք VWAP‑ը երկար ժամանակահատվածից (օրինակ՝ վերջին funding‑ից), տվեք anchor = funding.settled.

4. Օրեկան կումուլյատիվ delta՝ տարբերակներով

Կումուլյատիվ delta, որը զրոյացվում է ամեն օր, և նշումներ այն բարերի վրա, որտեղ գինը թարմացրել է տեղական экстремումը, իսկ delta‑ն չէ:

Loot
indicator("Дневная кумдельта с расхождениями", shortTitle = "CVD", overlay = false)
len = input.int(20, "Окно поиска максимумов", minval = 3)

var float cvd = 0.0
if session.isfirstbar {
    cvd := 0.0
}
if delta.available {
    cvd := cvd + delta.value
}
cvdLine = delta.available ? cvd : na

// Цена обновила максимум окна, а кумдельта — нет: покупатели не подтверждают рост.
bearish = high >= ta.highest(high, len) and cvdLine < ta.highest(cvdLine, len)
bullish = low <= ta.lowest(low, len) and cvdLine > ta.lowest(cvdLine, len)

plot(cvdLine, "Кумдельта", color = cvdLine >= 0 ? color.teal : color.red, linewidth = 2)
hline(0, "Ноль", color = color.gray)
plotshape(bearish, "Медвежье расхождение", style = shape.triangledown, location = location.top, color = color.red, size = size.tiny)
plotshape(bullish, "Бычье расхождение", style = shape.triangleup, location = location.bottom, color = color.teal, size = size.tiny)

Ինչպես աշխատում է

  • delta.value — ագրեսիվ գնողների և վաճառողների տարբերությունն է մեկ բարի համար. Եթե տվյալները չկան, delta.available հավասար չէ true, և գիծը ընդհատվում է, ոչ թե նկարում զրո.
  • Նկարչող var փոփոխականը զրոյացվում է օրվա սկզբում. Եթե ուզում եք կումուլյատիվ delta ամբողջ պատմության համար առանց զրոյացման՝ օգտագործեք պատրաստի շարքը delta.cum.
  • Տարբերակ (divergence): գինը հասնում է պատուհանի максимумին, բայց կումուլյատիվ delta‑ն չի հաստատում այն. Մինիմումների համար՝ հակառակը.
  • location.top և location.bottom տեղադրում են նշանները ենթապենի եզրին, ոչ թե գնի վրա.

5. Open interest‑ի պոռթկումները

Open interest‑ի փոփոխությունը տոկոսով մի բարի մեջ և նշում այնտեղ, որտեղ այն դուրս է գալիս սովորական բաշխման շրջանակից.

Loot
indicator("Изменение открытого интереса", shortTitle = "ΔOI %", overlay = false)
len = input.int(50, "Окно для всплесков", minval = 5)
k   = input.float(3.0, "Порог всплеска, σ", minval = 0.5, step = 0.5)

pct = oi.available and oi.close[1] > 0 ? 100 * (oi.close - oi.close[1]) / oi.close[1] : na
sd  = ta.stdev(pct, len)
spike = not na(sd) and math.abs(pct) > k * sd

plot(pct, "ΔOI, %", style = plot.style_columns, color = pct >= 0 ? color.teal : color.red)
hline(0, "Ноль", color = color.gray)
plotshape(spike, "Всплеск", style = shape.circle, location = location.top, color = color.orange, size = size.tiny)

Ինչպես աշխատում է

  • oi.close — open interest‑ը բարի փակման պահին, oi.close[1] — նախորդ բարի. oi.available ստուգումը կանխում է հաշվարկը բաց տվյալների վրա.
  • Պոռթկումը (spike) — այն բարերը, որոնց փոփոխության մոդուլն անցնում է k ստանդարտ շեղումները len պատուհանում.
  • Open interest‑ը թարմացվում է հիմնականում րոպեական հաճախականությամբ. Եթե timeframe‑ը փոքր է մեկ րոպե, հարևան բարերը կարող են կրկնել նույն արժեքը, ու փոփոխությունը լինում է զրո — դա տվյալ է, ոչ սխալ.

6. Funding rate

Perpetual ֆյուչերսի funding rate‑ը ցուցադրվում է տոկոսներով մեկ period‑ի համար կամ վերածված տարեկան, նշումներ վճարման պահին և բարձր մակարդակի ընդգծում։

Loot
indicator("Ставка финансирования", shortTitle = "Funding", overlay = false)
mode = input.string("За период", "Показывать", options = ["За период", "Годовых"])
thr  = input.float(0.05, "Порог, %", minval = 0.0, step = 0.01)

perPeriod = funding.rate * 100
periodsPerYear = funding.interval_hours > 0 ? 24.0 / funding.interval_hours * 365 : na
value = mode == "Годовых" ? perPeriod * periodsPerYear : perPeriod
level = mode == "Годовых" ? thr * periodsPerYear : thr

plot(value, "Ставка, %", style = plot.style_columns, color = value >= 0 ? color.teal : color.red)
hline(0, "Ноль", color = color.gray)
plotshape(funding.settled, "Выплата", style = shape.circle, location = location.bottom, color = color.gray, size = size.tiny)
bgcolor(math.abs(value) > level ? color.new(color.orange, 30) : na)

Ինչպես աշխատում է

  • funding.rate՝ թիվ է՝ ոչ տոկոս: 0.0001 համարժեք է 0.01%. Այդ պատճառով արժեքը բազմապատկվում է 100‑ով.
  • Տարեկան դարձնելու համար բազմապատկվում է տարինում վճարումների քանակով. 24.0 թիվը մատնանշված է դիտավորյալ՝ ամբողջ թվերի բաժանումը լռելյայն կարող է խզել մնացորդը.
  • funding.settled true է այն բարի վրա, որի վրա եղավ վճարումը — այնտեղ դնում են մի կետ.
  • Պорогը հայտարարվում է per‑period, և տարվա համար այն նույն միապատկով վերափոխվում է.

7. Footprint cluster‑ների անհավասարակշռություններ

Գնի վրա նշումներ՝ այնտեղ, որտեղ cluster‑ում կա «ստեպ» տեսքով անհավասարակշռություն կամ պարզապես շատ imbalance‑ներ, նաև POC՝ յուրաքանչյուր բարի համար։

Loot
indicator("Дисбалансы кластеров", shortTitle = "Imbalance", overlay = true)
minSteps = input.int(3, "Уровней подряд", minval = 2)
minCount = input.int(5, "Дисбалансов в баре", minval = 1)

levels = cluster.available ? cluster.levels : 0
buys  = 0
sells = 0
for i in 0 .. levels {
    side = cluster.imbalance(i)
    if side == 1 {
        buys := buys + 1
    } else if side == -1 {
        sells := sells + 1
    }
}

plot(cluster.poc, "POC", style = plot.style_circles, color = color.orange)
plotshape(cluster.stacked_buy_steps >= minSteps, "Лесенка покупок", style = shape.triangleup, location = location.belowbar, color = color.teal, size = size.small)
plotshape(cluster.stacked_sell_steps >= minSteps, "Лесенка продаж", style = shape.triangledown, location = location.abovebar, color = color.red, size = size.small)
plotshape(buys >= minCount, "Много дисбалансов покупок", style = shape.circle, location = location.belowbar, color = color.new(color.teal, 120), size = size.tiny)
plotshape(sells >= minCount, "Много дисбалансов продаж", style = shape.circle, location = location.abovebar, color = color.new(color.red, 120), size = size.tiny)

Ինչպես աշխատում է

  • cluster.imbalance(i) վերադարձնում է +1, −1 կամ 0 նշագավառի համար i. Imbalance‑ի շեմը վերցված է գրաֆիկի cluster կարգավորումներից, ուստի սկրիպտը տեսնում է նույն բանն, ինչ դուք.
  • cluster.stacked_buy_steps ցույց է տալիս՝ քանի մակարդակ անընդմեջ ունեն գնային անհավասարակշռություններ. Ցիկլը for i in 0 .. levels հաշվարկում է բոլոր դիսբալանսները բարի համար, ոչ միայն անընդմեջները.
  • Սկրիպտը ինքննաբար սաբսկրիբ է cluster‑երին և աշխատում է սովորական մոմ (մոմեր/բարեր) գրաֆիկում. Եթե բորսան չունի տվյալներ կամ timeframe‑ը փոքր է 30 վայրկյանը կամ մեծ է մեկ օրվանից, cluster‑եր չեն լինի — այդ դեպքում levels = 0 և նշումներ չեն կնկատվեն.

8. Ստրատեգիա: EMA‑երի խաչը՝ stop-loss ATR‑ով

Long մուտք EMA‑երի խաչով, stop-loss և take‑profit՝ ATR‑ի միավորներով, ելք՝ հակառակ խաչով.

Loot
strategy("EMA-кросс со стопом по ATR", overlay = true, initialCapital = 10000,
         defaultQtyType = strategy.qty.percent_of_equity, defaultQtyValue = 10,
         slippageTicks = 2)
fastLen = input.int(12, "Быстрая EMA", minval = 1)
slowLen = input.int(26, "Медленная EMA", minval = 2)
atrLen  = input.int(14, "Период ATR", minval = 1)
stopK   = input.float(1.5, "Стоп, в ATR", minval = 0.1, step = 0.1)
takeK   = input.float(3.0, "Цель, в ATR", minval = 0.1, step = 0.1)

fast = ta.ema(close, fastLen)
slow = ta.ema(close, slowLen)
atr  = ta.atr(atrLen)

// ATR запоминается в момент сигнала, чтобы стоп и цель не ползли вслед за волатильностью.
var float riskAtr = na
if ta.crossover(fast, slow) and strategy.position_size == 0 {
    riskAtr := atr
    strategy.entry("Long", strategy.long)
}
if ta.crossunder(fast, slow) {
    strategy.close("Long", comment = "Обратный кросс")
}
if strategy.position_size > 0 {
    entry = strategy.position_avg_price
    strategy.exit("Стоп/цель", from_entry = "Long", stop = entry - stopK * riskAtr, limit = entry + takeK * riskAtr)
}

plot(fast, "Быстрая", color = color.teal)
plot(slow, "Медленная", color = color.orange)

Ինչպես աշխատում է

  • Պարամետրերը strategy(…) մեջ՝ լիտերալներ են՝ սկզբնական կապիտալ 10000, դիրքի չափը՝ 10% կապիտալի, slippage = 2 tick. Կոմիսիան (կոմիսիա) չնշված է, ուստի թեստերը օգտագործում են լռելյայնային թարմացումը՝ 0.02% limit և 0.05% market/stop. Կոմիսիան կարելի է սահմանել commissionValue‑ով.
  • Մարկետ ինտրին կատարվում է հաջորդ բարի open‑ի վրա, ոչ թե սիգնալ բարի close‑ի վրա՝ որպեսզի թեստերը չնայեն ապագային.
  • strategy.exit‑ը տեղադրում է stop‑ը և take‑profit‑ը մուտքի միջին գնի նկատմամբ. Եթե մեկ բարի ընթացքում երկուսն էլ հասանելի են, թեստերը լռելյայն ընդունում են, որ նախը աշխատել է stop‑ը.
  • Արդյունքները՝ գործարքները և կապիտալի կորուստները (drawdowns) հայտնվում են Ստրատեգիայի թեստեր… պատուհանում Խմբագրիչում. Լրացուցիչ տեղեկություններ՝ էջում Ստրատեգիաներ և թեստեր.

Հաջորդը

FAQ

Ինչպես ավելացնել օրինակ գրաֆիկին?
Բացեք Խմբագրիչը (ƒ՝ գրաֆիկի վահանակում → «Խմբագրիչ…»), սեղմեք «Նոր», կպցրեք կոդը, պահպանեք և սեղմեք «Ավելացնել գրաֆիկին»։
Ինչու footprint cluster-ների կամ funding rate-ի օրինակները գրաֆիկում ոչինչ չեն ցուցադրում?
Այս տվյալները չկան ընթացիկ ինստրումենտի համար։ footprint cluster-ներ չկան բոլոր բորսաներում և timeframe-ներում, funding rate-ը կա միայն perpetual futures-ների համար։ Որտեղ տվյալներ չկան՝ արժեքը na է և գրաֆիկում բաց է թողնվում։
Կարելի՞ է առևտուր կատարել օրինակային ստրատեգիայի միջոցով?
Միայն Ստրատեգիայի թեստերում, սիմուլացված հաշվով։ LootScript-սկրիպտները իրական հայտեր չեն ուղարկում։