-
-
Notifications
You must be signed in to change notification settings - Fork 8.7k
async fetch ohlcv indicators discord webhook
github-actions[bot] edited this page Jun 11, 2026
·
2 revisions
from asyncio import run, gather, ensure_future
import pandas_ta as ta
import pandas as pd
import ccxt.async_support as ccxt # noqa: E402
print('CCXT Version:', ccxt.__version__)
async def send_discord_webhook_messsage(exchange, symbol, message):
payload = {
"username": "Kj Bot Top 10 Coins 15 Min TF",
"content" : message
}
# change your webhook URL here
url = 'https://discord.com/api/webhooks/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
method = 'POST'
headers = {'Content-Type': 'application/json'}
body = exchange.json(payload)
try:
await exchange.fetch(url, method, headers, body)
except Exception as e:
print(type(e).__name__, str(e))
async def run_ohlcv_loop(exchange, symbol, timeframe, limit):
since = None
while True:
try:
ohlcv = await exchange.fetch_ohlcv(symbol, timeframe, since, limit)
if len(ohlcv):
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
rsi = df.ta.rsi()
df = pd.concat([df,rsi], axis=1)
last_row = df.iloc[-1]
previous_row = df.iloc[-2]
if last_row['RSI_14'] and previous_row['RSI_14']:
now = exchange.milliseconds()
iso8601 = exchange.iso8601(now)
print(iso8601, timeframe, symbol, '\tRSI_14 =', last_row['RSI_14'])
rsienterob = previous_row['RSI_14'] < 70 and last_row['RSI_14'] > 70
if rsienterob:
message = iso8601 + ' ' + timeframe + ' ' + symbol + ' is entering overbought zone'
print(message)
ensure_future(send_discord_webhook_messsage(exchange, symbol, message))
except Exception as e:
print(type(e).__name__, str(e))
async def main():
exchange = ccxt.binance()
timeframe = '1m'
limit = 50
symbols = [ 'BTC/USDT', 'ETH/USDT' ]
loops = [run_ohlcv_loop(exchange, symbol, timeframe, limit) for symbol in symbols]
await gather(*loops)
await exchange.close()
run(main())(If the page is not being rendered for you, you can refer to the mirror at https://docs.ccxt.com/)
- Install
- Examples
- Manual
- CCXT Pro
- Contributing
- Supported Exchanges
- Exchanges By Country
- API Spec By Method
- FAQ
- Changelog
- Awesome
- API Spec by Exchange
- fetchCurrencies
- alpaca
- apex
- ascendex
- aster
- backpack
- bigone
- binance
- bingx
- bit2c
- bitbank
- bitbns
- bitfinex
- bitflyer
- bitget
- bithumb
- bitmart
- bitmex
- bitopro
- bitrue
- bitso
- bitstamp
- bitteam
- bittrade
- bitvavo
- blockchaincom
- blofin
- btcbox
- btcmarkets
- btcturk
- bullish
- bybit
- bydfi
- cex
- coinbase
- coinbaseexchange
- coinbaseinternational
- coincheck
- coinex
- coinmate
- coinmetro
- coinone
- coinsph
- coinspot
- cryptocom
- cryptomus
- deepcoin
- delta
- deribit
- derive
- digifinex
- dydx
- exmo
- extended
- foxbit
- gate
- gemini
- grvt
- hashkey
- hibachi
- hitbtc
- hollaex
- htx
- hyperliquid
- independentreserve
- indodax
- kraken
- krakenfutures
- kucoin
- fetchBidsAsks
- latoken
- lbank
- lighter
- luno
- mercado
- mexc
- modetrade
- ndax
- novadax
- okx
- onetrading
- p2b
- pacifica
- paradex
- paymium
- phemex
- poloniex
- tokocrypto
- toobit
- upbit
- weex
- whitebit
- woo
- woofipro
- xt
- zaif
- fetchStatus