Files
NewQuant/futures_trading_strategies/test/TestConnectionStrategy.py

52 lines
1.7 KiB
Python
Raw Permalink Normal View History

import numpy as np
from scipy.signal import stft
from datetime import datetime, timedelta
from typing import Optional, Any, List, Dict
from src.core_data import Bar, Order
from src.indicators.base_indicators import Indicator
from src.indicators.indicators import Empty, NormalizedATR, AtrVolatility
from src.strategies.base_strategy import Strategy
# =============================================================================
# 策略实现 (SpectralTrendStrategy)
# =============================================================================
class TestConnectionStrategy(Strategy):
"""
频域能量相变策略 - 捕获肥尾趋势
核心哲学:
1. 显式傅里叶变换: 直接分离低频(趋势)高频(噪音)能量
2. 相变临界点: 仅当低频能量占比 > 阈值时入场
3. 低频交易: 每月仅2-5次信号持仓数日捕获肥尾
4. 完全参数化: 无硬编码适配任何市场时间结构
参数说明:
- bars_per_day: 市场每日K线数量 (e.g., 23 for 15min US markets)
- low_freq_days: 低频定义下限 (), 默认2.0
- high_freq_days: 高频定义上限 (), 默认1.0
"""
def __init__(
self,
context: Any,
main_symbol: str,
enable_log: bool,
):
super().__init__(context, main_symbol, enable_log)
# --- 内部状态变量 ---
self.main_symbol = main_symbol
def on_open_bar(self, open_price: float, symbol: str):
self.log(f'on open bar: {symbol}')
def on_init(self):
super().on_init()
def on_rollover(self, old_symbol: str, new_symbol: str):
super().on_rollover(old_symbol, new_symbol)