c++加QT,如何动态股票实时行情均值,比如动态10个行情点均值

在 C++ 中,可以使用一个双端队列(deque)来存储最近的 10 个行情点,每次新加入一个行情点时,更新队列的头尾位置,并重新计算均值。

在 Qt 中,可以通过信号与槽机制来实现实时更新均值并显示在界面上。具体实现步骤如下:

在 Qt 设计界面中添加一个 QLabel 控件用于显示均值。

在代码中定义一个双端队列 prices,用于存储最近的行情点。

添加一个槽函数 updateAverage,用于更新均值并将其显示在 QLabel 控件中。

在界面初始化时,将 updateAverage 槽函数连接到股票行情更新信号(例如 QTimer 的 timeout 信号)。

在股票行情更新信号触发时,将新的行情点加入队列,并调用 updateAverage 槽函数更新均值并显示在界面上。

以下是一个使用双端队列实现动态计算均值的示例代码:

#include <QLabel>
#include <QTimer>
#include <deque>

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    deque<double> prices; // 存储股票行情的双端队列
    const int kWindowSize = 10; // 窗口大小
    QLabel* label; // 显示均值的 QLabel 控件

private slots:
    void updateAverage();
};

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 在界面中添加一个 QLabel 控件用于显示均值
    label = new QLabel(this);
    label->setText("Average price: 0.0");
    setCentralWidget(label);

    // 将 updateAverage 槽函数连接到 QTimer 的 timeout 信号
    QTimer* timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(updateAverage()));
    timer->start(1000); // 每秒钟更新一次均值
}

MainWindow::~MainWindow()
{
}

void MainWindow::updateAverage() {
    double price = getLatestPrice(); // 获取最新的股票价格
    prices.push_back(price); // 将新的行情点加入队列

    // 如果队列已满,弹出队列头部元素
    if (prices.size() > kWindowSize) {
        prices.pop_front();
    }

    // 计算当前的均值并显示在 QLabel 控件中
    if (prices.size() == kWindowSize) {
        double avg = calc_average(prices);
        label->setText(QString("Average price: %1").arg(avg));
    }
}

在这个示例中,我们首先在界面中添加了一个 QLabel 控件用于显示均值,然后定义了一个双端队列 prices 来存储最近的行情点,并在界面初始化时将 updateAverage 槽函数连接到 QTimer 的 timeout 信号上。在 updateAverage 槽函数中,我们首先获取最新的股票价格,然后将其加入队列中,计算当前均值并将其显示在 QLabel 控件中。

需要注意的是,由于 Qt 是一个事件驱动的框架,如果股票行情更新频率较高,可能会导致界面响应变慢。因此,在实际应用中,您可能需要根据具体需求对更新频率进行调整,并使用多线程或异步编程等技术来提高界面响应速度。

python生成PDF文档的库reportlab
python的生成艺术字体的库pythonwordart
python生成和解决迷宫的库maze
python用于创建和管理 IoT 物联网设备的工作流程库aiobotocore_iotthingsgraph
Python的exceptional库
python如何能简单快速的加载配置文件
python数学量子计算库toqito
python用于构建和运行自动化交易策略的框架的库trading-backend
python蓝牙设备通信的功能的库python-lightblue
python开发 macOS 和 iOS 平台上的应用程序库PyObjC
python 跨平台的系统监视器工具库Glances
python使用原始套接字的ICMP ping实现库AsyncPing
python生成伪随机数序列库randomstate
python的aria2p库介绍
python的plotly图形库
国产替代的大背景下程序员如何抉择
python的locale模块
python的生成器和迭代器
在Windows平台下,python如何检测另外一进程写入的文件是否完成
python如何判断一个文件是否已经写入完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

openwin_top

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值