CMakeLists.txt

  1. project(wMA)
  2. add_library(wMA SHARED wMA.cpp)

wMA.h

  1. #pragma once
  2.  
  3. #ifndef WMA_WMA_H
  4. #define WMA_WMA_H
  5. #endif
  6.  
  7. #ifdef BUILD_WMA_DLL
  8. #define IO_WMA_DLL __declspec(export)
  9. #else
  10. #define IO_WMA_DLL __declspec(import)
  11. #endif
  12.  
  13. extern "C"
  14. {
  15. IO_WMA_DLL int wMA(double array[], int arrayLen, int n);
  16. }

wMA.cpp

  1. #define BUILD_WMA_DLL
  2.  
  3. #include "wMA.h"
  4. #include <iostream>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8.  
  9. IO_WMA_DLL int wMA(double array[], int arrayLen, int n)
  10. {
  11. cout << "欢迎光临..." << endl;
  12. cout << "开始计算..." << endl;
  13. int m = n;
  14. double wMA[arrayLen];
  15. if(arrayLen >= n && n >= 0)
  16. {
  17. switch(n)
  18. {
  19. case 0:
  20. {
  21. cout << "长度为零..." << endl;
  22. for(int i = 0; i < m; i++)
  23. {
  24. wMA[i] = 0;
  25. }
  26. break;
  27. }
  28. default:
  29. {
  30. for(int i = 0; i < m - 1; i++)
  31. {
  32. wMA[i] = 0;
  33. }
  34. while(arrayLen >= m)
  35. {
  36. double temp = 0;
  37. for(int i = m - n, j = 0; i < m; i++, j++)
  38. {
  39. temp += array[i] * j;
  40. }
  41. wMA[m - 1] = temp / n;
  42. m++;
  43. }
  44. break;
  45. }
  46. }
  47. }
  48. else
  49. {
  50. cout << "长度错误..." << endl;
  51. }
  52. cout << "存入文件..." << endl;
  53. ofstream fWMA("c:\\wMA.csv");
  54. if(!fWMA)
  55. {
  56. cout << "打开错误..." << endl;
  57. return -1;
  58. }
  59. else
  60. {
  61. fWMA << "Index" << "," << "index of sh" << "," << "wMA" << "," << endl;
  62. for(int i = 0; i < arrayLen; ++i)
  63. {
  64. fWMA << i << "," << array[i] << "," << wMA[i] << "," << endl;
  65. }
  66. cout << "完成写入..." << endl;
  67. fWMA.close();
  68. return 1;
  69. }
  70. }

wMA.py

  1. import tushare
  2. from ctypes import *
  3. # 数据预处理
  4. dataFrame = tushare.get_hist_data('sh')
  5. open = dataFrame['open'].values
  6. openLen = len(open)
  7. # python 的 list 格式转为 c 的 array 格式
  8. array = (c_double * openLen)(*open)
  9. arrayLen = openLen
  10. # 调用 DLL 函数 wMA 算出 wMA 值存入文件
  11. hDLL = CDLL('C:\\Users\\Perelman\\.CLion2016.1\\system\\cmake\\generated\\wMA-4d5bfe42\\4d5bfe42\\Debug\\libwMA.dll')
  12. print(hDLL.wMA(array, arrayLen, 5))

读取 csv,调整后存数据库,python socket 和 mysql 部分见其他随笔,

  1. import pandas
  2. dataFrame = pandas.DataFrame(pandas.read_csv("c:\\wMA.csv"))
  3. print(dataFrame)
  4. dataFrame = dataFrame.drop(['Unnamed: 3'], axis=1)
  5. print(dataFrame)

Python 下载 tushare 数据,然后调用 C++ DLL 计算 wMA 存入本地 csv 文件再 python 读取的更多相关文章

  1. CSV文件在Python中的几种处理方式

    Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型.在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文 ...

  2. csv文件已经python内置csv模块

    csv(Comma Separated Value,即逗号分隔值),文件以纯文本形式存储表格数据(数字和文本).可以用excel打开,并自动将每个逗号隔开的数据作为一列在excel中显示. pytho ...

  3. 将Excel文件转为csv文件的python脚本

    #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚本 需要将该脚本直接放到要转换的Excel文件同级 ...

  4. C++ 把数组数据存入 CSV 文件,以及读取 CSV 文件的数据

    1. CSV-百度百科 2. 代码 #pragma once //Microsoft Visual Studio 2015 Enterprise #include<iostream> #i ...

  5. Jmeter实现从csv文件中随机读取数据

    一.需求 参数放在csv文件中,文件格式如下,需求每次从文件中随机读取一行数据. 二.步骤 1.在csv文件中新增加一列,pl 2.新增一个配置原件-随机数,设置如下: 50是文件数据的行数 3.新增 ...

  6. ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中

    # -*- coding: utf-8 -*- import math import re import csv import repr def ean_checksum(eancode): &quo ...

  7. Android调用系统自带的文件管理器进行文件选择并读取

    先调用: intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); //设置类型,我这里是任意类 ...

  8. python下载youtube视频

    谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来:可以看到网址上给出的是csv文件,该文件 ...

  9. 使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

随机推荐

  1. NFR

    你NFR了吗? NFR,即非功能性需求 (Non -Functional Requirements) ,即系统能够完成所期望的工作的性能与质量.具体包括如下内容: – 效率: 软件实现其功能所需要的计 ...

  2. tuple放入dict中

    tuple放入dict中是否可以正常运行 # 将tuple放入dict中 a = ('AI','Kobe','Yao') b = ('AI',['Kobe','Yao']) dict1 = {'a': ...

  3. 如何用Github版本控制非Github库

    Git的图形化客户端有很多,不同的人可能习惯用不同的客户端.本人更习惯于Github的客户端,因为上Github比较多,同步代码到Github用官方的客户端是最方便的,所以也就更习惯于使用Github ...

  4. 消费RabbitMQ时的注意事项,如何禁止大量的消息涌到Consumer

    按照官网提供的订阅型写法( Retrieving Messages By Subscription ("push API")) 我发现,RabbitMQ服务器会在短时间内发送大量的 ...

  5. git-入门

    一.简介 Git是目前世界上最先进的分布式版本控制系统,Git中绝大部分操作都是访问本地资源,不需要网络,其中有三个概念比较重要:1. 工作目录 2. 暂存区域 3.本地仓库. 简单说明一下,工作目录 ...

  6. pptpvpn 连接后 无法上外网

    VPN拨号后只能连内网,不能上外网的原因和解决方法 因为众所周知的原因,很多个人或者单位需要架设自己的VPN.会遇到一些奇怪的情况,比如说:为什么连上单位的VPN后就只好上公司的内网(局域网),外网( ...

  7. 如何通过JS调用某段SQL语句

    如何通过JS调用某段SQL语句,这样的需求在报表.数据平台开发中很常见.以报表平台FineReport开发为例,例如在点击某个按钮之后,来判断一下数据库条数,再决定下一步操作.那这在后台如何实现呢? ...

  8. bug描述技巧

    进入测试行业已经两年了,我从未认真的考虑过提交一个bug需要注意哪些问题,只是主观的认为我只需要描述清楚就OK了,但是我在工作中发现有个别的开发经常跑来告诉我"这个bug你是不是描述错了&q ...

  9. java日志组件介绍(common-logging,log4j,slf4j,logback )

    转自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的一个通用的日志 ...

  10. 由Photoshop高反差保留算法原理联想到的一些图像增强算法。

    关于高反差保留的用处说明呢,从百度里复制了一段文字,我觉得写得蛮好的: 高反差保留就是保留图像的高反差部分,再说得真白些,就是保留图像上像素与周围反差比较大的部分,其它的部分都变为灰色.拿一个人物照片 ...