1. 首页 > 财经快讯

股票走势图代码( 布林线和KDJ指标交易策略 (Python))

BOOL(布林线)指标是一种技术分析工具,基于统计学原理,用以判断价格趋势是否偏离正常分布。

KDJ指标,又称随机指标,是一种用于研究股票价格波动情况的技术指标。KDJ指标的主要作用是指标的形态变化能够较为准确地反映股价的波动情况。

下面是将两种指标结合使用的交易策略:

  1. 使用BOOL指标确定市场方向

当价格向布林线下轨反弹时,市场处于超卖状态,此时买入;当价格向布林线上轨反弹时,市场处于超买状态,此时卖出。就此价格趋势的方向进行交易决策。

  1. 确定进场和离场时机

在市场确定方向时,可采用KDJ指标来确定进场和离场的时机。当KDJ指标的K线上穿D线时,代表价格处于向上趋势,此时买入;当KDJ指标的K线下穿D线时,代表价格处于向下趋势,此时卖出。

  1. 设置风险控制止损

无论何时,都需要保持风险控制止损的策略,避免损失扩大。在进行交易时,可以通过设置止损点,当价格突破了止损点时,就立即离场。

请注意,这只是一个简单的交易策略,市场情况会不断变化,需要及时调整策略。同时,也需要具备一定的交易经验和风险意识,不要投入过多的资金,遵循科学的资金管理原则,降低交易风险。

这份代码示例将使用Python语言实现上述所述的交易策略,同时,本示例使用的是tushare库来获取股票数据,并使用matplotlib库来绘制相关图形。

import tushare as ts
import matplotlib.pyplot as plt

# 获取股票数据
data = ts.get_k_data('000001', start='2022-01-01', end='2023-06-26')

# 设置BOOL参数,通常设定为20天移动平均线
n = 20
data['MA'] = data['close'].rolling(n).mean()
data['std'] = data['close'].rolling(n).std()

# 设置KDJ指标参数,通常设置为9天、3天、3天
m1 = 9
m2 = 3
m3 = 3
for i in range(n, len(data)):
    c = data['close'][i-n:i+1]
    h = data['high'][i-n:i+1]
    l = data['low'][i-n:i+1]
    rsv = (c - l.min()) / (h.max() - l.min()) * 100
    data.loc[i, 'K'] = rsv.ewm(com=m1-1).mean()
    data.loc[i, 'D'] = data['K'][i-m2:i+1].mean()
    data.loc[i, 'J'] = 3 * data['K'][i] - 2 * data['D'][i]

# 绘制图表
plt.figure(figsize=(15, 10))
plt.plot(data['date'], data['close'], label='close')
plt.plot(data['date'], data['MA'], label='MA')
plt.fill_between(data['date'], data['MA']-2*data['std'], data['MA']+2*data['std'], alpha=0.3)
plt.legend()
plt.xticks(rotation=45)
plt.ylabel('Price')
plt.title('Stock Analysis')
plt.grid()
plt.show()

# 交易策略
buy_price = []
sell_price = []
flag = -1
for i in range(n, len(data)):
    # BOOL交易策略
    if data['close'][i] > data['MA'][i]+2*data['std'][i] and flag != 1:
        buy_price.append(data['close'][i])
        sell_price.append(None)
        flag = 1
    elif data['close'][i] < data['MA'][i]-2*data['std'][i] and flag != 0:
        buy_price.append(None)
        sell_price.append(data['close'][i])
        flag = 0
    else:
        buy_price.append(None)
        sell_price.append(None)

    # KDJ交易策略
    if data['K'][i] > data['D'][i] and data['K'][i-1] <= data['D'][i-1] and flag != 1:
        buy_price.append(data['close'][i])
        sell_price.append(None)
        flag = 1
    elif data['K'][i] < data['D'][i] and data['K'][i-1] >= data['D'][i-1] and flag != 0:
        buy_price.append(None)
        sell_price.append(data['close'][i])
        flag = 0
    else:
        buy_price.append(None)
        sell_price.append(None)

# 绘制交易信号图表
plt.figure(figsize=(15, 10))
plt.plot(data['date'], data['close'], label='close')
plt.plot(data['date'], data['MA'], label='MA')
plt.fill_between(data['date'], data['MA']-2*data['std'], data['MA']+2*data['std'], alpha=0.3)
plt.plot(data['date'], buy_price, '^', markersize=10, color='green', label='buy')
plt.plot(data['date'], sell_price, 'v', markersize=10, color='red', label='sell')
plt.legend()
plt.xticks(rotation=45)
plt.ylabel('Price')
plt.title('Trading Signal')
plt.grid()
plt.show()

在上述代码中,我们首先使用tushare库获取股票数据,并针对20天周期应用布林线和KDJ指标。然后,我们使用matplotlib库将股票价格走势、均线、布林线以及交易信号绘制成图。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ15101117,本站将立刻清除。

联系我们

在线咨询:点击这里给我发消息

微信号:666666