欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商教学与活动专区期货人生 → pandas

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3507人关注过本帖树形打印复制链接

主题:pandas

帅哥哟,离线,有人找我吗?
z7c9
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:1882 积分:3310 威望:0 精华:15 注册:2010/3/15 13:11:56
pandas  发帖心情 Post By:2017/7/11 17:37:41 [只看该作者]

[Code] import pandas as pd %matplotlib inline df = pd.read_csv('/Volumes/homes/admin/CloudStation/Backup/WIN-86HQB8IN67K/D/data/futureday/SHFE_rb1801.csv', encoding='gbk') df = df.rename(columns={'tradeDate': 'date', 'openPrice': 'open', 'highestPrice': 'high', 'lowestPrice': 'low', 'closePrice': 'close'}) df['range'] = (df['high'] - df['low']).shift(1) df['upper'] = df['open'] + df['range'] df['lower'] = df['open'] - df['range'] trades = list() position = 0 n = 0 for i, x in df.iterrows(): if df.loc[i, 'high'] >= df.loc[i, 'upper']: if position<0: trade="trade" = {'date': df.loc[i, 'date'], 'action': '平空', 'qty': 1, 'price': df.loc[i, 'upper']} trades.append(trade) position="position" = 0="0" if="if" position="=0: " trade="trade" = {'date': df.loc[i, 'date'], 'action': '开多', 'qty': 1, 'price': df.loc[i, 'upper']} trades.append(trade) position="position" = 1 if="if" df.loc[i, 'low'] <= df.loc[i, 'lower']: if="if" position="position" >0: trade = {'date': df.loc[i, 'date'], 'action': '平多', 'qty': 1, 'price': df.loc[i, 'lower']} trades.append(trade) position = 0 if position==0: trade = {'date': df.loc[i, 'date'], 'action': '开空', 'qty': 1, 'price': df.loc[i, 'lower']} trades.append(trade) position = -1 if n == df.shape[0] - 1: if position>0: trade = {'date': df.loc[i, 'date'], 'action': '强制平多', 'qty': 1, 'price': df.loc[i, 'close']} trades.append(trade) position = 0 if position<0: trade = {'date': df.loc[i, 'date'], 'action': '强制平空', 'qty': 1, 'price': df.loc[i, 'close']} trades.append(trade) position = 0 n += 1 trade_df = pd.DataFrame(trades) trade_df openPos = trade_df[trade_df.index % 2 == 0].reset_index(drop=True) closePos = trade_df[trade_df.index % 2 != 0].reset_index(drop=True) ndf = pd.merge(openPos, closePos, left_index="True," right_index="True) ndf.loc[ndf['action_x']" == '开多', 'profit'] = (ndf['price_y'] - ndf['price_x']) * 10 ndf.loc[ndf['action_x'] == '开空', 'profit'] = (ndf['price_x'] - ndf['price_y']) * 10 ndf['cum_profit'] = ndf['profit'].cumsum() ndf['cum_profit'].plot(figsize=(20, 5)) [Code]
[此贴子已经被作者于2017/7/11 17:38:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fantasynew
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:381 积分:0 威望:0 精华:0 注册:2013/10/2 12:35:58
  发帖心情 Post By:2017/7/11 21:49:54 [只看该作者]

能支持python就好玩了,现在不少搞机器学习的,回测结果不错

 回到顶部