游资过滤:=(DCLOSE-REF(C,1))/REF(C,1)*100; XG:=CROSS(游资过滤,20) OR CROSS(游资过滤,18); 游资过滤XG:XG;把这个指标转换成选股指标
时间: 2023-08-21 09:03:46 浏览: 46
将这个指标转换成选股指标的方法可以是,选取游资过滤XG值为True的股票作为选股结果。具体实现可以根据你使用的选股工具进行不同的操作。以下是一种可能的实现方法:
1. 打开选股工具,进入选股页面。
2. 在筛选条件中添加“游资过滤XG=XG”,表示选取游资过滤指标的交叉点为True的股票。
3. 根据需要,可以添加其他条件进行筛选,如市值、行业、板块等。
4. 运行选股,得到符合条件的股票列表。
需要注意的是,这个指标只是游资过滤的交叉点,不能作为单一的选股指标使用,需要结合其他指标和分析方法进行综合判断。
相关问题
c语言读hdf5文件例子
C语言是一种广泛应用于科学计算、数据处理等领域的编程语言,而HDF5(Hierarchical Data Format version 5)则是一种用于管理和存储大规模科学数据的文件格式,常用于气象、地球物理、生命科学等领域。接下来,我们将介绍如何使用C语言读取HDF5文件并获取数据。
首先,我们需要安装HDF5的C语言库,可以从HDF Group的官方网站下载(https://www.hdfgroup.org/downloads/hdf5/)。安装成功后,我们可以使用下面这个简单的例子来读取HDF5文件:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "hdf5.h"
int main(void) {
hid_t file_id, dataset_id, dataspace_id;
hsize_t dims[2];
herr_t status;
int data[4][6];
file_id = H5Fopen("example.h5", H5F_ACC_RDONLY, H5P_DEFAULT);
dataset_id = H5Dopen2(file_id, "/dataset", H5P_DEFAULT);
dataspace_id = H5Dget_space(dataset_id);
status = H5Sget_simple_extent_dims(dataspace_id, dims, NULL);
status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data);
printf("Dataset dimensions: [%lld,%lld]\n", (long long)(dims[0]), (long long)(dims[1]));
printf("Data:\n");
for(int i=0; i<dims[0]; i++) {
for(int j=0; j<dims[1]; j++) {
printf("%d ", data[i][j]);
}
printf("\n");
}
status = H5Sclose(dataspace_id);
status = H5Dclose(dataset_id);
status = H5Fclose(file_id);
return 0;
}
```
在这个例子中,我们使用了HDF5的几个基本API,如H5Fopen()、H5Dopen2()、H5Dget_space()、H5Sget_simple_extent_dims()和H5Dread()。首先,我们打开了example.h5文件,并用H5Dopen2()函数打开了名为“/dataset”的数据集,接着使用H5Dget_space()函数获取了数据集的数据空间,并使用H5Sget_simple_extent_dims()函数获取了数据集的维度信息。最后,通过H5Dread()函数从数据集中读取了数据。
我们可以通过类似下面的命令创建一个example.h5文件,并在其中创建一个名为“/dataset”的数据集:
```
h5pcreate H5P_FILE_ACCESS
h5pset_fapl_core H5P_FILE_ACCESS 1000 1
h5fcreate example.h5 H5F_ACC_TRUNC H5P_FILE_ACCESS
h5screate_simple 2 4 6 dims
h5dcreate example.h5 /dataset H5T_STD_I32LE dims
h5dwrite example.h5 /dataset H5T_NATIVE_INT H5S_ALL H5S_ALL H5P_DEFAULT
```
最后,编译并运行上面的C语言程序,我们可以从example.h5文件中读取到数据,并打印出来。这个例子只是一个简单的示例,HDF5还有很多高级特征和API可以使用,可以根据实际需求进行使用。
用python的hdf5storage保存的mat文件,无法在c++用matio读取,原因是什么
可能是因为 Python 的 hdf5storage 库和 matio 读取 mat 文件的方式不同导致的。hdf5storage 库保存的 mat 文件也是基于 HDF5 文件格式的,但是不同于 MATLAB 中的 mat 文件,因此可能会导致 matio 无法正确读取。
如果需要在 C++ 中使用 matio 读取 hdf5storage 库保存的 mat 文件,可以考虑使用 HDF5 库来读取。HDF5 库可以读取 hdf5storage 库保存的 mat 文件,因为它们都基于 HDF5 文件格式。
以下是一个使用 HDF5 库读取 mat 文件的示例代码:
```c++
#include <iostream>
#include <string>
#include <vector>
#include "hdf5.h"
int main() {
// 打开 HDF5 文件
hid_t file_id = H5Fopen("data.mat", H5F_ACC_RDONLY, H5P_DEFAULT);
if (file_id < 0) {
std::cerr << "Failed to open HDF5 file." << std::endl;
return -1;
}
// 获取MATLAB变量的名称列表
std::vector<std::string> var_names;
H5G_info_t group_info;
herr_t status = H5Gget_info(file_id, &group_info);
if (status >= 0) {
var_names.resize(group_info.nlinks);
for (unsigned int i = 0; i < group_info.nlinks; i++) {
char var_name[1024] = {0};
H5Lget_name_by_idx(file_id, ".", H5_INDEX_NAME, H5_ITER_INC, i, var_name, sizeof(var_name), H5P_DEFAULT);
var_names[i] = var_name;
}
}
// 读取变量
for (const auto& var_name : var_names) {
hid_t dataset_id = H5Dopen2(file_id, var_name.c_str(), H5P_DEFAULT);
if (dataset_id < 0) {
std::cerr << "Failed to open dataset: " << var_name << std::endl;
continue;
}
// 获取数据类型
hid_t datatype_id = H5Dget_type(dataset_id);
if (datatype_id < 0) {
std::cerr << "Failed to get datatype for dataset: " << var_name << std::endl;
H5Dclose(dataset_id);
continue;
}
// 获取数据空间
hid_t dataspace_id = H5Dget_space(dataset_id);
if (dataspace_id < 0) {
std::cerr << "Failed to get dataspace for dataset: " << var_name << std::endl;
H5Tclose(datatype_id);
H5Dclose(dataset_id);
continue;
}
// 获取数据维度
int ndims = H5Sget_simple_extent_ndims(dataspace_id);
if (ndims < 0) {
std::cerr << "Failed to get number of dimensions for dataset: " << var_name << std::endl;
H5Sclose(dataspace_id);
H5Tclose(datatype_id);
H5Dclose(dataset_id);
continue;
}
std::vector<hsize_t> dims(ndims);
H5Sget_simple_extent_dims(dataspace_id, dims.data(), NULL);
// 创建内存空间存储数据
std::vector<double> data(dims[0] * dims[1]);
hid_t mem_dataspace_id = H5Screate_simple(2, dims.data(), NULL);
// 读取数据
status = H5Dread(dataset_id, H5T_NATIVE_DOUBLE, mem_dataspace_id, dataspace_id, H5P_DEFAULT, data.data());
if (status < 0) {
std::cerr << "Failed to read dataset: " << var_name << std::endl;
} else {
std::cout << "Variable: " << var_name << std::endl;
for (int i = 0; i < dims[0]; i++) {
for (int j = 0; j < dims[1]; j++) {
std::cout << data[i * dims[1] + j] << " ";
}
std::cout << std::endl;
}
}
// 关闭数据集和数据空间
H5Sclose(mem_dataspace_id);
H5Sclose(dataspace_id);
H5Tclose(datatype_id);
H5Dclose(dataset_id);
}
// 关闭 HDF5 文件
H5Fclose(file_id);
return 0;
}
```
注意,在使用 HDF5 库读取 mat 文件时需要先打开 HDF5 文件,然后获取 MATLAB 变量的名称列表,再逐个读取变量。具体的读取操作可以参考上述示例代码。
如果以上方法仍然无法解决问题,可以考虑查看具体的报错信息或者寻求 hdf5storage 和 matio 社区的支持。