programgarden-core 1.9.4__tar.gz → 1.9.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/PKG-INFO +1 -1
  2. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/i18n/locales/en.json +1 -1
  3. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/i18n/locales/ko.json +1 -1
  4. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/base.py +2 -2
  5. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/realtime_stock.py +2 -1
  6. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/pyproject.toml +1 -1
  7. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/README.md +0 -0
  8. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/__init__.py +0 -0
  9. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/__init__.py +0 -0
  10. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/client.py +0 -0
  11. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/components.py +0 -0
  12. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/listener.py +0 -0
  13. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/mixins.py +0 -0
  14. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/products.py +0 -0
  15. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/sql.py +0 -0
  16. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/bases/storage.py +0 -0
  17. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/exceptions.py +0 -0
  18. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/expression/__init__.py +0 -0
  19. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/expression/evaluator.py +0 -0
  20. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/i18n/__init__.py +0 -0
  21. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/i18n/translator.py +0 -0
  22. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/korea_alias.py +0 -0
  23. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/__init__.py +0 -0
  24. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/connection_rule.py +0 -0
  25. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/credential.py +0 -0
  26. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/edge.py +0 -0
  27. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/event.py +0 -0
  28. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/exchange.py +0 -0
  29. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/field_binding.py +0 -0
  30. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/job.py +0 -0
  31. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/plugin_resource.py +0 -0
  32. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/resilience.py +0 -0
  33. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/resource.py +0 -0
  34. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/models/workflow.py +0 -0
  35. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/__init__.py +0 -0
  36. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/account_futures.py +0 -0
  37. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/account_korea_stock.py +0 -0
  38. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/account_stock.py +0 -0
  39. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/ai.py +0 -0
  40. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/backtest.py +0 -0
  41. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/backtest_futures.py +0 -0
  42. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/backtest_korea_stock.py +0 -0
  43. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/backtest_stock.py +0 -0
  44. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/broker.py +0 -0
  45. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/calculation.py +0 -0
  46. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/condition.py +0 -0
  47. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/data.py +0 -0
  48. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/data_futures.py +0 -0
  49. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/data_korea_stock.py +0 -0
  50. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/data_stock.py +0 -0
  51. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/display.py +0 -0
  52. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/event.py +0 -0
  53. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/fundamental_korea_stock.py +0 -0
  54. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/fundamental_stock.py +0 -0
  55. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/infra.py +0 -0
  56. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/market_external.py +0 -0
  57. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/open_orders_futures.py +0 -0
  58. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/open_orders_korea_stock.py +0 -0
  59. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/open_orders_stock.py +0 -0
  60. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/order.py +0 -0
  61. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/portfolio.py +0 -0
  62. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/realtime_futures.py +0 -0
  63. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/realtime_korea_stock.py +0 -0
  64. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/risk.py +0 -0
  65. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/symbol.py +0 -0
  66. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/symbol_futures.py +0 -0
  67. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/symbol_korea_stock.py +0 -0
  68. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/symbol_stock.py +0 -0
  69. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/nodes/trigger.py +0 -0
  70. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/presets/__init__.py +0 -0
  71. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/presets/news_analyst.json +0 -0
  72. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/presets/risk_manager.json +0 -0
  73. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/presets/strategist.json +0 -0
  74. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/presets/technical_analyst.json +0 -0
  75. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/registry/__init__.py +0 -0
  76. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/registry/credential_registry.py +0 -0
  77. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/registry/dynamic_node_registry.py +0 -0
  78. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/registry/node_registry.py +0 -0
  79. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/registry/plugin_registry.py +0 -0
  80. {programgarden_core-1.9.4 → programgarden_core-1.9.5}/programgarden_core/retry_executor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: programgarden-core
3
- Version: 1.9.4
3
+ Version: 1.9.5
4
4
  Summary: ProgramGarden Core - 노드 기반 DSL 핵심 타입 정의
5
5
  Author: 프로그램동산
6
6
  Author-email: coding@programgarden.com
@@ -158,7 +158,7 @@
158
158
  "nodes.OverseasStockOpenOrdersNode.name": "Stock Open Orders",
159
159
  "nodes.OverseasStockRealAccountNode.description": "Streams real-time overseas stock holdings, balance, open orders, and P&L via WebSocket with periodic REST sync. Account data updates automatically as market prices change. Configure sync_interval_sec for REST refresh frequency (10-3600 seconds), commission_rate, and tax_rate for accurate P&L calculation. stay_connected=true keeps the stream running continuously; false fetches once and disconnects. Typical connection: StockBrokerNode → StockRealAccountNode → ThrottleNode → [downstream logic].",
160
160
  "nodes.OverseasStockRealAccountNode.name": "Stock Real-Time Account",
161
- "nodes.OverseasStockRealMarketDataNode.description": "Streams real-time price, volume, and quote updates for overseas stocks via WebSocket. Every trade tick triggers downstream node execution. Outputs both OHLCV data and full market data (bid/ask, accumulated volume). stay_connected=true keeps the stream running; false gets a single update. Must use ThrottleNode before AI or HTTP nodes to prevent excessive execution. Real-time data is available for live trading only (not paper trading). Typical connection: StockBrokerNode → StockRealMarketDataNode → ThrottleNode → ConditionNode. Supported exchanges: NYSE, NASDAQ, AMEX.",
161
+ "nodes.OverseasStockRealMarketDataNode.description": "Streams real-time price and volume for overseas stocks via WebSocket using GSC (trade) TR. Order book (GSH) data is NOT included due to LS Securities API limitation — overseas stock real-time quotes do not provide per-level order quantities. Every trade tick triggers downstream node execution. Outputs OHLCV data and full market data (accumulated volume). stay_connected=true keeps the stream running; false gets a single update. Must use ThrottleNode before AI or HTTP nodes to prevent excessive execution. Real-time data is available for live trading only (not paper trading). Typical connection: StockBrokerNode → StockRealMarketDataNode → ThrottleNode → ConditionNode. Supported exchanges: NYSE, NASDAQ, AMEX.",
162
162
  "nodes.OverseasStockRealMarketDataNode.name": "Stock Real-Time Data",
163
163
  "nodes.OverseasStockRealOrderEventNode.description": "Receives real-time overseas stock order events via WebSocket, including order accepted, filled, modified, cancelled, and rejected notifications (AS0-AS4 protocols). Each event type routes to a dedicated output port for targeted downstream processing. Use event_filter to subscribe to specific event types or 'all'. stay_connected=true keeps listening continuously. Typical connection: StockBrokerNode → StockRealOrderEventNode → TelegramNode (for fill alerts) or → NewOrderNode (for order-driven logic).",
164
164
  "nodes.OverseasStockRealOrderEventNode.name": "Stock Order Event",
@@ -158,7 +158,7 @@
158
158
  "nodes.OverseasStockOpenOrdersNode.name": "해외주식 미체결 조회",
159
159
  "nodes.OverseasStockRealAccountNode.description": "WebSocket으로 해외주식 보유종목, 잔고, 미체결, 손익을 실시간 스트리밍하며 주기적 REST 동기화를 수행합니다. 시세 변동에 따라 계좌 데이터가 자동 갱신됩니다. sync_interval_sec으로 REST 갱신 주기(10-3600초), commission_rate와 tax_rate으로 정확한 손익 계산을 설정합니다. stay_connected=true로 연속 스트리밍; false면 1회 조회 후 연결 해제. 일반적인 연결: StockBrokerNode → StockRealAccountNode → ThrottleNode → [하위 로직].",
160
160
  "nodes.OverseasStockRealAccountNode.name": "해외주식 실시간 계좌",
161
- "nodes.OverseasStockRealMarketDataNode.description": "WebSocket으로 해외주식 종목의 현재가, 거래량, 호가를 실시간 스트리밍합니다. 매 체결 틱마다 하위 노드가 실행됩니다. 출력: OHLCV 데이터, 전체 시세(매수/매도 호가, 누적 거래량). stay_connected=true로 연속 스트리밍; false면 1회 업데이트. AI/HTTP 노드 연결 전 ThrottleNode 필수. 해외주식 실시간 데이터는 실전투자만 지원(모의투자 불가). 일반적인 연결: StockBrokerNode → StockRealMarketDataNode → ThrottleNode → ConditionNode. 지원 거래소: NYSE, NASDAQ, AMEX.",
161
+ "nodes.OverseasStockRealMarketDataNode.description": "WebSocket으로 해외주식 종목의 현재가, 거래량을 실시간 스트리밍합니다. GSC(체결) TR을 사용하며, 호가(GSH) 데이터는 포함되지 않습니다(LS증권 API 제약으로 해외주식 실시간 호가는 개별 단계별 잔량 미제공). 매 체결 틱마다 하위 노드가 실행됩니다. 출력: OHLCV 데이터, 전체 시세(누적 거래량). stay_connected=true로 연속 스트리밍; false면 1회 업데이트. AI/HTTP 노드 연결 전 ThrottleNode 필수. 해외주식 실시간 데이터는 실전투자만 지원(모의투자 불가). 일반적인 연결: StockBrokerNode → StockRealMarketDataNode → ThrottleNode → ConditionNode. 지원 거래소: NYSE, NASDAQ, AMEX.",
162
162
  "nodes.OverseasStockRealMarketDataNode.name": "해외주식 실시간 시세",
163
163
  "nodes.OverseasStockRealOrderEventNode.description": "WebSocket으로 해외주식 주문 이벤트를 실시간 수신합니다. 접수, 체결, 정정, 취소, 거부 알림을 포함합니다(AS0-AS4 프로토콜). 각 이벤트 유형이 전용 출력 포트로 라우팅되어 타겟 하위 처리가 가능합니다. event_filter로 특정 이벤트만 구독하거나 'all'로 전체 수신. stay_connected=true로 연속 수신. 일반적인 연결: StockBrokerNode → StockRealOrderEventNode → TelegramNode (체결 알림) 또는 → NewOrderNode (주문 기반 로직).",
164
164
  "nodes.OverseasStockRealOrderEventNode.name": "해외주식 주문 이벤트",
@@ -308,8 +308,8 @@ MARKET_DATA_FULL_FIELDS: List[Dict[str, str]] = [
308
308
  {"name": "exchange", "type": "string", "description": "거래소 코드"},
309
309
  {"name": "symbol", "type": "string", "description": "종목코드"},
310
310
  {"name": "current_price", "type": "number", "description": "현재가"},
311
- {"name": "bid_price", "type": "number", "description": "매수호가"},
312
- {"name": "ask_price", "type": "number", "description": "매도호가"},
311
+ {"name": "bid_price", "type": "number", "description": "매수호가 (해외주식 실시간에서는 미제공)"},
312
+ {"name": "ask_price", "type": "number", "description": "매도호가 (해외주식 실시간에서는 미제공)"},
313
313
  {"name": "volume", "type": "number", "description": "거래량"},
314
314
  {"name": "change_percent", "type": "number", "description": "등락률 (%)"},
315
315
  {"name": "timestamp", "type": "string", "description": "시세 시각"},
@@ -35,7 +35,8 @@ class OverseasStockRealMarketDataNode(BaseNode):
35
35
  """
36
36
  해외주식 실시간 시세 노드
37
37
 
38
- WebSocket을 통해 해외주식 실시간 시세(가격, 거래량, 호가)를 수신합니다.
38
+ WebSocket을 통해 해외주식 실시간 체결 데이터(가격, 거래량)를 수신합니다.
39
+ GSC(체결) TR을 사용하며, 호가(GSH) 데이터는 포함되지 않습니다.
39
40
  거래소: NYSE, NASDAQ, AMEX
40
41
  """
41
42
 
@@ -5,7 +5,7 @@ authors = [
5
5
  homepage = "https://programgarden.com"
6
6
  requires-python = ">=3.12"
7
7
  name = "programgarden-core"
8
- version = "1.9.4"
8
+ version = "1.9.5"
9
9
  description = "ProgramGarden Core - 노드 기반 DSL 핵심 타입 정의"
10
10
  readme = "README.md"
11
11