Azzrael Code | Algotrading w Python, PineScript, ByBit, OKX, Binance API, TradingView
1.83K subscribers
72 photos
1 video
2 files
204 links
🤑 Инвест Айтишка. Программирую штуки для Трейдинга и Инвестиций. Python + Binance API, OKX API, API Тинькофф Инвестиции, API Мосбиржи.
👨‍💻Бэктесты на TradingView PineScript и TSLab.
👉🏼 Связь azzrael.ru/spasibo
Download Telegram
На канале новый ролик. Давно просили, с мая, с выхода первых роликов про OKX API, снять про вебсокеты OKX API. Ну и вот сегодня случилось. Получилось плотненько и максимально подробно. Сильно подробнее чем аналогичный ролик по бинансу. Приятного просмотра...
https://youtu.be/YCEMCVWiSH0
👍14
Исходники к ролику
"""
!!! ******** Поддержи канал на https://boosty.to/azzrael Спасибо ******** !!!
https://www.youtube.com/@AzzraelCode
https://t.me/azzraelru

https://pypi.org/project/websockets/
https://websockets.readthedocs.io/en/7.0/api.html
https://www.okx.com/docs-v5/en/#overview-websocket
https://github.com/AzzraelCode/azzyt-binance/tree/main/vx_websockets
https://www.youtube.com/watch?v=OFThdbbXRpQ
"""
import asyncio
import datetime
import json

import websockets


async def azz_ws():
url = 'wss://ws.okx.com:8443/ws/v5/public'
async with websockets.connect(url, ping_interval=20, ping_timeout=60) as ws:
print('Connected ' + datetime.datetime.now().isoformat())

subs = dict(
op='subscribe',
args=[
dict(channel='mark-price', instId='BTC-USDT'),
dict(channel='mark-price', instId='ETH-USDT-SWAP'),
]
)
await ws.send(json.dumps(subs))

async for msg in ws:
msg = json.loads(msg)
ev = msg.get('event')
data = msg.get('data')
if ev:
print(f"************* event {ev} = {msg.get('arg')} *************")
elif data and len(data) > 0:
symbol = data[0].get('instId')
price = float(data[0].get('markPx', '0.0'))
print(f"{datetime.datetime.now().isoformat()} {symbol} = {price}")

print('Disconnected ' + datetime.datetime.now().isoformat())

if __name__ == '__main__':
print(f"AzzraelCode YouTube Subs")
asyncio.run(azz_ws())
👍151
2023-12-07 10 10 23.png
62 KB
Для тех кто торгует криптовалютными деривативами могут быть интересны грядущие изменения на ОКХ https://www.okx.com/docs-v5/log_en/#upcoming-changes-lot-size-change-for-perpetual-and-futures-contracts. Особенно интересны если вы торгуете небольшими объемами.
-
Если кратко - планируют уменьшить минимальный лот на свапах и фьючах. Сейчас мин лот на BTC-USDT-SWAP = 0.01BTC ~ 430USDT. Планируют уменьшить до 0,001BTC. Что будет даже меньше мин лота на фьчах бинанса (они в прошлом мес сильно подняли мин лот многих пар). Что сделает торговлю более доступной, что оч ценно особенно в момент разработки. Круто!

Текущие Trading Rules здесь https://www.okx.com/trade-market/info/swap
А изменения они обещают транслировать в вебсокет (актуально для работающих ботов).
👍9
В ответ на комментарий https://www.youtube.com/watch?v=-SFOkEgz6hc&lc=Ugzz9Gmst4PhNKyck914AaABAg
скажите а как в зависимости от таймфрэйма изменять период скользящей, например на 4 часах период 20 а на часе будет 40?


//@version=5
indicator("AzzraelCode YT Comment", overlay=true)
len = 2
// https://www.tradingcode.net/tradingview/time-frame-period/
if timeframe.period == "15"
len := 100

sma = ta.sma(close, len)
plot(sma)
🔥62
This media is not supported in your browser
VIEW IN TELEGRAM
Про перемещение метки label в PineScript. Один из вариантов.

В ответ на ещё один ))) комментарий https://www.youtube.com/watch?v=m42MeRRykrw&lc=Ugy_jv30qohFp3UKLR94AaABAg
👍8🔥1👌1
У Binance API Websocket есть очень удобная подписка https://binance-docs.github.io/apidocs/futures/en/#all-book-tickers-stream , кот отдает обновления ВСЕХ (в одной подписке) торгуемых тикеров. Я обычно подписываюсь на неё и складываю обновления в редис или мемкеш и имею всегда актуальные цены без трат лимитов. Сейчас и до 20 декабря она работает в рилтайме. Но с 20 декабря 2023 пуши будут приходить раз в 5 сек. Может быть критично для высокочастотников. Обратите внимание кто использует ;)
Update Speed: Real-time, Starting from December 20th, 2023, it will be updated every 5 seconds.
👍153👌2😭1
Уже на канале продолжение минисериала про OKX API Websocket. Сегодня попробую разобраться с отловом ошибок. В тч и разрывы и восстановления соединений (один из способов, есть и другие, возможно даже более правильные 😊). А также возвращаемые ошибки и как их интерпретировать.
https://youtu.be/F7VNi_V0rMU
👍11🔥2👏2
Сегодня экспериментирую с форматом. https://youtube.com/shorts/xs9vUWuyiV4?feature=share
👍 - пойдет
👎 - ерунда

//@version=5
indicator("AzzraelCode YT Comment", overlay=true)
len = input.int(60, "Период экстремумов", minval=3)

p = chart.point.now()
var u = line.new(p, p, extend = extend.right, color = color.red, width = 3)
var d = u.copy()
d.set_color(color.green)

if ta.highestbars(len) == 0
u.set_xy1(bar_index, high)
u.set_xy2(bar_index + 1, high)

if ta.lowestbars(len) == 0
d.set_xy1(bar_index, low)
d.set_xy2(bar_index + 1, low)
👍40👎1
В PineScript всегда оооооочень не хватало такой ооооочень простой штуки как отладочные логи. Особенно ощущалась эта нехватка, если вы приходили в PineScript из других языков программирования. Приходилось городить всякую дичь, испытывать боль и страдания. Однако в августе 2023 года все изменилось 🥳🥳🥳🥳😍😍😍
https://youtu.be/BdTH34nFQ-Q

// © Azzrael 
// YT https://www.youtube.com/@AzzraelCode
// https://www.tradingview.com/blog/ru/pine-logs-in-pine-script-40490/

//@version=5
indicator("AzzraelCode YouTube Sample!", overlay=true)
perc_limit = input.int(1, "Percent Limit")/100
sma = ta.sma(close, 100)

if ta.crossover(close, sma)
log.info("Crossover {0, time} {1}", time, close)

if ta.crossunder(close, sma)
log.warning("Crossunder {0,,number,integer} {1}", bar_index, close)

perc_change = math.abs(close - open)/open
if not barstate.isrealtime and perc_change > perc_limit
log.error(str.format("\nИзменение {0,number,percent}\n", perc_change) + str.tostring(bar_index) + "\n" + str.format_time(time, "yyyy-MM-dd"))

plot(sma, color = color.yellow)
👍7
⚡️BOOST ME ⚡️ https://t.me/azzraelru?boost
И тогда сделаю невероятно нужную всем штуку - Инвест Айтишный фон у списка постов 😂 Какой нибудь такой с графиками или типа того.
👍13🍾2👾1
Azzrael Code | Algotrading w Python, PineScript, ByBit, OKX, Binance API, TradingView pinned «⚡️BOOST ME ⚡️ https://t.me/azzraelru?boost И тогда сделаю невероятно нужную всем штуку - Инвест Айтишный фон у списка постов 😂 Какой нибудь такой с графиками или типа того.»
Если используете OKX API Websocket - обратите внимание на планируемые ограничения. Если кратко будет ограничение в 20 Websocket соединений на аккаунт/сабаккаунт. Когда введут - пока не ясно.

To enhance system stability and fairness to users, the exchange will impose limitations on the number of concurrent WebSocket connections allowed to subscribe to the following WebSocket channels. The limit will be set at 20 WebSocket connections per specific WebSocket channel per sub-account. Each WebSocket connection is identified by the unique connId.

https://www.okx.com/docs-v5/log_en/#upcoming-changes-restrict-number-of-connections-per-private-websocket-channel
Если не Binance (для алготрейдинга, с нормальным API, для РФ) то что?
Anonymous Poll
56%
ByBit
16%
OKX
2%
KuCoin
0%
HTX
6%
MEXC
2%
CommEx
17%
Крипта скам
🔥5👍1
#заметкинаполях #copytrading
Некоторое время активно наблюдаю за таким продуктом как копитрейдинг. Не с тз заработать, а с тз посмотреть как торгуют топовые лиды и как их перфом отражается на продвижении (притоках фоловеров и AUM).
Один из топов (просто пример, я сам его фолловил и слился по стопу) на ОКХ вчера дал -20%. Но растерял всего -12% фоловеров и -20% AUM. Притом что в моменте по первой позе на ETH-USDT-SWAP x6 лид давал MAE до -72% и продолжал беспредельно усредняться.
👍12😱5
🥳 Уже совсем скоро будет продолжение по API ByBit.

🫡 А пока я приготовил для вас репозиторий https://github.com/AzzraelCode/azzyt-bybit где будут исходники. Сейчас в нем пара простеньких примеров использования Публичных Данных.

🤌 Например в методе tickers https://github.com/AzzraelCode/azzyt-bybit/blob/main/videos/PublicData.py одним запросом я собираю суточное процентное изменение цены всех торгуемых фьючей на ByBit, загружаю в Pandas и сортирую по абсолютному значению. Таким образом можно типа ловить типа пампы/дампы .

👉 Если есть интересные идеи таких простых, доступных новичкам, примеров - пишите в issue репозитория, попробую добавить.
👍20🔥4👌1