小散炒股一般学习哪些知识 (股市小散王教学课程免费听)

#谈谈股市,中低收入者能否靠它翻身#

小散进入股市首先得明白股市的本质就是一场我买你卖的零博弈游戏,那我们最大对手盘“主力”,他们有雄厚的资金,技术支持团队,以及各种消息灵通。 我们小散有个唯一的优势,就是船小好掉头,我们这艘小船是顺风,逆风还是大浪快来了,如何准确判断,那么需要学习大量的技术指标,算法指标,财务风险,你想想那些个基金公司的人都高强度的工作,我们想不学习,佛系挣钱,你觉得可能吗?

(1)指标有用论

相信技术指标有用论是我们最大的信念和动力。

有一句名言:股市没有新鲜事,投机像群山一样古老,亘古长存,从未改变。股市上今天发生的事,过去曾经发生过,将来还会再次发生。

对过去的数据进行技术分析来预测未来的走势从概率学,统计学,数学的角度是完全科学和可实施的,所以才会有各种的技术指标,算法分析等等。

那么问题来了,股市小散看过各种技术书籍,各种技术指标难记于心的不乏少数,但是市场永远是二八定律,技术指标在手,亏的人远远占大多数。

道理很简单,技术指标不会骗人,程序不会骗人,但是股市是这个世界上最复杂,最具欺骗性的博弈游戏,既然所有技术指标都是根据以往的数据进行计算来预测未来,*家庄**可以利用大量资金技术和时间来做出虚假技术指标来骗小散入局,简称骗线,还有重要的一点,股市是对人性最大的考验,所有的技术指标不能100%的预测未来,胜算概率超过6成已经很完美了,这也是量化交易大行其道,机器没有感情,按照算法自动交易,挣钱肯定大于亏钱。所有我们要学透技术指标

小散炒股如何操作强势股,小散炒股怎么赚钱

3)常见技术指标

技术指标总几十种,简单的介绍一下几个常见的

(1)指标之王MACD

MACD(Moving Average Convergence / Divergence),平滑异同平均线。是利用收盘价的短期(常用为12日)指数移动平均线与长期(常用为26日)指数移动平均线之间的聚合与分离状况,对买进、卖出时机作出研判的技术指标。

MACD指标是最著名的趋势性指标,其主要特点是稳健性,这种指标不过度灵敏的特性对短线而言固然有过于缓慢的缺点,但正如此也决定其能在周期较长、数据数目较多行情中给出相对稳妥的趋势指向。

当MACD从负数转向正数,是买的信号。当MACD从正数转向负数,是卖的信号。当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。

使用方法 : 随股价上升MACD翻红,即白线上穿黄线(先别买),其后随股价回落,DIF(白线)向MACD(黄线)靠拢,当白线与黄线粘合时(要翻绿未翻绿),此时只需配合日K线即可,当此时K线有止跌信号,如:收阳,十字星等.(注意,在即将白黄粘合时就要开始盯盘囗,观察卖方力量),若此时能止跌称其为”底背驰”.

底背驰是买入的最佳时机!当股价高位回落,MACD翻绿,再度反弹,此时当DIF(白线)与MACD(黄线)粘合时{要变红未变红}若有受阻,如收阴,十字星等,就有可能”顶背驰”是最后的卖出良机!

如果懂程序的,给您一段代码测试买卖点:

import baostock as bs
import pandas as pd
import talib as ta
import matplotlib.pyplot as plt
 
 
def computeMACD(code, startdate, enddate):
   
    # 获取股票日 K 线数据
    rs = bs.query_history_k_data(code,
                                 "date,code,close,tradeStatus",
                                 start_date=startdate,
                                 end_date=enddate,
                                 frequency="d", adjustflag="3")
    # 打印结果集
    result_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        result_list.append(rs.get_row_data())
        df = pd.DataFrame(result_list, columns=rs.fields)
        # 剔除停盘数据
        df2 = df[df['tradeStatus'] == '1']
        # 获取 dif,dea,hist,它们的数据类似是 tuple,且跟 df2 的 date 日期一一对应
        # 记住了 dif,dea,hist 前 33 个为 Nan,所以推荐用于计算的数据量一般为你所求日期之间数据量的 3 倍
    # 这里计算的 hist 就是 dif-dea,而很多证券商计算的 MACD=hist*2=(difdea)*2
    dif, dea, hist = ta.MACD(df2['close'].astype(float).values, fastperiod=12, slowperiod=26, signalperiod=9)
    df3 = pd.DataFrame({'dif': dif[33:], 'dea': dea[33:], 'hist':hist[33:]},index=df2['date'][33:], columns=['dif', 'dea','hist'])
    df3.plot(title='MACD')
    plt.show()
    # 寻找 MACD 金叉和死叉
    datenumber = int(df3.shape[0])
    for i in range(datenumber - 1):
        if ((df3.iloc[i, 0] <= df3.iloc[i, 1]) & (df3.iloc[i + 1, 0] >= df3.iloc[i + 1, 1])):
            print("MACD 金叉的日期:" + df3.index[i + 1])
    if ((df3.iloc[i, 0] >= df3.iloc[i, 1]) & (df3.iloc[i + 1, 0] <=df3.iloc[i + 1, 1])):
        print("MACD 死叉的日期:" + df3.index[i + 1])
    bs.logout()
    return (dif, dea, hist)
if __name__ == '__main__':
    code = 'sh.600118'
    startdate = '2022-03-01'
    enddate = '2023-12-20'
    (dif, dea, hist) = computeMACD(code, startdate, enddate)
 
 
#显示结果:MACD 金叉的日期:2023-02-21
MACD 金叉的日期:2023-05-10
MACD 金叉的日期:2023-05-17
MACD 金叉的日期:2023-05-29
MACD 金叉的日期:2023-08-31
MACD 金叉的日期:2023-10-10
MACD 金叉的日期:2023-11-03


小散炒股如何操作强势股,小散炒股怎么赚钱

2)随机指标KDJ

KDJ指标是比较综合的技术指标,它结合了股票市场趋势和股票价格缩量的两个条件。KDJ指标由K、D、J三个曲线组成,是通过对随机指标加以改进而发展出来的。一般投资者常用的参数为9、3、3。当KDJ曲线形态出现明显的底部、顶部、轮廓时,就说明多空形势已经发生变化,投资者可以在此时买入或卖出。(kdj指标对周线判断更加准确,日线最好结合其他指标)

# !/usr/bin/env python
# coding=utf-8
import matplotlib.pyplot as plt
import pandas as pd
import pandas
from mpl_finance import candlestick2_ochl
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter
import tkinter.messagebox
import efinance as ef
# 计算KDJ
plt.rcParams['font.family'] = 'Heiti TC'
plt.rcParams['font.sans-serif'] = ['SimHei']
def calKDJ(df):
    df['MinLow'] = df['low'].rolling(9, min_periods=9).min()
    # 填充NaN数据
    df['MinLow'].fillna(value = df['low'].expanding().min(), inplace = True)
    df['MaxHigh'] = df['high'].rolling(9, min_periods=9).max()
    df['MaxHigh'].fillna(value = df['high'].expanding().max(), inplace = True)
    df['RSV'] = (df['close'] - df['MinLow']) / (df['MaxHigh'] - df['MinLow']) * 100
    for i in range(len(df)):
        if i==0:    # 第一天
            df.loc[i,'K']=50
            df.loc[i,'D']=50
        if i>0:
            df.loc[i,'K']=df.loc[i-1,'K']*2/3 + 1/3*df.loc[i,'RSV']
            df.loc[i,'D']=df.loc[i-1,'D']*2/3 + 1/3*df.loc[i,'K']
        df.loc[i,'J']=3*df.loc[i,'K']-2*df.loc[i,'D']
    return df
# 绘制KDJ线
def drawKDJAndKLine(stockCode,startDate,endDate):
    df = ef.stock.get_quote_history(stockCode)
    # 将数据存储到 csv 文件中
    df.to_csv(f'{stockCode}.csv', encoding='utf-8-sig', index=None)
    filename=stockCode+startDate+endDate+'.csv'
    getStockDataFromAPI(stockCode,startDate,endDate)
    df = pd.read_csv('600276.csv')
    stockDataFrame = calKDJ(df)
    # 创建子图
    (axPrice, axKDJ) = figure.subplots(2, sharex=True)
    # 调用方法,在第axPrice子图中绘制K线图
    candlestick2_ochl(ax = axPrice,
                  opens=stockDataFrame["open"].values, closes=stockDataFrame["close"].values,
                  highs=stockDataFrame["high"].values, lows=stockDataFrame["low"].values,
                  width=0.75, colorup='red', colordown='green')
    axPrice.set_title("K线图和均线图")    # 设置子图标题
    stockDataFrame['close'].rolling(window=3).mean().plot(ax=axPrice,color="red",label='3日均线')
    stockDataFrame['close'].rolling(window=5).mean().plot(ax=axPrice,color="blue",label='5日均线')
    stockDataFrame['close'].rolling(window=10).mean().plot(ax=axPrice,color="green",label='10日均线')
    axPrice.legend(loc='best')      # 绘制图例
    axPrice.set_ylabel("价格(单位:元)")
    axPrice.grid(linestyle='-.')    # 带网格线
    # 在axKDJ子图中绘制KDJ
    stockDataFrame['K'].plot(ax=axKDJ,color="blue",label='K')
    stockDataFrame['D'].plot(ax=axKDJ,color="green",label='D')
    stockDataFrame['J'].plot(ax=axKDJ,color="purple",label='J')
    plt.legend(loc='best')          # 绘制图例
 
    plt.rcParams['font.family'] = 'Heiti TC'
    plt.rcParams['font.sans-serif']=['SimHei']
    axKDJ.set_title("KDJ图")        # 设置子图的标题
    axKDJ.grid(linestyle='-.')      # 带网格线
    # 设置x轴坐标的标签和旋转角度
    major_index=stockDataFrame.index[stockDataFrame.index%5==0]
    major_xtics=stockDataFrame['date'][stockDataFrame.index%5==0]
    plt.xticks(major_index,major_xtics)
    plt.setp(plt.gca().get_xticklabels(), rotation=30)
# 从API中获取股票数据
def getStockDataFromAPI(stockCode,startDate,endDate):
    try:
        # 给股票代码加ss前缀来获取上证股票的数据
        stock = pandas.get_quote_history(stockCode+'.ss')
 
        if(len(stock)<1):
            # 如果没取到数据,则抛出异常
            raise Exception()
        # 删除最后一行,因为get_data_yahoo会多取一天的股票交易数据
        stock.drop(stock.index[len(stock)-1],inplace=True)  # 在本地留份csv
        filename=''+stockCode+startDate+endDate+'.csv'
        stock.to_csv(filename)
    except Exception as e:
        print('Error when getting the data of:' + stockCode)
        print(repr(e))
# 设置tkinter窗口
win = tkinter.Tk()
win.geometry('925x800')     # 设置大小
win.title("K线均线整合KDJ")
# 放置控件
tkinter.Label(win,text='股票代码:').place(x=10,y=20)
tkinter.Label(win,text='开始时间:').place(x=10,y=50)
tkinter.Label(win,text='结束时间:').place(x=10,y=80)
stockCodeVal = tkinter.StringVar()
startDateVal = tkinter.StringVar()
endDateVal = tkinter.StringVar()
stockCodeEntry = tkinter.Entry(win,textvariable=stockCodeVal)
stockCodeEntry.place(x=70,y=20)
stockCodeEntry.insert(0,'600640')
startDateEntry = tkinter.Entry(win,textvariable=startDateVal)
startDateEntry.place(x=70,y=50)
startDateEntry.insert(0,'2023-03-01')
endDateEntry = tkinter.Entry(win,textvariable=endDateVal)
endDateEntry.place(x=70,y=80)
endDateEntry.insert(0,'2023-06-31')
def draw():     # 绘制按钮的处理函数
    plt.clf()   # 先清空所有在plt上的图形
    stockCode=stockCodeVal.get()
    startDate=startDateVal.get()
    endDate=endDateVal.get()
    drawKDJAndKLine(stockCode,startDate,endDate)
    canvas.draw()
tkinter.Button(win,text='绘制',width=12,command=draw).place(x=200,y=50)
def reset():
    stockCodeEntry.delete(0,tkinter.END)
    stockCodeEntry.insert(0,'600640')
    startDateEntry.delete(0,tkinter.END)
    startDateEntry.insert(0,'2023-03-01')
    endDateEntry.delete(0,tkinter.END)
    endDateEntry.insert(0,'2023-06-31')
    plt.clf()
    canvas.draw()
tkinter.Button(win,text='重置',width=12,command=reset).place(x=200,y=80)
# 以对话框的形式输出买点
def printBuyPoints():
    stockCode=stockCodeVal.get()
    startDate=startDateVal.get()
    endDate=endDateVal.get()
    filename=''+stockCode+startDate+endDate+'.csv'
    getStockDataFromAPI(stockCode,startDate,endDate)
    df = pd.read_csv('600276.csv')
    stockDf = calKDJ(df)
    cnt=0
    buyDate=''
    while cnt<=len(stockDf)-1:
        if(cnt>=5): # 略过前几天的误差
            #规则1:前一天J值大于10,当天J值小于10,是买点、
            if stockDf.iloc[cnt]['J']<10 and stockDf.iloc[cnt-1]['J']>10:
                buyDate = buyDate+stockDf.iloc[cnt]['date'] + ','
                cnt=cnt+1
                continue
            # 规则2:K,D均在20之下,出现K线上穿D线的金叉现象
            # 规则1和规则2是“或”的关系,所以当满足规则1时直接continue
            if stockDf.iloc[cnt]['K']>stockDf.iloc[cnt]['D'] and stockDf.iloc[cnt-1]['D']>stockDf.iloc[cnt-1]['K']:
                # 满足上穿条件后再判断K和D均小于20
                if stockDf.iloc[cnt]['K']< 20 and stockDf.iloc[cnt]['D']<20:
                    buyDate = buyDate + stockDf.iloc[cnt]['date'] + ','
        cnt=cnt+1
    # 完成后,通过对话框的形式显示买入日期
    tkinter.messagebox.showinfo('提示买点',buyDate)
tkinter.Button(win,text='计算买点',width=12,command=printBuyPoints).place(x=300,y=50)
# 以对话框的形式输出卖点
def printSellPoints():
    stockCode=stockCodeVal.get()
    startDate=startDateVal.get()
    endDate=endDateVal.get()
    filename=''+stockCode+startDate+endDate+'.csv'
    getStockDataFromAPI(stockCode,startDate,endDate)
    df = pd.read_csv('600276.csv')
    stockDf = calKDJ(df)
    cnt=0
    sellDate=''
    while cnt<=len(stockDf)-1:
        if(cnt>=5): # 略过前几天的误差
            # 规则1:前一天J值小于100,当天J值大于100,是卖点、
            if stockDf.iloc[cnt]['J']>100 and stockDf.iloc[cnt-1]['J']<100:
                sellDate = sellDate+stockDf.iloc[cnt]['date'] + ','
                cnt=cnt+1
                continue
            # 规则2:K,D均在80之上,出现K线下穿D线的死叉现象
            if stockDf.iloc[cnt]['K']<stockDf.iloc[cnt]['D'] and stockDf.iloc[cnt-1]['D']<stockDf.iloc[cnt-1]['K']:
                # 满足上穿条件后再判断K和D均大于80
                if stockDf.iloc[cnt]['K']> 80 and stockDf.iloc[cnt]['D']>80:
                    sellDate = sellDate + stockDf.iloc[cnt]['date'] + ','
        cnt=cnt+1
    # 完成后,通过对话框的形式显示买入日期
    tkinter.messagebox.showinfo('kdj死叉卖点',sellDate)
tkinter.Button(win,text='kdj死叉计算卖点',width=12,command=printSellPoints).place(x=300,y=80)
 
# 开始整合figure和win
figure = plt.figure()
canvas = FigureCanvasTkAgg(figure, win)
canvas.get_tk_widget().config(width=875,height=600)
canvas.get_tk_widget().place(x=0,y=100)
win.mainloop()


显示效果:

小散炒股如何操作强势股,小散炒股怎么赚钱

(3)均线指标

均线指标是股票投资者分析股票走势的最常用指标之一。它将股票价格在一段时间内的平均值作为参考值,自上而下穿越均线时为卖出信号等等。不同的均线周期对应着不同的时间跨度,一般市场上分别以5天线、10天线、20天线、30天线、60天线、120天线、250天线等为常用均线周期标准。通过均线指标,投资者可以从长期趋势和短期走势上分析,可以极大的协助投资者分析股票走势。

(4)成交量指标

成交量指标是股市中最好用的5个技术指标之一。它可以通过观察股票的成交量来评估市场的活跃程度和投资者的情绪。当股价上涨并且成交量放大时,就说明市场情绪热烈,投资者买入意愿强烈。成交量还可以与其他指标如成交额相比,更能反映股票的走势。因此,成交量指标在股市分析中具有重要的参考价值。

(5)布林线BOLL

布林带是股市中最好的技术指标之一。布林带由三条线将中线包在一起,形成股价的波动范围。通过布林带,我们可以在股价波动时观察到股价的波动情况,从而做出更准确的交易决策。此外,布林带还具有较好的可预测性,可以根据股价的走势进行趋势判断。通过布林带技术指标,我们可以及时发现股价的波动,做出买入或卖出的决策。因此,布林带是股市中最好的技术指标之一。

其他还有几十种指标不介绍了,一招鲜,吃遍天。学好一二种,找到相关的书籍仔细研究,找到适合自己的交易模式

如果懂技术的朋友可以学习几个算法模型:

(1)线性回归算法

线性回归是人工智能领域中最常用的统计学方法之一。在许多不同的应用领域中,线性回归都是非常有用的,常用于金融预测,推荐系统等等

线性回归模型也有许多改进和扩展版本,例如多元线性回归、逻辑回归、岭回归、lasso回归、弹性网回归等等。这些模型可以更好地处理实际应用中的不同情况,例如多个自变量、非线性关系、高维度数据等等。

(2)长短记忆神经网络LSTM

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,可以用于对股票金融数据进行训练预测

来段代码

# !/usr/bin/env python
# coding=utf-8
import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 从文件中获取数据
origDf = pd.read_csv('test.csv')
df = origDf[['Close', 'High', 'Low','Open' ,'Volume']]
featureData = df[['Open', 'High', 'Volume','Low']]
# 划分特征值和目标值
feature = featureData.values
target = np.array(df['Close'])
 
# 划分训练集,测试集
feature_train, feature_test, target_train ,target_test = train_test_split(feature,target,test_size=0.05)
pridectedDays = int(math.ceil(0.05 * len(origDf)))  # 预测天数
lrTool = LinearRegression()
lrTool.fit(feature_train,target_train)              # 训练
print(lrTool.score(feature_train,target_train))
# 用测试集预测结果
predictByTest = lrTool.predict(feature_test)
# 组装数据
index=0
# 在前95%的交易日中,预测结果和收盘价一致
while index < len(origDf) - pridectedDays:
    df.loc[index,'predictedVal']=origDf.loc[index,'Close']
    df.loc[index,'Date']=origDf.loc[index,'Date']
    index = index+1
predictedCnt=0
# 在后5%的交易日中,用测试集推算预测股价
while predictedCnt<pridectedDays:
    df.loc[index,'predictedVal']=predictByTest[predictedCnt]
    df.loc[index,'Date']=origDf.loc[index,'Date']
    predictedCnt=predictedCnt+1
    index=index+1
 
plt.figure()
df['predictedVal'].plot(color="red",label='predicted Data')
df['Close'].plot(color="blue",label='Real Data')
plt.legend(loc='best')      # 绘制图例
# 设置x坐标的标签
major_index=df.index[df.index%10==0]
major_xtics=df['Date'][df.index%10==0]
plt.xticks(major_index,major_xtics)
plt.setp(plt.gca().get_xticklabels(), rotation=30)
# 带网格线,且设置了网格样式
plt.grid(linestyle='-.')
plt.show()



显示效果:

小散炒股如何操作强势股,小散炒股怎么赚钱

红线表示通过lstm预测的结果。有兴趣的朋友可以多试一下其他代码,看看准确率

这种用数据预测未来的算法还有多种,比如贝叶斯公式,随机森林模型等等,学海无涯。

做个适合自己的交易系统

目前市场上各种交易预测软件汗牛充栋,包括证劵交易软件上kdj,macd,bill,ma等几十种技术指标已经相当完善。 但是用的人多了,盈亏还是二八定律,那就做点交易软件上没有的,增加胜算概率。

比如满足以下条件

(1)多指标共振

比如macd,kdj,boll,ma,lstm算法,线性回归算法同时预测买卖点。因为*家庄**多个指标同时做到骗线,难度大

(2)量价优先

量是所有指标的前提,股票交易如果每天冷冷清清,那么所有指标是不可靠的,量起来代表股票开始活跃了

(3)背离共振

多个指标有背离,比金叉死叉更加真实

(4)AI算法加持

线性回归算法,贝叶斯算法,lstm长短期记忆神经网络进行数据训练预测

(5)严格设置止损止盈线

注:只有满足上述大部分条件的股票再纳入自选股票池,当然,这是我个人对技术指标分析的浅薄看法,在测试和使用过程中不断调整算法来最大限度增加预测胜算概率,不足之处欢迎大家交流

最后强调一下,股市有风险,入市需谨慎,做好功课再进来这个博弈场

小散炒股如何操作强势股,小散炒股怎么赚钱