MCPcopy
hub / github.com/tkfy920/qstock / plot_ichimoku

Function plot_ichimoku

plot/data_plot.py:295–333  ·  view source on GitHub ↗

df为dataframe数据,包含'open','high','low','close','volume‘列,索引为时间格式 t:Tenkan-sen:转折线计算周期,默认9个交易日 k:Kijun-sen:基准线计算周期,默认26 l:Chikou Span:滞后跨度或延迟线计算周期,默认30天 s:Senkou Span B:计算前导跨度B或先行上线B,默认52个交易日

(df, t=9, k=26, l=30, s=52)

Source from the content-addressed store, hash-verified

293
294# ichimoku云图
295def plot_ichimoku(df, t=9, k=26, l=30, s=52):
296 '''df为dataframe数据,包含'open','high','low','close','volume‘列,索引为时间格式
297 t:Tenkan-sen:转折线计算周期,默认9个交易日
298 k:Kijun-sen:基准线计算周期,默认26
299 l:Chikou Span:滞后跨度或延迟线计算周期,默认30天
300 s:Senkou Span B:计算前导跨度B或先行上线B,默认52个交易日
301 '''
302 data = df.copy()
303
304 # 计算转换线
305 high_1 = data['high'].rolling(t).max()
306 low_1 = data['low'].rolling(t).min()
307 # Tenkan-sen:转换线
308 data['conversion_line'] = (high_1 + low_1) / 2
309 # 计算基准线
310 high_2 = data['high'].rolling(k).max()
311 low_2 = data['low'].rolling(k).min()
312 data['base_line'] = (high_2 + low_2) / 2
313 # 计算前导跨度A
314 data['lead_span_A'] = ((data.conversion_line + data.base_line) / 2).shift(l)
315 # 计算前导跨度A
316 high_3 = data['high'].rolling(s).max()
317 low_3 = data['high'].rolling(s).min()
318 data['lead_span_B'] = ((high_3 + low_3) / 2).shift(s)
319 # 滞后跨度
320 data['lagging_span'] = data['close'].shift(-l)
321 # 删除缺失值
322 data.dropna(inplace=True)
323 fig, ax = plt.subplots(1, 1, sharex=True, figsize=(15, 7))
324 ax.plot(data.index, data['close'], linewidth=2, label='收盘价')
325 ax.plot(data.index, data['lead_span_A'], label='前导跨度A', color='k')
326 ax.plot(data.index, data['lead_span_B'], label='前导跨度B', color='y')
327 ax.fill_between(data.index, data['lead_span_A'], data['lead_span_B'],
328 where=data['lead_span_A'] >= data['lead_span_B'], color='lightcoral')
329 ax.fill_between(data.index, data['lead_span_A'], data['lead_span_B'],
330 where=data['lead_span_A'] < data['lead_span_B'], color='lightgreen')
331 plt.legend(loc=0)
332 plt.grid()
333 plt.show()

Callers

nothing calls this directly

Calls 1

copyMethod · 0.45

Tested by

no test coverage detected