把稳:神奇九转指标策略作为市场上罕有的择时策略选股指标(不同于MACD、KDJ、W&R、筹码指标等滞后性很强),大概率能够捕捉到个股得低位或者高位得迁移转变点。但有一点须要把稳:该指标只适宜于指数和个股的震荡市、弱牛市以及弱熊市;不适宜于大牛市或大熊市!
股价上涨或(下跌)过程中连续9日收盘价高于(或低于)前4天的收盘价即知足神奇九转指标逻辑。股价在上涨或(下跌)过程中连续9日达到触发条件会天生数列1、2、3....7、8、9,数列会依次标注在当日K线上方(下方)。只有当股价连续第六天达到触发条件时,数列才开始进行显示,依次显示1、2、3、4、5、6,当第七天依然达到触发条件时则显示7,如第七日未达到触发条件则前面6天的序号消逝。第八日同第七日的显示逻辑一样。当第九天依然达到触发条件时,便形成了一个九转构造。而当第九日未达到触发条件时则前面8日的序号消逝,九转构造不成立。股价上涨过程中形成的九转构造称之为上涨九转卖出构造,而股价下跌过程中形成的九转构造则称之为下跌九转买入构造。
下跌九转买入构造:知足两个条件:第一:连续涌现九根K线的收盘价都比各自前面的第四根K线的收盘价低。第二:8或9确当日最低价格小于6或7确当日最低价格。

下跌九转买入构造
1.2 上涨九转卖出构造上涨九转卖出构造:知足两个条件:第一:连续涌现九根K线的收盘价都比各自前面的第四根K线的收盘价高。第二:8或9确当日最高价格大于6或7确当日最高价格。
上涨九转卖出构造
二、通过Tushare获取神奇九转所需数据2.1 stock_basic股票根本数据接口接口描述获取股票根本信息数据,包括股票代码、名称、上市日期、退市日期等。
输入参数输出参数
接口示例
pro = ts.pro_api()#查询当前所有正常上市交易的股票列表data = pro.stock_basic(exchange = '', list_status = 'L', fields = 'ts_code, symbol, name, area, industry, list_date')
数据样例
ts_code symbol name area industry list_date0 000001.SZ 000001 安然银行 深圳 银行 199104031 000002.SZ 000002 万科A 深圳 全国地产 199101292 000004.SZ 000004 国农科技 深圳 生物制药 199101143 000005.SZ 000005 世纪星源 深圳 房产做事 199012104 000006.SZ 000006 深振业A 深圳 区域地产 199204275 000007.SZ 000007 全新好 深圳 酒店餐饮 199204136 000008.SZ 000008 神州高铁 北京 运输设备 199205077 000009.SZ 000009 中国宝安 深圳 综合类 199106258 000010.SZ 000010 俏丽生态 深圳 建筑施工 199510279 000011.SZ 000011 深物业A 深圳 区域地产 1992033010000012.SZ000012南玻A深圳玻璃19920228
2.2 daily股票日线行情数据接口接口描述
获取股票日线行情数据。
数据解释:交易日每天15点~16点之间。本接口是未复权行情,停牌期间不供应数据。
调取解释:根本积分每分钟内最多调取500次,每次5000条数据,相称于23年历史。
输入参数输出参数
接口示例
pro = ts.pro_api()df = pro.daily(ts_code = '000001.SZ', start_date = '20180701', end_date = '20180718')#多个股票df = pro.daily(ts_code = '000001.SZ, 600000.SH', start_date = '20180701', end_date = '20180718')#通过日期取历史某一天的全部历史df = pro.daily(trade_date='20180810')
数据样例
ts_code trade_date open high low close pre_close change pct_chg vol amount0 000001.SZ 20180718 8.75 8.85 8.69 8.70 8.72 -0.02 -0.23 525152.77 460697.3771 000001.SZ 20180717 8.74 8.75 8.66 8.72 8.73 -0.01 -0.11 375356.33 326396.9942 000001.SZ 20180716 8.85 8.90 8.69 8.73 8.88 -0.15 -1.69 689845.58 603427.7133 000001.SZ 20180713 8.92 8.94 8.82 8.88 8.88 0.00 0.00 603378.21 535401.1754 000001.SZ 20180712 8.60 8.97 8.58 8.88 8.64 0.24 2.78 1140492.31 1008658.8285 000001.SZ 20180711 8.76 8.83 8.68 8.78 8.98 -0.20 -2.23 851296.70 744765.8246 000001.SZ 20180710 9.02 9.02 8.89 8.98 9.03 -0.05 -0.55 896862.02 803038.9657 000001.SZ 20180709 8.69 9.03 8.68 9.03 8.66 0.37 4.27 1409954.60 1255007.6098 000001.SZ 20180706 8.61 8.78 8.45 8.66 8.60 0.06 0.70 988282.69 852071.5269 000001.SZ 20180705 8.62 8.73 8.55 8.60 8.61 -0.01 -0.12 835768.77 722169.579
三、神奇九转指标策略选股的Python实现3.1 代码解释
从Tushare获取的股票根本数据存放在Mysql数据中。从数据库中找出所有非ST股票,然后循环检讨每一只股票当前日期是否符合神奇九转指标策略(包括卖出和买入),符合策略的股票数据显示在表格中。
注:因篇幅缘故原由,以下代码为紧张实现逻辑,非全部代码。如需请联系。
3.2 紧张代码def get_nine_turn_index(self):lstBuy = []lstSell = []dfBuy = self.get_data_from_file(IDX_BUY)dfSell = self.get_data_from_file(IDX_SELL)if dfBuy.empty or dfSell.empty:stData = cmnDB().get_all_stock_basic_data(noST=True)idx = 0iTop = 15total = len(stData)start = time.perf_counter()for itm in stData:st = self.get_stock_json_data(itm)stCode = itm[0]data = cmnDB().get_nine_turn_data(stCode, lmt=iTop)data = data.iloc[:iTop]oClose = data.close.valuesif self.get_is_nine_turn_buy_stock(oClose):st['idx_type'] = IDX_BUYlstBuy.append(st)elif self.get_is_nine_turn_sell_stock(oClose):st['idx_type'] = IDX_SELLlstSell.append(st)idx += 1cmn.show_progress_bar(idx, total, start, oBar=oGauge)# 天生csv文件self.make_nine_turn_file(lstBuy, IDX_BUY)self.make_nine_turn_file(lstSell, IDX_SELL)# 转换为DataFramedfBuy = pd.DataFrame(lstBuy)dfSell = pd.DataFrame(lstSell)df = dfBuy.append(dfSell, ignore_index=True)self.show_data_in_grid(df)""" ================================================== Name: get_is_nine_turn_buy_stock Desc: check the stock meet the magic nine turn index of buy Param: oClose - close value records of stock Return: Boolean: True / False"""def get_is_nine_turn_buy_stock(self, oClose):rtn = FalseiCount = 0for idx in range(len(oClose) - 5):if oClose[idx] < oClose[idx+4]:iCount += 1if iCount == 8:rtn = Truebreakelse:breakreturn rtn""" ================================================== Name: get_is_nine_turn_sell_stock Desc: check the stock meet the magic nine turn index of sell Param: oClose - close value records of stock Return: Boolean: True / False"""def get_is_nine_turn_sell_stock(self, oClose):rtn = FalseiCount = 0for idx in range(len(oClose) - 5):if oClose[idx] > oClose[idx+4]:iCount += 1if iCount == 8:rtn = Truebreakelse:breakreturn rtn
3.3 实现结果数据样例
符合九转买入构造股票
符合九转卖出构造股票