from typing import TypedDict

from ldnode.calculator.schemas.enumerations import GridType


class GridBacktestParameters(TypedDict):
    """
    网格回测参数
    """
    code: str # 代码
    start_date: str # 开始日期
    end_date: str # 结束日期
    grid_count: int # 网格数量
    grid_type: GridType # 网格类型
    grid_c_rate: float # 佣金率
    stop_on_top: bool # 向上破网后停止
    grid_range: list[int] # 网格价格范围


class GridBacktestResult(TypedDict):
    """
    网格回测结果
    """
    start_time: str # 开始时间
    start_pos: int # 开始持仓
    start_pos_val: float # 开始持仓价值
    start_cash: float # 开始现金
    end_time: str # 结束时间
    end_pos: int # 结束持仓
    end_pos_val: float # 结束持仓价值
    end_cash: float # 结束现金
    end_asset: float # 结束资产
    times: str # 交易天数
    cash_mean: float # 现金均值
    cash_max: float # 现金最大值
    grid_return_acc: float # 网格收益累计
