Skip to content

Python技术分析

ChannelCMT edited this page Jun 13, 2019 · 1 revision

Python技术分析

量化是技术分析最好的体现

目录

  • 什么是技术分析?
  • 技术分析主要有哪些模块?
  • 现代的技术分析该如何使用?
  • 反对与支持的理论?
  • 什么是科学的技术分析过程?
  • Talib的数据格式

什么是技术分析?

定义: '技术分析是指以市场行为为研究对象,以判断市场趋势并跟随趋势的周期性变化来进行股票及一切金融衍生物交易决策的方法的总和。'

  • 三大假设:技术分析认为市场行为包容消化一切信息、价格以趋势演变、历史会重演。
  • 数据计算:价格高开低收,成交量,技术指标。
  • 对比量化:量化是技术分析最好的体现,相同在假设历史数据可以预测未来,不同在量化需要跟多的统计学习方法。

技术分析主要有哪些模块?

  1. 趋势理论
  2. 蜡烛图形态
  3. 动能指标
  4. 成交量指标
  5. 相对强弱市场
  6. 市场宽度

现代的技术分析该如何使用?

  • 机构与电脑的崛起:技术分析需要适应市场的改变。
  • 小投资者掌握交易策略:分析环境才是获利的核心。
  • 机构交易量剧增:资金流量是分析的核心,特别是机构与散户的持仓。
  • 手续费极低:导致市场牛熊转变加快,需要专注在市场的改变。
  • 全球一体化:要使用相关性与板块轮动等策略
  • 电脑大数据计算:自动收集数据方便统计分析,如排序、过滤。

反对与支持的理论?

反对派:

  1. 有效市场假说: 弱有效市场(价格衍生的数据无用),半强式有效市场假说(过去的公开信息无用),强有效市场假说(内幕消息无用)
  2. 随机波动原理:

支持派:

  1. 行为金融学: 套利回归正确价位的限制,人类理性的限制

  2. 肥尾分布: 价格分布有肥尾效应,两边较长

什么是科学的技术分析过程?

  1. 观察市场
  2. 思考问题与现象
  3. 提出假设
  4. 设计可测试的预测模型
  5. 收集数据进行预测 (无效要改变条件参数等,拒绝假设,重新设计。)
  6. 设计出客观科学的预测模型

TA_Lib需要什么样的数据格式?

  1. 'numpy.ndarray'
  2. dataframe

安装talib编译版本:http://www.lfd.uci.edu/~gohlke/pythonlibs/

import talib as ta
import pandas as pd
import warnings
import numpy as np
warnings.filterwarnings('ignore')
# data = pd.Panel({s: pd.read_excel('threesymbol.xlsx', sheetname=s, index_col='datetime') 
#                    for s in ['BTCUSDT.binance', 'EOSUSDT.binance', 'ETHUSDT.binance']})
data = pd.read_excel('three.xlsx', sheetname='BTCUSDT.binance', index_col='datetime')
#读取'numpy.ndarray'
print(ta.MA(data.close.values, 5)[-5:])
[4293.452 4286.222 4273.788 4235.412 4222.592]
print(type(data))
<class 'pandas.core.frame.DataFrame'>
print(data.tail())
datetime
2018-11-28 22:00:00    4236.09
2018-11-28 23:00:00    4264.85
2018-11-29 00:00:00    4270.00
2018-11-29 01:00:00    4162.55
2018-11-29 02:00:00    4179.47
Name: close, dtype: float64
from talib import abstract
#直接读取DataFrame,默认读取cloumns名为close的数据。
data['close'] = data.close
print(abstract.MA(data,2).tail(10))
datetime
2018-11-28 17:00:00    4228.340
2018-11-28 18:00:00    4280.295
2018-11-28 19:00:00    4316.585
2018-11-28 20:00:00    4343.300
2018-11-28 21:00:00    4299.000
2018-11-28 22:00:00    4239.830
2018-11-28 23:00:00    4250.470
2018-11-29 00:00:00    4267.425
2018-11-29 01:00:00    4216.275
2018-11-29 02:00:00    4171.010
dtype: float64
#Example
from datetime import datetime
data=data.close
print(data.tail())
datetime
2018-11-28 22:00:00    4236.09
2018-11-28 23:00:00    4264.85
2018-11-29 00:00:00    4270.00
2018-11-29 01:00:00    4162.55
2018-11-29 02:00:00    4179.47
Name: close, dtype: float64
print(data.values[-5:])
print(type(data.values))
[4236.09 4264.85 4270.   4162.55 4179.47]
<class 'numpy.ndarray'>
#读取'numpy.ndarray'
ta.MA(data.values, 2)[-5:]
array([4239.83 , 4250.47 , 4267.425, 4216.275, 4171.01 ])

常见问题

  1. 技术分析有什么策略?
  2. 如何选择合适的策略?
  3. 如何优化交易策略?
  4. 如何通过策略获得稳定收益?
  5. 如何量化技术分析?
Clone this wiki locally