加载中...

如何使用python寻找K线中的黄昏之星

如何使用python寻找K线中的黄昏之星

之前写过如何寻找启明星。启明星是股票在下跌过程中出现的反转信号,以一个或者两根长阴线,一个小十字星,以及一个中阳线或者大阳线并排为主要的特点。预示着下跌势头的衰减和上涨势头的确立。而黄昏之星正好相反,是上涨势头的衰减,如果把启明星倒过来,就是黄昏之星了。

黄昏之星由一至两根中阳线或者大阳线,加一个带长上影线的十字星,然后出现一个中阴线,侵入到之前大阳线的中间位置以下。

具体的表现以乐视网2018-06-07K线为例,就是以一个大阳线,十字星和中阴线排列的一个黄昏之星的标准形态,而且后市也是一波大的下跌趋势。

New Image

 

  下面以乐视网为例,给出寻找黄昏之星的python代码:

 

代码如下:

import baostock as bs

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import datetime

 

 

def get_his_k_data(stockcode = ''sh.600000''):

    login()

    # 详细指标参数,参见历史行情指标参数章节

    rs = bs.query_history_k_data(stockcode,

        "date,code,open,high,low,close,preclose,volume,amount,pctChg",

        start_date=''2018-01-01'', end_date=''2018-09-13'',

        frequency="d", adjustflag="2")

    print (rs.error_code)

    #### 打印结果集 ####

    data_list = []

    while (rs.error_code == ''0'') & rs.next():

        # 获取一条记录,将记录合并在一起

        data_list.append(rs.get_row_data())

    result = pd.DataFrame(data_list, columns=rs.fields)

    bs.logout()

    return result

 

def find_PositiveStar_NegativeStar(stockcode = ''sh.600000''):

    """找出启明星和黄昏之星"""

    #获取历史K线数据

    hisdata = get_his_k_data(stockcode)

    highlist = hisdata[''high''].astype(''float'')

    lowlist = hisdata[''low''].astype(''float'')

    openlist = hisdata[''open''].astype(''float'')

    closelist = hisdata[''close''].astype(''float'')

    zdflist = hisdata[''pctChg''].astype(''float'')

    datelist = hisdata[''date'']

    for datestr,zdf in zip(datelist[-200:-100],zdflist[-200:-100]):

        print(datestr,zdf)

       

    for i in range(len(datelist)):

        if i > 2 and i < len(datelist) - 1:

            #黄昏之星 前一日是中阳线,或者连续两天阳线

            if zdflist[i-1] > 5  or  (zdflist[i-1] > 4 and zdflist[i-1] + zdflist[i-2]  > 6): 

                #当日高开或者平开,但是有上下影线,且上影线长度超过了K线实体的长度

                if openlist[i] >= closelist[i - 1] and  (highlist[i]  -  max(openlist[i], closelist[i])> (abs(openlist[i] - closelist[i])) ):  #or zdflist[i] < 0

                    #次日下跌,且跌到之前上涨阳线的一半以下

                    if zdflist[i + 1] < 0 and closelist[i + 1] < 0.5*(openlist[i -1 ] + closelist[i - 1]):

                        print("at %s,%s出现了黄昏之星, 前日涨幅%f,当日涨幅%f,次日涨幅 %f"%(datelist[i],stockcode,zdflist[i-1] ,zdflist[i] ,zdflist[i+1] ))

   

    print("end")

 

if __name__ == ''__main__'':

    find_PositiveStar_NegativeStar(''sz.300104'')

 

 

 

结果如下:

at 2018-06-07,sz.300104出现了黄昏之星, 前日涨幅9.946239,当日涨幅-0.244504,次日涨幅 -4.411761

at 2018-09-27,sz.300104出现了黄昏之星, 前日涨幅10.027860,当日涨幅3.291136,次日涨幅 -4.166663

end