python-双均线策略的预测能力研究

简介: python-双均线策略的预测能力研究

做量化,不仅要懂编程,有交易经验,而且要数学和统计学要好。恶补统计理论中,好后悔上统计课的时候做白日梦了。。。。。。。。。。。


下面试着尝试了分析双均线能否产生预测力,我们知道很多回测产生的盈利,有时候并不是策略本身的问题,有可能是数据的趋势。本文尝试通过消除平均趋势或者采用随机基准来对比策略的收益,似乎,双均线蛮好。



# -*- coding: utf-8 -*-
"""
Created on Tue Jun  6 14:50:04 2017
@author: yunjinqi 
E-mail:yunjinqi@qq.com 
Differentiate yourself in the world from anyone else.
"""
# -*- coding: utf-8 -*-  
""" 
Created on Thu May 25 08:55:12 2017 
@author: yunjinqi  
E-mail:yunjinqi@qq.com  
Differentiate yourself in the world from anyone else. 
"""  
import pandas as pd  
import numpy as np  
import datetime  
import time  
#获取数据  
df=pd.read_csv('C:/Users/HXWD/Desktop/rb000.csv',encoding='gbk')  
df.head()
df.columns=['date','open','high','low','close','volume','amt']  
df.head()  
value=[]  
for i in range(5,6):  
    for j in range(20,21):  
        df['ma5']=df['close'].rolling(i).mean()  
        df['ma20']=df['close'].rolling(j).mean()  
        df.ix[df['ma5']>df['ma20'],'cross']=1  
        df.ix[df['ma5']<=df['ma20'],'cross']=-1  
        #df[['close','ma5','ma20']][-200:].plot()  
        df['ret']=(df['close']-df['close'].shift(1))  
        df['profit']=df['ret']*df['cross']  
        #df['profit'].plot()  
        target=df['profit'].sum()  
        s=[i,j,target]  
        ts=time.strftime('%Y-%m-%d %X', time.localtime() )  
        value.append(s)  
        print('当前时间:{}短期参数:{},长期参数:{}优化完毕,净利润{}'.format(ts,i,j,s)) 
data=pd.DataFrame(value)  
#data.to_csv('参数优化.csv')  
#消除趋势后的
df_up=df.cross[df.cross>0]
df_down=df.cross[df.cross<0]
p=len(df_up)/(len(df_down)+len(df_up))
ll=len(df)
mu=p*len(df)
mu
import random
suiji_value=[]
for i in range(10000):
    total=[]
    for i in range(len(df)):
        v=random.randint(0,ll)
        if v<mu:
            total.append(1)
        if v>=mu:
            total.append(-1)
    total=pd.Series(total)
    suiji_profit=(df['ret']*total).sum()
    print(suiji_profit)               
    suiji_value.append(suiji_profit)
suiji_value=pd.Series(suiji_value).sum()/10000
suiji_value
#随机信号只能够产生平均83.9的收益,而双均线能够产生15593的利润,
#有理由相信这是一个好策略
#我们尝试消除平均趋势之后再计算相应的盈利
df['new_ret']=(df['close']-df['close'].shift(1))/df['close'].shift(1)
aa=df['new_ret'].mean()
df['new_ret1']=df['new_ret']-pd.Series([aa]*len(df))
df['ret2']=df['new_ret1']*df['close'].shift(1)
(df['ret2']*df['cross']).sum()
#计算出来消除平均趋势之后的收益15571,只差了20多。
#似乎均线策略,马马虎虎证明了,是可以产生预测能力的。



目录
相关文章
|
1月前
|
算法 安全 调度
解决Python并发访问共享资源引起的竞态条件、死锁、饥饿问题的策略
解决Python并发访问共享资源引起的竞态条件、死锁、饥饿问题的策略
27 0
|
7月前
|
Python
使用Python实现股票均线策略
使用Python实现股票均线策略案例的简单示例
|
8月前
|
机器学习/深度学习 算法 Python
【SSA-LSTM】基于SSA-LSTM预测研究(Python代码实现)
【SSA-LSTM】基于SSA-LSTM预测研究(Python代码实现)
116 0
|
2月前
|
数据可视化 数据挖掘 调度
【Python数据挖掘】优化电能能源策略:基于非侵入式负荷检测与分解的智能解决方案
【Python数据挖掘】优化电能能源策略:基于非侵入式负荷检测与分解的智能解决方案
36 0
|
7天前
|
数据采集 JavaScript 前端开发
使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
【4月更文挑战第19天】本文探讨了Python爬虫应对反爬虫机制的策略。常见的反爬虫机制包括User-Agent检测、IP限制、动态加载内容、验证码验证和Cookie跟踪。应对策略包括设置合理User-Agent、使用代理IP、处理动态加载内容、验证码识别及维护Cookie。此外,还提到高级策略如降低请求频率、模拟人类行为、分布式爬虫和学习网站规则。开发者需不断学习新策略,同时遵守规则和法律法规,确保爬虫的稳定性和合法性。
|
1月前
|
开发者 Python Windows
解决Python中文乱码问题的策略与技巧
解决Python中文乱码问题的策略与技巧
50 0
|
2月前
|
安全 Java 开发者
Python多线程编程实战:提高程序执行效率的策略
Python多线程编程实战:提高程序执行效率的策略
125 1
|
2月前
|
分布式计算 并行计算 数据处理
Python并行计算的优化策略
在进行大规模数据处理和计算时,Python并行计算是提高效率的重要手段。本文将介绍Python并行计算的优化策略,包括多进程与多线程的选择、共享内存与消息传递的区别、以及常见的并行计算库的应用技巧,帮助开发者更好地应对大数据处理和复杂计算任务。
|
7月前
|
机器学习/深度学习 存储 算法
Python 基于 opencv 车牌识别系统的研究与实现
Python 基于 opencv 车牌识别系统的研究与实现
|
8月前
|
机器学习/深度学习 计算机视觉 Python
基于CBAM-CNN卷积神经网络预测研究(Python代码实现)
基于CBAM-CNN卷积神经网络预测研究(Python代码实现)
123 0