Skip to content

手把手教你ai顾投:训练 AI 看穿交易支撑与阻力的秘诀大公开

写在前面的话:在交易与技术分析的辽阔领域里,支撑位和阻力位无疑是交易者作出睿智决策的重要基石。它们是资产价格可能出现转向的潜在标识。支撑位犹如有力的下限保障,有效阻止价格继续下跌;阻力位恰似难以突破的上限限制,牢牢限制着价格的上升。准确判定这些水平,能够给交易者提供关于市场趋势和潜在进出点的宝贵看法。在本文当中,我们将深入剖析如何通过简单编程与数据训练,依照历史股票数据确定支撑位和阻力位。我们会循序渐进地完成获取数据、梳理数据并在价格图表上把这些关键水平加以可视化的操作步骤。

一、基础理论

  1. 支撑(Support):
    • 支撑是股价下方的一个区域,通常是价格在下跌过程中停止下跌并开始反弹的地方。
    • 在支撑下方,买方力量强大,足以抵抗卖方压力,从而减缓股价的下跌速度。
    • 当股价在支撑区域形成一个向上反弹的低点后,我们可以确定一个支撑水平。
    • 支撑位不仅仅是单一价格,而是一个区域,因为价格的运动惯性会在一定范围内发生。
  2. 阻力(Resistance):
    • 阻力是股价上方的一个区域,通常是价格在上涨过程中受到压力而停止上涨的地方。
    • 在阻力上方,卖方压力阻止了因买方购买而形成的上涨力量,导致股价由升转跌。
    • 阻力位也是一个区域,不仅仅是单一价格。
  3. 支撑和阻力的相互转换:
    • 当股价从上向下跌破支撑后,原有的支撑可能转变为阻力。
    • 反之,当股价从下向上突破阻力后,原有的阻力可能转变为支撑。

不管是支撑还是阻力,实际都是市场上交易者心理博弈形成的,只要相信支撑或者阻力的交易者越多,那么它成立的概率也就越大。

二、设置环境

首先,确保您安装了必要的库。使用 pip 安装它们。

pip install yfinance pandas matplotlib

1.获取历史股票数据

我们将用于获取特定股票的历史数据。在此示例中,我们将使用苹果公司作为我们的目标股票。

import yfinance as yf
Fetch historical data
ticker = 'AAPL'data
= yf.download(ticker, start='2015-01-01', end='2023-01-01')

2.计算分析周期

为了确定重要的支撑位和阻力位,我们将计算相当于数据集中总交易日10%的时间段。这段时间将帮助我们确定分析的窗口。


import pandas as pd
import matplotlib.pyplot as plt

total_days = data.shape[0]
period = int(total_days * 0.10) // 2

3.确定支撑位和阻力位

我们将定义一个函数来识别支撑位和阻力位。如果当天的低价是居中天窗口内的最低价格,则确定支撑位。同样,如果当天的最高价是同一窗口中的最高价,则确定阻力位。

def identify_support_resistance(df, period):
    support_levels = []
    resistance_levels = []
    
    for i in range(period, len(df) - period):
        # Find the lowest low and highest high in the past '2*period' days centered around 'i'
        low_period = df['Low'][i-period:i+period+1].min()
        high_period = df['High'][i-period:i+period+1].max()
        
        # Check if the current low is the lowest low in the centered period
        if df['Low'][i] == low_period:
            support_levels.append((i, df['Low'][i]))
        
        # Check if the current high is the highest high in the centered period
        if df['High'][i] == high_period:
            resistance_levels.append((i, df['High'][i]))
    
    return support_levels, resistance_levels

# Identify support and resistance levels
support_levels, resistance_levels = identify_support_resistance(data, period)

# Print identified levels
print("Identified Support Levels (Index, Price):")
for level in support_levels:
    print(level)

print("\nIdentified Resistance Levels (Index, Price):")
for level in resistance_levels:
    print(level)

4.可视化支撑位和阻力位

为了使我们的分析更加直观,我们将绘制股票的收盘价以及确定的支撑位和阻力位。

# Plotting the data with support and resistance levels
plt.figure(figsize=(12, 6))
plt.plot(data['Close'], label='Close Price', color='blue')

# Add horizontal lines for support and resistance levels
for level in support_levels:
    plt.axhline(y=level[1], linestyle='--', color='green', alpha=0.7, label='Support' if 'Support' not in plt.gca().get_legend_handles_labels()[1] else "")
for level in resistance_levels:
    plt.axhline(y=level[1], linestyle='--', color='red', alpha=0.7, label='Resistance' if 'Resistance' not in plt.gca().get_legend_handles_labels()[1] else "")

# Add legend
plt.legend()

plt.title(f'Support and Resistance Levels for {ticker}')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

5.解释结果

通过检查绘制的图表,您可以看到支撑位和阻力位如何与股票的价格走势保持一致。这些水平可以作为买入(接近支撑位)或卖出(接近阻力位)的潜在指标。

三、结论

在本文中,我们演示了如何使用 Python简单程序 以及识别和可视化给定股票的支撑位和阻力位。通过将此方法应用于您的分析,您可以更深入地了解市场趋势并做出更明智的交易决策。程序的灵活性允许您根据自己的特定需求和交易策略调整和增强这种方法。请记住,虽然支撑位和阻力位等技术分析工具可以提供有价值的见解,但它们只是综合交易策略的一部分。在做出任何交易决定之前,请务必考虑多种因素并进行彻底的研究。


Published inAI&Invest专栏

Be First to Comment

    发表回复