编写了一个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”文件,请根据实际情况修改文件路径或使用其他方式获取数据。以上代码仅用于软件学习研究之用。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/984787
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!