# 群友指标实现 : 通达信画线指标 https://github.com/QUANTAXIS/QUANTAXIS/issues/1451
发布于 8 个月前 作者 yutiansut 381 次浏览 来自 文档
import QUANTAXIS as QA

data = QA.QA_fetch_stock_day_adv('000001', '2019-01-01', '2020-02-12')
def qyzb(data):
    return QA.pd.DataFrame({
        'HHV120': QA.HHV(data.high,120),
        'LLV20': QA.LLV(data.low, 20),
        'HHV20': QA.HHV(data.high,20),
    })
ind = data.add_func(qyzb)

首先找到HHV 对应的日期

data[data.high==ind.iloc[-1]['HHV120']].date
DatetimeIndex(['2019-10-14'], dtype='datetime64[ns]', name='date', freq=None)

再找到LLV 对应的日期

data[data.low==ind.iloc[-1]['LLV20']].date
DatetimeIndex(['2020-02-03'], dtype='datetime64[ns]', name='date', freq=None)

再找到终点(LLV20) 那天对应的HHV20的值 REINDEX 教他做人

ind['HHV20'].reindex(data[data.low==ind.iloc[-1]['LLV20']].index)
date        code  
2020-02-03  000001    17.34
Name: HHV20, dtype: float64

现在我们把他们连线 (HHV120的日期, High) / (LLV20对应的日期, HHV20的值)

q1 = data[data.high==ind.iloc[-1]['HHV120']]


x1 = q1.date[0]
y1 = data.reindex(q1.index).high[0]
q2 = data[data.low==ind.iloc[-1]['LLV20']]


x2 = q2.date[0]
y2 = ind['HHV20'].reindex(q2.index)[0]

(x1, y1)
(Timestamp('2019-10-14 00:00:00'), 17.6)
(x2, y2)
(Timestamp('2020-02-03 00:00:00'), 17.34)

这里需要注意 时间不能直接作为横轴, 需要在QA里面转换成 交易日的索引

x1_i = QA.trade_date_sse.index(str(x1)[0:10])
x2_i = QA.trade_date_sse.index(str(x2)[0:10])

拟合 y= kx+b

k =  (y1 - y2) / (x1_i - x2_i)
b = y2 - k * x2_i
k
-0.00356164383561646
b
42.684657534246725
data_u = data.tail(120).data
data_u =data_u.assign(date= data_u.index.levels[0])

data_u = data_u.assign(x = data_u.date.apply(lambda x: QA.trade_date_sse.index(str(x)[0:10])))
data_u = data_u.assign(y =data_u.x.apply(lambda x: k*x+b))

data_u.reset_index(1).loc[:,['high','y']].plot(figsize=(12,8))

output_27_1.png

回到顶部