在 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如何判断一个文件是否已经写入完成