[关闭]
@Channelchan 2018-11-29T22:57:56.000000Z 字数 2335 阅读 64904

成交量指标策略

市场短期是投票机,长期是称重机

目录

  1. 什么是成交量?
  2. 如何计算成交量指标?
  3. 如何用图形展示成交量?
  4. 如何用成交量指标来编写策略?

什么是成交量?

成交量有三种可能,分别是量增、量减、量平。

价格也有三种可能,分别是上涨、下跌、横盘。

量价理论表明价涨量增是上涨趋势的确认,反之价跌量增是下跌趋势的确认。

如何计算成交量指标?


1. ADV-平均成交量

MA(volume,20)


2. OBV

OBV属于市场的领先指标,计算方法是如果当天价格高于前一天的价格,当天成交量就用加的,反之就用减的来计算出OBV指标,这样有助于分析成交量与价格的关系。


3. A/D

A/D 指标在OBV的基础上对价格的波幅进行了计算,真实波幅越大,指标中的成交量占比越大。

V1.png-3.6kB


4. WVAP

按成交量来衡量价格的权重,成交量越大价格权重越大。

V2.png-4.2kB

如何用图形展示成交量?

  1. import pandas as pd
  2. import warnings
  3. import numpy as np
  4. from datetime import datetime
  5. import matplotlib.pyplot as plt
  6. import talib as ta
  7. from talib import abstract
  8. warnings.filterwarnings('ignore')
  9. data = pd.read_excel('three.xlsx', sheetname='BTCUSDT.binance', index_col='datetime').iloc[-300:]
  1. adv10 = abstract.MA(data, 10, price='volume')
  2. adv20 = abstract.MA(data, 20, price='volume')
  1. fig, (ax, ax1) = plt.subplots(2, 1, sharex=True, figsize=(15,7))
  2. ax.plot(data.close, label='BTCUSDT')
  3. ax.legend(loc='upper left')
  4. ax1.bar(data.index, data.volume, color='g', width=0.05)
  5. ax1.plot(adv10, label='Volume_MA10')
  6. ax1.plot(adv20, label='Volume_MA20')
  7. plt.legend(loc='upper left')
  8. plt.show()

output_7_0.png-45.9kB

  1. #OBV & A/D
  2. OBV = abstract.OBV(data)
  3. AD = abstract.AD(data)
  4. fig, (ax, ax1,ax2) = plt.subplots(3, 1, sharex=True, figsize=(15,9))
  5. ax.plot(data['close'], label='BTCUSDT')
  6. ax.legend(loc='upper left')
  7. ax1.plot(OBV,'g', label='OBV')
  8. ax1.legend(loc='upper left')
  9. ax2.plot(AD, 'y', label='A/D')
  10. ax2.legend(loc='upper left')
  11. plt.show()

output_8_0.png-59.8kB

  1. #vwap
  2. VWAP=pd.Series(ta.SUM(data.close.values*data.volume.values, 20),index=data.index)/\
  3. pd.Series(ta.SUM(data.volume.values, 20),index=data.index)
  4. plt.figure(figsize=(15,7))
  5. plt.plot(data['close'])
  6. plt.plot(VWAP)
  7. plt.show()

output_9_0.png-41kB

如何用成交量指标来编写策略?

VWAP策略

买入:

close > VWAP

卖出:

close < VWAP

  1. #VWAP
  2. # 策略参数
  3. VWAPPeriod = 70
  4. lot = 1
  5. # 信号计算
  6. VWAP = ta.SUM(am.close*am.volume, self.VWAPPeriod) / ta.SUM(am.volume, self.VWAPPeriod)
  7. # 现象条件
  8. breakUpVwap = (am.close[-1] > VWAP[-2]) and (am.close[-2] <= VWAP[-2])
  9. breakDnVwap = (am.close[-1] < VWAP[-2]) and (am.close[-2] >= VWAP[-2])
  10. # 进出场条件
  11. if breakUpVwap and (self.posDict[symbol + "_LONG"]==0):
  12. if self.posDict[symbol + "_SHORT"] == 0:
  13. self.buy(symbol, bar.close * 1.01, self.lot)
  14. elif self.posDict[symbol + "_SHORT"] > 0:
  15. self.cover(symbol, bar.close * 1.02, self.posDict[symbol + "_SHORT"])
  16. self.buy(symbol, bar.close * 1.01, self.lot)
  17. elif breakDnVwap and (self.posDict[symbol + "_SHORT"]==0):
  18. if self.posDict[symbol + "_LONG"] == 0:
  19. self.short(symbol, bar.close * 0.99, self.lot)
  20. elif self.posDict[symbol + "_LONG"] > 0:
  21. self.sell(symbol, bar.close * 0.99, self.posDict[symbol + "_LONG"])
  22. self.short(symbol, bar.close *0.99, self.lot)

作业

参考以上代码用其他成交量指标做策略

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注