单均线参数优化

思路:

1.导入需要的包

2.将字体设置为中文黑体

3.设置变量股票代码,移动平均线,阈值

4.定义函数 load_ohlc_from_local 读取本地文件设置日期为索引,返还DataFrame格式

5.定义buy与sell函数来模拟买卖并打印别买卖股票的代码,价格,数量与日期

6.定义calc_buy_vol通过余额cash给定的价格price来计算买入时交易的股票数量

7.定义open_current_order记入开仓的价格,开仓交易的数量,开仓日期,将余额cash全局化并计算开仓后的余额

8.定义close_current_order计算平仓价格,平仓日期,订单的盈亏,将current_orders中的订单移入history_orders中,再次更新cash余额

9.定义calc_total_pnl计算总盈亏

10.定义update_equity计算股票价格更新计算资产总值

11.定义back_test进行回测,遍历历史数据,根据移动平均线malen和价格波动的阈值判断买入与卖出信号,再调用buy sell等定义过的函数模拟交易

12.定义plot_candles绘制K线图,显示开盘价,收盘价,最高价,最低价

13.定义cast_orders_onto_candles将历史订单的开仓平仓信息绘制到K线图上

14.定义detect_best_MA将cash, current_orders, history_orders, malen全局化,设best_malen,best_pnl初始值分别为20和0,for 循环遍历i的长度(20到100,步长为10)并赋值给malen 设置初始资金cash为1000000,dfohlc(dataframe)的equity列为None,建立空字典current_orders,history_orders,调用"back_test"进行回测,当前总收益赋值给total_pnl并打印,通过if将最大的总收益赋值给best_pnl,当前malen赋值给best_malen记录最佳组合,将best_pnl进行回测,重置参数,回测,打印best_malen,total_pnl,最后画图

15.定义run_batch_parameters,将所需参数全局化,设置best_malen,best_threshold,best_pnl初始值,for循环i(20到100步长为5)j(1到5步长为1),赋值给malen,threshold,设置初始资金cash,建立空字典current_orders,history_orders,回测,将当前回测的资产价值存入dfall,计算总收益,将最大的总收益赋值给best_pnl,当前malen赋值给best_malen,当前threshold赋值给best_threshold记录最佳组合并打印,画图操作

16.主程序,设置股票代码,名称,参数,加载历史数据,回测,计算总盈亏并绘制相应的图表

代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as -plt
# 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']



def load_ohlc_from_local():
    df = pd.read_csv('600519.csv')
    df['datetime']=pd.to_datetime(df['date'], format='%Y-%m-%d', errors='coerce')
    df =df.set_index('datetime')
    return df


def buy(stock_code, price, volume, dt):
    # send o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值