用python做量化投资系列之比特币---布林带突破系统

来源:互联网 发布:黑手党3知乎 编辑:程序博客网 时间:2024/04/28 09:41

转摘自 http://blog.csdn.net/qq_26948675/article/details/54783533 


使用方法:把上一篇的配置基础,写到一个python文件中,文件名保存为 OkcoinSpotAPI。

                 然后把下面的代码,写到一个新的文件中,保存好,就可以直接运行了

原理:当价格突破布林带上轨的时候买入,跌破均线的时候卖出。

注:这个策略仅仅是最初始的调试版本,很不完善哦。

       

[python] view plain copy
  1. <span style="font-size:24px;">""" 
  2. Created on Sat Jan 14 14:33:26 2017 
  3.  
  4. @author: yunjinqi 
  5.  
  6. E-mail:yunjinqi@qq.com 
  7.  
  8. Differentiate yourself in the world from anyone else. 
  9. """  
  10. #######################################################布林带突破策略  
  11. #原理:突破95日均线,方差为2的布林带,进场;价格跌破34日均线的时候离场  
  12. ######################################################引入相应模块  
  13. from OkcoinSpotAPI import *  
  14. import pandas as pd  
  15. import numpy as np  
  16. import datetime  
  17. import time  
  18. #####################################################初始数据  
  19. okcoinRESTURL = 'www.okcoin.cn'    
  20. apikey='a3c363bd-28c7-4f6d-a04d-ac4a58e929b9'  
  21. secretkey='83782FBD5E365EFC511EC739C0B54103'  
  22. okcoinSpot = OKCoinSpot(okcoinRESTURL,apikey,secretkey)  
  23. #####################################################构建布林带、移动平均线指标  
  24. def bbands_MA(M,N):  
  25.     m=str(M)  
  26.     n=str(N)  
  27.     try:  
  28.         kline=pd.DataFrame(okcoinSpot.getKline('1min',m,'0'))  
  29.     except ValueError as e:  
  30.         print('json错误')  
  31.     mid=kline.iloc[::,4].mean()  
  32.     std=kline.iloc[::,4].std()  
  33.     upper=mid+N*std  
  34.     lower=mid-N*std  
  35.     ma=kline.iloc[::,4].mean()  
  36.     result=[upper,mid,lower]  
  37.     return result  
  38. ######################################################交易  
  39. try:  
  40.       ref_boll=bbands(94,2)  
  41.       ref_upper=boll[0]  
  42.       ref_lower=boll[2]    
  43.       ref_close=okcoinSpot.getKline('1min','1','0')[0][4]  
  44.       ref_ma34=pd.DataFrame(okcoinSpot.getKline('1min','34','0')).iloc[::,4].mean()  
  45. except:  
  46.       print('json错误')  
  47.         
  48. time.sleep(58)  
  49. while True:  
  50.     try:  
  51.       boll=bbands(94,2)  
  52.       upper=boll[0]  
  53.       lower=boll[2]    
  54.       close=okcoinSpot.getKline('1min','1','0')[0][4]  
  55.       ma34=pd.DataFrame(okcoinSpot.getKline('1min','34','0')).iloc[::,4].mean()  
  56.     except:  
  57.       print('json错误')  
  58.       continue  
  59.     if close>upper and ref_close<ref_upper:  
  60.       print('买入信号',okcoinSpot.trade('btc_cny','buy','7500','0.01'))  
  61.     if close<ma34 and ref_close>ref_ma34:  
  62.       print('卖出信号',okcoinSpot.trade('btc_cny','sell','1','0.01'))  
  63.       
  64.     try:  
  65.       ref_boll=bbands(94,2)  
  66.       ref_upper=boll[0]  
  67.       ref_lower=boll[2]    
  68.       ref_close=okcoinSpot.getKline('1min','1','0')[0][4]  
  69.       ref_ma34=pd.DataFrame(okcoinSpot.getKline('1min','34','0')).iloc[::,4].mean()  
  70.     except:  
  71.       print('json错误')  
  72.       continue  
  73.     time.sleep(58)  
  74.     now=datetime.datetime.now()  
  75.     now=now.strftime('%Y-%m-%d %H:%M:%S')   
  76.     i=i+1  
  77.     print(now,i)</span>  
阅读全文
0 0
原创粉丝点击