live-feed by marketcalls/openalgo-indicator-skills
npx skills add https://github.com/marketcalls/openalgo-indicator-skills --skill live-feed使用 OpenAlgo WebSocket 流创建实时指标数据流。
将 $ARGUMENTS 解析为:品种 交易所 模式
$0 = 品种(例如:SBIN、RELIANCE、NIFTY)。默认值:SBIN$1 = 交易所(例如:NSE、NSE_INDEX)。默认值:NSE$2 = 模式(例如:ltp、quote、depth、multi)。默认值:quote如果未提供参数,则向用户询问品种和所需数据。
rules/websocket-feeds.md — WebSocket 连接和订阅rules/data-fetching.md — 用于缓冲区初始化的历史数据charts/live/ 目录(按需)广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
{symbol}_live_feed.pyrules/assets/live_feed/template.py 中的模板ltp — 最新成交价 + 指标quote — 完整报价 + 指标depth — 市场深度分析multi — 多品种数据流"""
Real-Time Indicator Feed for {SYMBOL}
Mode: {mode}
"""
import os
import time
import numpy as np
from datetime import datetime, timedelta
from dotenv import find_dotenv, load_dotenv
from openalgo import api, ta
load_dotenv(find_dotenv(), override=False)
SYMBOL = "{symbol}"
EXCHANGE = "{exchange}"
client = api(
api_key=os.getenv("OPENALGO_API_KEY"),
host=os.getenv("OPENALGO_HOST", "http://127.0.0.1:5000"),
verbose=1,
)
# Pre-fetch historical data for buffer initialization
df = client.history(
symbol=SYMBOL, exchange=EXCHANGE, interval="1m",
start_date=(datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d"),
end_date=datetime.now().strftime("%Y-%m-%d"),
)
close_buffer = list(df["close"].values[-200:])
instruments = [{"exchange": EXCHANGE, "symbol": SYMBOL}]
def on_data(data):
ltp = data["data"].get("ltp")
if ltp is None:
return
close_buffer.append(float(ltp))
if len(close_buffer) > 200:
close_buffer.pop(0)
if len(close_buffer) >= 20:
arr = np.array(close_buffer, dtype=np.float64)
ema_val = ta.ema(arr, 20)[-1]
rsi_val = ta.rsi(arr, 14)[-1] if len(arr) >= 15 else float("nan")
timestamp = datetime.now().strftime("%H:%M:%S")
print(f"[{timestamp}] {SYMBOL} LTP:{ltp:>10.2f} | "
f"EMA(20):{ema_val:>10.2f} | RSI(14):{rsi_val:>6.2f}")
# Connect and subscribe
client.connect()
client.subscribe_ltp(instruments, on_data_received=on_data)
print(f"Streaming {SYMBOL} on {EXCHANGE} — Press Ctrl+C to stop")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Stopping feed...")
client.unsubscribe_ltp(instruments)
client.disconnect()
脚本必须:
告知用户详细选项:
verbose=0: 静默模式(仅错误)verbose=1: 连接和订阅日志verbose=2: 所有数据更新(调试模式)/live-feed SBIN NSE ltp /live-feed NIFTY NSE_INDEX quote /live-feed SBIN NSE depth /live-feed multi NSE
每周安装次数
89
代码仓库
GitHub 星标数
5
首次出现
2026年2月28日
安全审计
安装于
opencode89
codex89
gemini-cli88
github-copilot87
amp87
cline87
Create a real-time indicator feed using OpenAlgo WebSocket streaming.
Parse $ARGUMENTS as: symbol exchange mode
$0 = symbol (e.g., SBIN, RELIANCE, NIFTY). Default: SBIN$1 = exchange (e.g., NSE, NSE_INDEX). Default: NSE$2 = mode (e.g., ltp, quote, depth, multi). Default: quoteIf no arguments, ask user for symbol and what data they want.
rules/websocket-feeds.md — WebSocket connection and subscriptionrules/data-fetching.md — Historical data for buffer initializationcharts/live/ directory (on-demand){symbol}_live_feed.pyrules/assets/live_feed/template.pyltp — Last Traded Price + Indicatorsquote — Full Quote + Indicatorsdepth — Market Depth Analysismulti — Multi-Symbol Feed"""
Real-Time Indicator Feed for {SYMBOL}
Mode: {mode}
"""
import os
import time
import numpy as np
from datetime import datetime, timedelta
from dotenv import find_dotenv, load_dotenv
from openalgo import api, ta
load_dotenv(find_dotenv(), override=False)
SYMBOL = "{symbol}"
EXCHANGE = "{exchange}"
client = api(
api_key=os.getenv("OPENALGO_API_KEY"),
host=os.getenv("OPENALGO_HOST", "http://127.0.0.1:5000"),
verbose=1,
)
# Pre-fetch historical data for buffer initialization
df = client.history(
symbol=SYMBOL, exchange=EXCHANGE, interval="1m",
start_date=(datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d"),
end_date=datetime.now().strftime("%Y-%m-%d"),
)
close_buffer = list(df["close"].values[-200:])
instruments = [{"exchange": EXCHANGE, "symbol": SYMBOL}]
def on_data(data):
ltp = data["data"].get("ltp")
if ltp is None:
return
close_buffer.append(float(ltp))
if len(close_buffer) > 200:
close_buffer.pop(0)
if len(close_buffer) >= 20:
arr = np.array(close_buffer, dtype=np.float64)
ema_val = ta.ema(arr, 20)[-1]
rsi_val = ta.rsi(arr, 14)[-1] if len(arr) >= 15 else float("nan")
timestamp = datetime.now().strftime("%H:%M:%S")
print(f"[{timestamp}] {SYMBOL} LTP:{ltp:>10.2f} | "
f"EMA(20):{ema_val:>10.2f} | RSI(14):{rsi_val:>6.2f}")
# Connect and subscribe
client.connect()
client.subscribe_ltp(instruments, on_data_received=on_data)
print(f"Streaming {SYMBOL} on {EXCHANGE} — Press Ctrl+C to stop")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Stopping feed...")
client.unsubscribe_ltp(instruments)
client.disconnect()
The script must:
Inform user about verbose options:
verbose=0: Silent mode (errors only)verbose=1: Connection and subscription logsverbose=2: All data updates (debug mode)/live-feed SBIN NSE ltp /live-feed NIFTY NSE_INDEX quote /live-feed SBIN NSE depth /live-feed multi NSE
Weekly Installs
89
Repository
GitHub Stars
5
First Seen
Feb 28, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode89
codex89
gemini-cli88
github-copilot87
amp87
cline87
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
43,100 周安装
Databricks Python SDK 开发指南:SDK、Connect、CLI 与 REST API 完整教程
89 周安装
Excel自动化编程技能:使用ExcelJS、SheetJS、pandas、openpyxl创建、读取、修改XLSX文件
89 周安装
Reddit Ads API 自动化指南:编程创建、管理、优化广告活动
89 周安装
记忆任务管理:使用基础记忆架构管理工作进度与上下文恢复
89 周安装
React/Next.js高级质量保证工具:自动化测试、覆盖率分析与E2E测试脚手架
89 周安装
创建设计系统规则 - 为Figma到代码工作流定制AI生成规则,确保代码一致性
89 周安装