backend redesign
This commit is contained in:
40
backend.old/src/schema/indicator.py
Normal file
40
backend.old/src/schema/indicator.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from typing import Dict, Any, Optional, List
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class IndicatorInstance(BaseModel):
|
||||
"""
|
||||
Represents an instance of an indicator applied to a chart.
|
||||
|
||||
This schema holds both the TA-Lib metadata and TradingView-specific data
|
||||
needed for synchronization.
|
||||
"""
|
||||
id: str = Field(..., description="Unique identifier for this indicator instance")
|
||||
|
||||
# TA-Lib metadata
|
||||
talib_name: str = Field(..., description="TA-Lib indicator name (e.g., 'RSI', 'SMA', 'MACD')")
|
||||
instance_name: str = Field(..., description="User-friendly instance name")
|
||||
parameters: Dict[str, Any] = Field(default_factory=dict, description="TA-Lib indicator parameters")
|
||||
|
||||
# TradingView metadata
|
||||
tv_study_id: Optional[str] = Field(default=None, description="TradingView study ID assigned by the chart widget")
|
||||
tv_indicator_name: Optional[str] = Field(default=None, description="TradingView indicator name if different from TA-Lib")
|
||||
tv_inputs: Optional[Dict[str, Any]] = Field(default=None, description="TradingView-specific input parameters")
|
||||
|
||||
# Visual properties
|
||||
visible: bool = Field(default=True, description="Whether indicator is visible on chart")
|
||||
pane: str = Field(default="chart", description="Pane where indicator is displayed ('chart' or 'separate')")
|
||||
|
||||
# Metadata
|
||||
symbol: Optional[str] = Field(default=None, description="Symbol this indicator is applied to")
|
||||
created_at: Optional[int] = Field(default=None, description="Creation timestamp (Unix seconds)")
|
||||
modified_at: Optional[int] = Field(default=None, description="Last modification timestamp (Unix seconds)")
|
||||
original_id: Optional[str] = Field(default=None, description="Original ID from backend before TradingView assigns its own ID")
|
||||
|
||||
|
||||
class IndicatorCollection(BaseModel):
|
||||
"""Collection of all indicator instances on the chart."""
|
||||
indicators: Dict[str, IndicatorInstance] = Field(
|
||||
default_factory=dict,
|
||||
description="Dictionary of indicator instances keyed by ID"
|
||||
)
|
||||
Reference in New Issue
Block a user