用python量化交易 -- 笔记 1

jupyter notebook f:/stock/book/abu-master_20200318

视频教程:
https://v.qq.com/x/page/g0555b9k6ge.html

page181
如果你的Anaconda可以运行,那么试着在cmd中运行 conda install ipython-notebook ,anaconda会把ipython notebook安装在你的电脑上,然后继续在cmd中运行 ipython notebook ,应该就可以了
在这里插入图片描述

import matplotlib.pyplot as plt
from collections import namedtuple
from collections import OrderedDict
from functools import reduce
import numpy as np
plt.plot(a_investor)
import matplotlib.pyplot as plt
from abupy import ABuSymbolPd
tsla_df = ABuSymbolPd.make_kl_df(‘usTSLA’, n_folds=2)
tsla_df.tail()

使用的环境是:
Ipython Notebook
https://github.com/bbfamily/abu
page5
www.hzbook.com
微信公众号:abu_quant

virtualenvwrapper-win
1.安装 virtualenvwrapper-win

pip3 install virtualenvwrapper-win

再次运行workon,目录中没有虚拟环境了,因为默认目录已经改变

https://blog.csdn.net/sophiezjz/article/details/82838951
虚拟环境搭建

IPython与IPython Notebook(Jupyter)安装
https://blog.csdn.net/sophiezjz/article/details/82838951

python -m pip install --upgrade pip

部署
推荐使用Anaconda部署Python环境,详见 量化环境部署

测试
import abupy

https://www.anaconda.com/
https://www.anaconda.com/distribution/#download-section
在这里插入图片描述
Anaconda Prompt(Anaconda3)

我选择了加入系统变量,我们可以看到我的python显示为Anaconda版
anconda使用conda作为包管理工具,也就是anaconda把一些常用的python包统一管理,可以方便的安装、更新和卸载包。
conda常用命令

conda --version 查看conda版本
conda -V
conda --help 获取帮助
conda -h
conda update --help
conda remove --help

Anaconda环境管理
接下来我们先研究单一环境下的Anaconda环境管理。
conda env --help
刚刚系统默认创建了名叫base的默认环境,我们可以使用conda命令查看当前有多少环境
conda env list 查看所有环境
或者
conda info --envs

anaconda ipython notebook 在哪

如果你的Anaconda可以运行,那么试着在cmd中运行 conda install ipython-notebook ,anaconda会把ipython notebook安装在你的电脑上,然后继续在cmd中运行 ipython notebook ,应该就可以了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

https://www.cnblogs.com/rangger/p/9520123.html
ipython notebook教程

在这里插入图片描述
在这里插入图片描述
page33

i=1
type(i)
int

f=1.1
type(f)
float

b = ( 1 > 2)
print(b)
type(b)
False
bool


price_str = '30.14, 29.58, 26.36, 32.56, 32.82'
type(price_str)
print(price_str)
30.14, 29.58, 26.36, 32.56, 32.82
 
 
print(id(price_str))
85943664

price_str = price_str.replace(' ','')
print(id(price_str))
print(price_str)
85972352
30.14,29.58,26.36,32.56,32.82


price_array = price_str.split(',')
print(price_array)
['30.14', '29.58', '26.36', '32.56', '32.82']

print('hello')
hello

price_array.append('32.82')
print(price_array)
['30.14', '29.58', '26.36', '32.56', '32.82', '32.82']

print(set(price_array))
{'32.82', '32.56', '26.36', '29.58', '30.14'}

print(price_array)
['30.14', '29.58', '26.36', '32.56', '32.82', '32.82']

price_array.remove('32.82')
print(price_array)
['30.14', '29.58', '26.36', '32.56', '32.82']

date_array = []
date_base = 20170118
for _ in range(0, len(price_array)):
    date_array.append(str(date_base))
    date_base += 1
date_array
['20170118', '20170119', '20170120', '20170121', '20170122']

date_array = []
date_base = 20170118
price_cnt = len(price_array) -1
while price_cnt > 0 :
    date_array.append(str(date_base))
    date_base += 1 
    price_cnt -= 1
date_array
['20170118', '20170119', '20170120', '20170121']


date_base = 20170118
date_array = [str(date_base + ind) for ind, _ in enumerate(price_array)]
date_array
['20170118', '20170119', '20170120', '20170121', '20170122']


stock_tuple_list = [(date,price) for date, price in zip(date_array, price_array)]
stock_tuple_list
[('20170118', '30.14'),
 ('20170119', '29.58'),
 ('20170120', '26.36'),
 ('20170121', '32.56'),
 ('20170122', '32.82')]



from collections import namedtuple
stock_namedtuple = namedtuple('stock', ('date', 'price'))
stock_namedtuple_list = [stock_namedtuple(date,price) for date,price in zip(date_array, price_array)]
stock_namedtuple_list
[stock(date='20170118', price='30.14'),
 stock(date='20170119', price='29.58'),
 stock(date='20170120', price='26.36'),
 stock(date='20170121', price='32.56'),
 stock(date='20170122', price='32.82')]


stock_dict = {date: price for date, price in zip(date_array, price_array)}
stock_dict
{'20170118': '30.14',
 '20170119': '29.58',
 '20170120': '26.36',
 '20170121': '32.56',
 '20170122': '32.82'}


stock_dict.keys(), stock_dict.values()
(dict_keys(['20170118', '20170119', '20170120', '20170121', '20170122']),
 dict_values(['30.14', '29.58', '26.36', '32.56', '32.82']))


from collections import OrderedDict
stock_dict = OrderedDict(
    (date,price) for date,price in zip(date_array,price_array))

stock_dict.keys()
odict_keys(['20170118', '20170119', '20170120', '20170121', '20170122'])


min(stock_dict)
'20170118'
min(zip(stock_dict.values(),stock_dict.keys()))
('26.36', '20170120')


def find_second_max(dict_array):
    stock_prices_sorted = sorted(zip(dict_array.values(), dict_array.keys()))
    return stock_prices_sorted[-2]

if callable(find_second_max):
    print(find_second_max(stock_dict))
('32.56', '20170121')

find_second_max_lambda = lambda dict_array:\
sorted(zip(dict_array.values(),dict_array.keys() ))[-2]

find_second_max_lambda(stock_dict)
('32.56', '20170121')


def find_max_and_min(dict_array):
    stock_prices_sorted = sorted(
    zip(dict_array.values(), dict_array.keys()) )
    return stock_prices_sorted[0], stock_prices_sorted[-1]
find_max_and_min(stock_dict)
(('26.36', '20170120'), ('32.82', '20170122'))
 

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
股票回测是量化交易中非常重要的一环,它可以通过历史数据对交易策略进行模拟和评估,从而评估策略的可行性和优劣性。在Python中,有很多开源的量化交易框架可以用来进行股票回测,如zipline、backtrader等。 下面是一个使用zipline框架进行简单交易策略回测的例子: 1. 安装zipline ```python pip install zipline ``` 2. 编写交易策略代码 ```python from zipline.api import order_target_percent, record, symbol def initialize(context): context.asset = symbol('AAPL') def handle_data(context, data): # 获取过去10天的收盘价 prices = data.history(context.asset, 'price', 10, '1d') # 计算平均价 mean_price = prices.mean() # 如果当前价格低于平均价,则买入 if data.current(context.asset, 'price') < mean_price: # 调整持仓比例至100% order_target_percent(context.asset, 1.0) # 否则卖出 else: # 调整持仓比例至0% order_target_percent(context.asset, 0.0) # 记录当前持仓比例 record(position=context.portfolio.positions[context.asset].amount) ``` 3. 运行回测 ```python from zipline import run_algorithm from zipline.api import symbol from datetime import datetime start = datetime(2016, 1, 1) end = datetime(2017, 1, 1) result = run_algorithm( start=start, end=end, initialize=initialize, capital_base=10000, handle_data=handle_data, bundle='quandl' ) ``` 在上述代码中,我们定义了一个简单的交易策略,即如果当前价格低于过去10天的平均价,则买入,否则卖出。然后我们使用zipline框架进行回测,设定回测开始和结束时间、初始资本、数据来源等参数,最终得到回测结果。 需要注意的是,这只是一个简单的例子,实际的交易策略可能会更加复杂,需要考虑更多的因素。另外,在进行股票回测时,也需要注意避免过度拟合或过度优化,以免出现回测虚高的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值