如何创建一个函数来测试 Python 中交易算法的不同标准?

问题描述 投票:0回答:0

在 Python 语言中,我想测试一个交易算法的几个规则。 我有 2 个过滤器(知道交易条件是好是坏)、2 个进入信号和 2 个退出信号。

我想创建一个可以一起测试不同规则组合的函数。 怎么办?

在作为示例附加的代码中,我自愿减少了标准数量(2 个过滤器、2 个输入和 2 个输出,因此有 8 个组合)。最终目标是能够使用根据大量不同标准创建的函数:

我导入数据和库

!pip install yfinance
import yfinance as yf
import pandas as pd
import numpy as np

df = yf.download('QQQ',period = '60d', interval = '5m')

我创造我的特征:

df['sma20'] =  df['Close'].rolling(20).mean() # sma 20 periods
df['sma50'] =  df['Close'].rolling(50).mean() # sma 50 periods
df['trend_up_sma20_50'] = np.where((df['sma20'] > df['sma50']), 1,0) # sma20 > sma50
df['slope_up_sma20'] = np.where((df['sma20'] > df['sma20'].shift(periods = 1)), 1,0) # slope of the sma20 rises

df['green'] = df['Open'] > df['Close'] # green candlestick
df['consecutive_green'] = df['green'] & df['green'].shift(periods=1) & df['green'].shift(periods=2) # 2 consecutive green candle
df['green_engulfing'] = np.where((df['Close'] > df['Open']) &
                           (df['Close'] > df['High'].shift(periods = 1)) &
                           (df['Open'])<df['Low'], 1,0) # engulfing candlestick

df['red'] = df['Open'] < df['Close'] # red candlestick
df['reverse'] = np.where((df['Close'] < df['sma20']), 1,0) # close < sma20

这里是我想一起测试的条件(本例中有 8 个组合):

filter = df['trend_up_sma20_50'] | df['slope_up_sma20']
signal_buy = df['consecutive_green'] | df['green_engulfing']  
signal_close_buy = df['red'] | df['reverse']
python pandas trading algorithmic-trading
© www.soinside.com 2019 - 2024. All rights reserved.