使用Python编写一个简单的股票KDJ交易策略
编写了一个kdj交易策略模板,用户自已去优化吧。
import pandas as pd
import numpy as np
# 计算KDJ指标
def calculate_kdj(df, n=9, m1=3, m2=3):
df[‘lowest_low’] = df[‘low’].rolling(window=n).min()
df[‘highest_high’] = df[‘high’].rolling(window=n).max()
df[‘rsv’] = (df[‘close’] – df[‘lowest_low’]) / (df[‘highest_high’] – df[‘lowest_low’]) * 100
df[‘kdj_k’] = df[‘rsv’].ewm(com=m1-1).mean()
df[‘kdj_d’] = df[‘kdj_k’].ewm(com=m2-1).mean()
df[‘kdj_j’] = 3 * df[‘kdj_k’] – 2 * df[‘kdj_d’]
return df
# 简单的KDJ交易策略
def kdj_strategy(df):
position = 0 # 仓位,0表示空仓,1表示多仓
for i in range(1, len(df)):
# 当K线上穿D线时,买入
if df.loc[i-1, ‘kdj_k’] < df.loci-1 kdj_d and df.loci kdj_k> df.loc[i, ‘kdj_d’]:
if position == 0:
print(“买入:”, df.loc[i, ‘close’])
position = 1
# 当K线下穿D线时,卖出
elif df.loc[i-1, ‘kdj_k’] > df.loc[i-1, ‘kdj_d’] and df.loc[i, ‘kdj_k’] < df.loc[i, ‘kdj_d’]:
if position == 1:
print(“卖出:”, df.loc[i, ‘close’])
position = 0
# 读取数据
df = pd.read_csv(‘data.csv’)
# 计算KDJ指标
df = calculate_kdj(df)
# 执行KDJ交易策略
kdj_strategy(df)
上述代码中,calculate_kdj函数用于计算KDJ指标,kdj_strategy函数实现了简单的KDJ交易策略。您可以根据实际需求进行修改和优化。另外,代码中的数据来源于”data.csv”文件,请根据实际情况修改文件路径或使用其他方式获取数据。以上代码仅用于软件学习研究之用。
版权说明:
1.版权归本网站或原作者所有;
2.未经本网或原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。