StocQt
設定可能な100銘柄の株価チャート
StocQtアプリケーションは、NASDAQ-100に基づく100銘柄のカスタム・リストのトレンド・チャートを表示します。リストから銘柄を選択し、QNetworkAccessManager 、またはオフラインのデータセットから必要なデータをFinancial Modeling Prep APIから取得します。このアプリケーションでは、比較チャートで使用するために最大5銘柄をお気に入り登録することもできます。
このアプリケーションは、Search、StockCheckBox、StockChart、StockView、SettingsViewなどのカスタム・タイプを使用します。これらのタイプは株価データを読みやすい形で表示し、ユーザーがトレンドチャートをカスタマイズできるようになっています。例えば、株価のトレンドを週足、月足、四半期足、半年足で表示することができます。
このアプリケーションでは、APIリクエストや銘柄のお気に入り登録などのデータ処理に、C++で実装されたカスタムStockEngineシングルトンを使用しています。オンライン・データを取得するために、カスタム APIHandler クラスを実装しています。
void ApiHandler::stockHistory(const QString &symbol, std::function<void(QList<HistoryData>)> onComplete) { if (m_useLiveData) { QDateTime sixMonthsAgo = QDateTime::currentDateTimeUtc().addMonths(-6); QString to = QDateTime::currentDateTimeUtc().toString(m_dateFormat); QString from = sixMonthsAgo.toString(m_dateFormat); QString url = QString("https://financialmodelingprep.com/api/v3/historical-price-full/" "%1?from=%2&to=%3&apikey=%4") .arg(symbol, from, to, m_apiKey); m_getRequest.setUrl(QUrl(url)); QNetworkReply *reply = m_accessManager.get(m_getRequest); connect(reply, &QNetworkReply::finished, [reply, this, onComplete]() { QString replyStr = QString(reply->readAll()); if (reply->error() != QNetworkReply::NoError) { qDebug() << "Network error" << reply->errorString() << reply->readAll(); } QByteArray data = replyStr.toUtf8(); QList<HistoryData> dataList = parseHistory(&data); onComplete(dataList); reply->deleteLater();
このアプリケーションは、ObjectModel 型を使用して、依存するビジュアルデータモデルにアクセスします。
id: mainWindow ... ListView { id: root ... model: ObjectModel { Item { id: stockContainer width: root.width height: root.height StockView { id: stockView anchors.fill: parent visible: false width: root.width height: root.height } StockListView { id: listView visible: true anchors.fill: parent width: root.width height: root.height } } FavoriteView { id: favoriteView width: root.width height: root.height } SettingsView { id: infoView width: root.width height: root.height } } }
StockListModel はカスタムデータモデルで、銘柄 ID、銘柄名、株価、お気に入りなどの基本情報を含む銘柄をリストアップします。このアプリケーションは、ユーザーがリストから別の銘柄を選択したい場合にこのデータモデルを使用します。
StockViewとFavoriteViewは複雑なデータモデルで、選択された銘柄または最大5銘柄のグループのトレンドチャートを表示します。これらは、別のカスタムタイプであるStockChartまたはFavoriteChartを使用し、 StockEngineからListModelsにデータをロードし、Surface3D 、Bars3D 、またはScatter3D を使用して株価のグラフィカルなトレンドを提示します。
Rectangle { id: chart ... function updateHistory(){ updateStartDate() var startPoint = StockEngine.stockModel.indexOf(startDate) var totalPoints = StockEngine.stockModel.historyCount() var width = startPoint / 50 for (var i = 0; i < totalPoints; i++) { var epochInDays = StockEngine.stockModel.historyDate(i, false) / 86400 appendSurfacePoint(openModel, width, epochInDays, StockEngine.stockModel.openPrice(i)) appendSurfacePoint(closeModel,width, epochInDays, StockEngine.stockModel.closePrice(i)) appendSurfacePoint(highModel,width, epochInDays, StockEngine.stockModel.highPrice(i)) appendSurfacePoint(lowModel,width, epochInDays, StockEngine.stockModel.lowPrice(i)) } ... Surface3D { id: historyGraph ... Surface3DSeries { id: highSeries visible: true baseColor: "green" shading: Surface3DSeries.Shading.Flat drawMode: Surface3DSeries.DrawSurface itemLabelFormat: "Time: @xLabel High:@yLabel$" ItemModelSurfaceDataProxy { itemModel: highModel rowRole: "row" columnRole: "column" yPosRole: "value" } },
SettingsViewは、オフライン・データとライブ・データを選択するためのドロップダウンメニューの他、アプリケーショ ンに関する情報を表示します。ライブ・データを使用するには、ユーザーがAPIキーを提供する必要がある。個人用の API キーは、Financial Modeling Prep のウェブサイトから生成することができ、ライブデータの使用を選択する際に表示される API キープロンプトに挿入することができます。
Rectangle { id: rectangle ... function handleKey(keyValid) { if (keyValid) { invalidText.visible = false confirmation.visible = false StockEngine.setUseLiveData(true) }
アプリケーションをよりよく理解するために、Qt Creatorを使ってコードをブラウズしてください。
例を実行する
Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Example を参照してください。
QML アプリケーションも参照してください 。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。