用C++编写股票高胜率指标
时间: 2023-03-19 19:23:05 浏览: 91
要编写股票高胜率指标,需要先明确指标的计算方法和定义。以下是一种可能的股票高胜率指标的计算方法:
1. 计算股票收盘价的5日移动平均线和20日移动平均线。
2. 如果5日移动平均线上穿20日移动平均线,则认为出现“金叉”,标记为1;如果5日移动平均线下穿20日移动平均线,则认为出现“死叉”,标记为-1;否则标记为0。
3. 计算最近N天(比如30天)中标记为1和标记为-1的天数之和。
4. 计算最近N天的总交易日数。
5. 如果标记为1的天数占总交易日数的比例大于标记为-1的天数占总交易日数的比例,则认为股票出现了高胜率信号。
以下是用C语言实现该指标的代码:
```c
#include <stdio.h>
#define N 30 // 计算最近N天的指标
int main() {
double close[N]; // 存储最近N天的收盘价
double ma5, ma20; // 5日和20日移动平均线
int cross[N]; // 存储金叉和死叉标记的数组
int days = 0; // 最近N天的总交易日数
int up_days = 0, down_days = 0; // 标记为1和标记为-1的天数之和
// 读取最近N天的收盘价
for (int i = 0; i < N; i++) {
scanf("%lf", &close[i]);
}
// 计算移动平均线和金叉死叉标记
ma5 = close[N-1];
ma20 = close[N-1];
for (int i = N-2; i >= 0; i--) {
ma5 = ma5 * 4 / 5 + close[i] / 5;
ma20 = ma20 * 19 / 20 + close[i] / 20;
if (ma5 > ma20) {
cross[i] = (cross[i+1] == -1) ? 1 : 0;
} else if (ma5 < ma20) {
cross[i] = (cross[i+1] == 1) ? -1 : 0;
} else {
cross[i] = 0;
}
}
// 统计标记为1和标记为-1的天数之和和总交易日数
for (int i = 0; i < N; i++) {
if (cross[i] == 1) {
up_days++;
} else if (cross[i] == -1) {
down_days++;
}
if (close[i] > 0) {
days++;
}
}
// 判断是否出现高胜率信号
if (up_days * days > down_days