【Python】 网格策略回测(日内高频数据)

策略思路:传统网格策略需要设定参数为网格间距、仓位权重。

相当于把收盘价分成数个网格、价格移动到下个网格则成交。

传统网格策略需提前设置格子数量、若价格走到无格子的位置时则不产生交易。

本文主要参考网格策略的思想,取消格子数量限制,选用日内Tick级别高频数据,专注于下单策略及成交情况。

引入必要库、读取数据(可以使用Tick级别、分钟级别,不支持日级别)

import pandas as pd
import warnings
import datetime
import numpy as np
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import Kline, Line,Grid,Scatter

data = pd.read_csv('你的数据源.csv')
data.index = data['tradetime']

# 打上时间标签为后续记录做准备
data['time'] = data.index.map(lambda x: x.time())

初始化必要参数、可以将后续代码设置为函数

# 设置买买双边报单价格
sell_price = data['close'][0]*1.01
buy_price = data['close'][0]*0.99

# 记录每日最初股票持仓、现金持仓
s_inday = 5000
cash_inday = 1000000

# 记录实时股票持仓、
s = s_inday
c = cash_inday

# 初始化卖单买单记录
sell = []
buy = []

遍历所有数据,记录交易情况,网格间距为1%

# 最后一个时点要做平仓、循环时不遍历
for i in range(0, len(data)-1):
    # 假设时点的最高价>卖单报价,且有足够股票持仓则卖单成交      
    if ((data['high'][i]>sell_price) & (s_inday > 200)):

        # 记录成交时点、报单成交价格、成交数量
        sell.append([data.index[i], sell_price.round(2), 200])

        # 更新当日可出售股票持仓记录、全部股票持仓、现金持仓记录
        s_inday -= 200
        s -= 200
        c += 200*data['close'][i]*0.998

        # 重置双边报价
        buy_price = sell_price *0.99
        sell_price = sell_price*1.01

    # 假设时点的最低价<卖单报价,且有足够现金持仓则买单成交
    elif ((data['low'][i]<buy_price) & (cash_inday > data.close[i]*200)):

        # 记录成交时点、报单成交价格、成交数量
        buy.append([data.index[i], buy_price.round(2),200])

        # 更新当日可用于购买现金持仓记录、全部股票持仓、现金持仓记录
        cash_inday -= data.close[i]*200
        c -= data.close[i]*200
        s += 200

        # 重置双边报价
        sell_price = buy_price*1.01
        buy_price = buy_price*0.99

    # 每日15:00确定次日可用股票、及现金持仓 
    if data['time
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yolimia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值