Войти  Главная | Опросы | Регистрация |  | Поиск | Стата | 1.0Сайт
Радио Бингуру
🔊
Выбрать
Готово

Перп Lighter (Лайтер)

Автор   
@alex2899

видно. и даже мышкой можно двигать и стоп и тейк прям по экрану.
#92
спасибо
Автор   
Вопрос к экспертам.
Почему на US100 бот нормально рисует свечи, а на VVV он часть теней просто выкидывает. То есть не рисуются у некоторых свечей верхние и нижние тени
При этом механика отрисовки свечей абсолютно одинаковая
#94
Пакажи скриншотом
#95
Скрытый пост
#96
@alex2899

 Улыбнуло. Напомнило как я с полчаса выяснял почему у меня графики не сходятся. Наслопил себе терминал на либе от ТВ. Режим в два графика на экране. На одном секундный ТФ, на другом минутный. Смотрю на истории по секундам есть определенное движение цены, а на минутах нет. До этого всё было отлично, не замечал такого. Думал, искал, заебывал Клода. Он говорит, что всё есть. Но я то вижу блет, что нихуя не сходится! Потом кааак понял! Я до этого незадолго врубил темную тему, а в настройках свечей чёрные хвосты стояли. Почему сразу в глаза не бросилось? А потому что был баг с окраской фитилей по направлению. Часть ушла в черный цвет, а часть осталась по дефолту и их было видно)).  Прелести вайбкодинга ёпт
Автор   
alex2899: Выяснилось, что на лайтере одновременно есть 2 вида отрисовки свечей. 
Оригинал
Это филлеры. У лайтера два основных эндпоинта /api/v1/candles и /api/v1/markPriceCandles

Первый это свечи по сделкам лайтера. Если (для тухлого скажем токена) сделок нет, рисовать нечего, поэтому вместо гепа лайтер дорисовывает пустышку — на последней цене лепит свечку, это будет свечка с нулевым объемом

Второй эндпоинт это марк прайс, на основе индекса, который составляется медианой из трех оракулов — Chainlink, Stork и Pyth. В нем нет пустых баров или плоских свечей, цена будет всегда в движении. Поэтому на тонком рынке два эндпоинта покажут разное. В гипере система отличается но плюс минус принцип такой же

Все это сделано чтобы в графике не было зияющих дыреней, но в итоге можно получить 20 пустых баров на какой-то тухлятине и можно сделать вывод что рынок типа спокойный, а он не спокойный, он пустой. Убрать это можно отфильтровывая бары с пустыми объемами

И есть еще третий эндпоинт /api/v1/marketPriceCharts со спарклайнами, как вот в графике что я иногда тут показываю, вместо OHLC будут точки, что удобно для запроса по всем рынкам сразу
Автор   
Можно ли как-то в лайтере получать вот эти названия? Чтобы бот понимал, что текущий актив относится к Мемес

#99
GET /api/v1/tokenlist 

Быстрый скажем все мемы

curl -s https://mainnet.zklighter.elliot.ai/api/v1/tokenlist 
| jq -r '.tokens[] | select(.categories|index("MEMES")) | .symbol'


Готовый для бота

import re, time, requests

BASE = "https://mainnet.zklighter.elliot.ai/api/v1"

def display_symbol(market_symbol: str) -> str:
"""1000PEPE (символ рынка) -> kPEPE (символ в tokenlist)."""
m = re.match(r"^1000(.+)$", market_symbol)
return "k" + m.group(1) if m else market_symbol

class Categories:
"""symbol -> categories. tokenlist меняется редко, кэшируем."""

def __init__(self, ttl=3600):
self.ttl, self._at, self._tokens = ttl, 0.0, {}

def _refresh(self):
if time.time() — self._at < self.ttl and self._tokens:
return
r = requests.get(f"{BASE}/tokenlist", timeout=15)
r.raise_for_status()
self._tokens = {t["symbol"]: t for t in r.json()["tokens"]}
self._at = time.time()

def of(self, market_symbol: str) -> set:
self._refresh()
t = self._tokens.get(display_symbol(market_symbol))
return set(t["categories"]) if t else set()

def has(self, market_symbol: str, category: str) -> bool:
return category in self.of(market_symbol)

def markets_in(self, category: str) -> list:
"""Живые рынки категории: (market_id, символ рынка, имя)."""
self._refresh()
r = requests.get(f"{BASE}/orderBooks", timeout=15)
r.raise_for_status()
out = []
for ob in r.json()["order_books"]:
t = self._tokens.get(display_symbol(ob["symbol"]))
if t and category in t["categories"]:
out.append((ob["market_id"], ob["symbol"], t["name"]))
return sorted(out)

cat = Categories()

for mid, sym, name in cat.markets_in("MEMES"):
print(f"{mid:4d} {sym:<12} {name}")

print(cat.of("1000PEPE")) # {'MEMES'}
print(cat.of("VVV")) # {'DEFI', 'AI'}
print(cat.has("DOGE", "MEMES")) # True


На выходе будет

#100
Спасибо
#101
@alex2899

На здоровье, с вас пять тыщь (песо кек)
хомяки 0 трейдят [ Voidemir, MrCvokka, libesab ] сегодня 3 постапик 178
© 2026 Форум Бингуру. Уходи, тебя не звали
  ⇓     ⇑