Files
sanguo_quant_live/graphify-out/cache/ast/c878496a5b3ea862aae1e6a7afa1fa5965a2bbf7b305238e116e2d7c28bdec56.json
T
2026-05-06 23:13:05 +08:00

1 line
25 KiB
JSON

{"nodes": [{"id": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "label": "technical_selection_strategies_backtest.py", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L1"}, {"id": "02_algorithms_technical_selection_strategies_backtest_trade", "label": "Trade", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L24"}, {"id": "02_algorithms_technical_selection_strategies_backtest_backtestresult", "label": "BacktestResult", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L42"}, {"id": "02_algorithms_technical_selection_strategies_backtest_technicalindicators", "label": "TechnicalIndicators", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L63"}, {"id": "02_algorithms_technical_selection_strategies_backtest_calculate_sma", "label": "calculate_sma()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L67"}, {"id": "02_algorithms_technical_selection_strategies_backtest_calculate_ema", "label": "calculate_ema()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L72"}, {"id": "02_algorithms_technical_selection_strategies_backtest_calculate_macd", "label": "calculate_macd()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L77"}, {"id": "02_algorithms_technical_selection_strategies_backtest_calculate_bollinger_bands", "label": "calculate_bollinger_bands()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L93"}, {"id": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "label": "calculate_donchian_channel()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L107"}, {"id": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "label": "calculate_atr()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L119"}, {"id": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy", "label": "MACDDivergenceStrategy", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L139"}, {"id": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L155"}, {"id": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy_check_buy_signal", "label": ".check_buy_signal()", "file_type": "code", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L165"}, {"id": "02_algorithms_technical_selection_strategies_backtest_rationale_1", "label": "\u6280\u672f\u9009\u80a1\u7b56\u7565\u56de\u6d4b\u6846\u67b6 \u5b9e\u73b0\u4e09\u79cd\u63a8\u8350\u7b56\u7565\uff1a 1. MACD\u5e95\u80cc\u79bb+\u5747\u7ebf 2. \u5e03\u6797\u5e26\u4e0b\u8f68+\u8d8b\u52bf 3. \u5510\u5947\u5b89\u901a\u9053\u7a81\u7834 \u4f5c\u8005\uff1a\u5f20\u98de \u65e5\u671f\uff1a2026\u5e743\u670824\u65e5", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L1"}, {"id": "02_algorithms_technical_selection_strategies_backtest_rationale_81", "label": "\u8ba1\u7b97MACD \u8fd4\u56de: (DIF, DEA, MACD)", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L81"}, {"id": "02_algorithms_technical_selection_strategies_backtest_rationale_96", "label": "\u8ba1\u7b97\u5e03\u6797\u5e26 \u8fd4\u56de: (\u4e0a\u8f68, \u4e2d\u8f68, \u4e0b\u8f68)", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L96"}, {"id": "02_algorithms_technical_selection_strategies_backtest_rationale_110", "label": "\u8ba1\u7b97\u5510\u5947\u5b89\u901a\u9053 \u8fd4\u56de: (\u4e0a\u8f68, \u4e0b\u8f68)", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L110"}, {"id": "02_algorithms_technical_selection_strategies_backtest_rationale_140", "label": "MACD\u5e95\u80cc\u79bb + \u5747\u7ebf\u8fc7\u6ee4\u7b56\u7565 \u4e70\u5165\u6761\u4ef6: 1. \u80a1\u4ef7\u521b\u8fd1\u671f\u65b0\u4f4e\uff0820\u65e5\u6700\u4f4e\uff09 2. MACD DIF\u503c\u6ca1\u6709\u521b\u65b0\u4f4e\uff08\u5e95\u80cc\u79bb\uff09", "file_type": "rationale", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L140"}], "edges": [{"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "numpy", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L12", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L13", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L14", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L15", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L16", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L17", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_trade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L24", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_backtestresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L42", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_technicalindicators", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L63", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_sma", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L67", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_ema", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L72", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_macd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L77", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_bollinger_bands", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L93", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L107", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L119", "weight": 1.0}, {"source": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "target": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L139", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy", "target": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L155", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy", "target": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy_check_buy_signal", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L165", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_calculate_macd", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_ema", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L85", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_calculate_bollinger_bands", "target": "02_algorithms_technical_selection_strategies_backtest_calculate_sma", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L100", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_rationale_1", "target": "users_chufeng_openclaw_sanguo_projects_sanguo_quant_live_zhangfei_technical_02_algorithms_technical_selection_strategies_backtest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L1", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_rationale_81", "target": "02_algorithms_technical_selection_strategies_backtest_technicalindicators_calculate_macd", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L81", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_rationale_96", "target": "02_algorithms_technical_selection_strategies_backtest_technicalindicators_calculate_bollinger_bands", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L96", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_rationale_110", "target": "02_algorithms_technical_selection_strategies_backtest_technicalindicators_calculate_donchian_channel", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L110", "weight": 1.0}, {"source": "02_algorithms_technical_selection_strategies_backtest_rationale_140", "target": "02_algorithms_technical_selection_strategies_backtest_macddivergencestrategy", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L140", "weight": 1.0}], "raw_calls": [{"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_sma", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L69"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_sma", "callee": "rolling", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L69"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_sma", "callee": "Series", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L69"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_ema", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L74"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_ema", "callee": "ewm", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L74"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_ema", "callee": "Series", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L74"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_bollinger_bands", "callee": "std", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L101"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_bollinger_bands", "callee": "rolling", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L101"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_bollinger_bands", "callee": "Series", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L101"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "callee": "max", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L114"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "callee": "rolling", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L114"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "callee": "Series", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L114"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "callee": "min", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L115"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "callee": "rolling", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L115"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_donchian_channel", "callee": "Series", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L115"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "zeros", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L124"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L124"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "range", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L126"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "len", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L126"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "abs", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L131"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "abs", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L132"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "max", "is_member_call": false, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L133"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "mean", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L135"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "rolling", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L135"}, {"caller_nid": "02_algorithms_technical_selection_strategies_backtest_calculate_atr", "callee": "Series", "is_member_call": true, "source_file": "/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhangfei-technical/02-algorithms/technical_selection_strategies_backtest.py", "source_location": "L135"}]}