Strategy Development
Helps design, implement, and formalize trading strategies.
Real Code Reference
tradinglearn/strategies/macd_strategy.py— Example:MACDStrategywithgenerate_signals(data) -> DataFrametradinglearn/pytdx2/backtest.py—BaseStrategywithbuy_condition()/sell_condition()/update_position()tradinglearn/pytdx2/evftrade/BaseStrategy.py— AbstractBaseStrategywithbuy_condition(price, time)/sell_condition(price, time)tradinglearn/pytdx2/macd_strategy.py—MACDStrategy(BaseStrategy)implementationtradinglearn/pytdx2/large_trade_model.py—LargeTradeStrategywith risk controls
Process
- Requirements — timeframe, instruments, risk tolerance, return targets
- Signal logic — entry conditions, exit conditions, filters
- Position sizing — fixed fraction, Kelly criterion, volatility-based
- Risk management — stop-loss, take-profit, trailing stops
- Implementation — code as a class with
generate_signals(data) -> DataFrame - Validation — walk-forward analysis, out-of-sample testing, overfitting checks
Strategy Template (follow tradinlearn convention)
class MyStrategy:
def __init__(self, param1=default, param2=default):
self.param1 = param1
self.param2 = param2
def generate_signals(self, data: pd.DataFrame) -> pd.DataFrame:
"""Return DataFrame with 'position' column: 1=long, 0=flat, -1=short."""
signals = pd.DataFrame(index=data.index)
signals['position'] = 0
# ... signal logic using data['close'], data['volume'], etc.
return signals
Key Principles
- Never use future data in signal calculation
- Test on out-of-sample periods separate from optimization
- Account for transaction costs and slippage in backtest
- Keep strategies explainable — complexity should be justified