Skip to content

Commit 16fb2c3

Browse files
committed
Refactoring tick flow
1 parent 05435e4 commit 16fb2c3

5 files changed

Lines changed: 29 additions & 30 deletions

File tree

include/models/priceData.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
#include <chrono>
88

99
struct PriceData {
10-
double value1;
11-
double value2;
10+
double ask;
11+
double bid;
1212
std::chrono::system_clock::time_point timestamp;
1313

1414
// Constructor for easy creation
15-
PriceData(double v1, double v2, const std::chrono::system_clock::time_point& ts)
16-
: value1(v1), value2(v2), timestamp(ts) {}
15+
PriceData(double ask, double bid, const std::chrono::system_clock::time_point& ts)
16+
: ask(ask), bid(bid), timestamp(ts) {}
1717

18-
PriceData() : value1(0.0), value2(0.0), timestamp{} {}
18+
PriceData() : ask(0.0), bid(0.0), timestamp{} {}
1919
};

include/sqlManager.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111

1212
class SqlManager {
1313
public:
14-
static std::vector<PriceData> streamPriceData(const DatabaseConnection& db);
15-
static std::string getBaseQuery();
14+
static std::vector<PriceData> streamPriceData(const DatabaseConnection& db, int LAST_MONTHS = 1);
15+
static std::string getBaseQuery(int LAST_MONTHS = 1);
1616
private:
17-
static constexpr int LAST_MONTHS = 1;
1817
static constexpr int STREAM_LIMIT = 200000;
1918
};

source/databaseConnection.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ std::vector<PriceData> DatabaseConnection::executeQuery(const std::string& query
6363

6464
// Convert results to PriceData objects
6565
for (const auto& row : result) {
66-
double value1 = row[0].as<double>();
67-
double value2 = row[1].as<double>();
66+
double ask = row[0].as<double>();
67+
double bid = row[1].as<double>();
6868
std::string timestamp_str = row[2].as<std::string>();
6969

7070
auto timestamp = Utilities::parseTimestamp(timestamp_str);
7171

72-
results.emplace_back(value1, value2, timestamp);
72+
results.emplace_back(ask, bid, timestamp);
7373
}
7474

7575
txn.commit();
@@ -90,13 +90,13 @@ std::vector<PriceData> DatabaseConnection::streamQuery(const std::string& query)
9090

9191
for (int i = 0; i < (int)result.size(); ++i) {
9292
const auto& row = result[i];
93-
double value1, value2;
93+
double ask, bid;
9494
auto sv1 = row[0].view();
9595
auto sv2 = row[1].view();
96-
std::from_chars(sv1.data(), sv1.data() + sv1.size(), value1);
97-
std::from_chars(sv2.data(), sv2.data() + sv2.size(), value2);
98-
results[i] = PriceData(value1, value2, fastParseTimestamp(row[2].c_str()));
99-
}
96+
std::from_chars(sv1.data(), sv1.data() + sv1.size(), ask);
97+
std::from_chars(sv2.data(), sv2.data() + sv2.size(), bid);
98+
results[i] = PriceData(ask, bid, fastParseTimestamp(row[2].c_str()));
99+
}
100100

101101
return results;
102102
}
@@ -115,8 +115,8 @@ void DatabaseConnection::printResults(const std::vector<PriceData>& results) con
115115
ss << std::put_time(&tm, "%Y-%m-%d %H:%M:%S");
116116

117117
std::cout << std::fixed << std::setprecision(4)
118-
<< data.value1 << "\t"
119-
<< data.value2 << "\t"
118+
<< data.ask << "\t"
119+
<< data.bid << "\t"
120120
<< ss.str() << std::endl;
121121
}
122122
}

source/main.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ int main(int argc, const char * argv[]) {
3535

3636
JsonParser::parseConfigurationFromBase64(argv[2]);
3737

38-
std::vector<PriceData> ticks = SqlManager::streamPriceData(db);
38+
std::vector<PriceData> ticks = SqlManager::streamPriceData(db, 1);
3939
printf("Total ticks streamed: %zu\n", ticks.size());
4040

4141
// print first tick
@@ -46,18 +46,18 @@ int main(int argc, const char * argv[]) {
4646
}
4747
char buffer[20];
4848
std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &tm);
49-
printf("First tick: ask=%.4f, value2=%.4f timestamp=%s\n", ticks[0].value1, ticks[0].value2, buffer);
49+
printf("First tick: ask=%.4f, bid=%.4f timestamp=%s\n", ticks[0].ask, ticks[0].bid, buffer);
5050

5151
auto tradeManager = TradeManager::getInstance();
5252

53-
// std::string tradeId = tradeManager->openTrade(1.2345, 100000, true);
54-
// std::cout << "Opened trade: " << tradeId << std::endl;
53+
std::string tradeId = tradeManager->openTrade(ticks[0].ask, 100000, true);
54+
std::cout << "Opened trade: " << tradeId << std::endl;
5555

56-
// size_t openTrades = tradeManager->reviewAccount();
57-
// std::cout << "Number of open trades: " << openTrades << std::endl;
56+
size_t openTrades = tradeManager->reviewAccount();
57+
std::cout << "Number of open trades: " << openTrades << std::endl;
5858

59-
// bool closed = tradeManager->closeTrade(tradeId);
60-
// std::cout << "Trade closed: " << (closed ? "yes" : "no") << std::endl;
59+
bool closed = tradeManager->closeTrade(tradeId);
60+
std::cout << "Trade closed: " << (closed ? "yes" : "no") << std::endl;
6161

6262
return 0;
6363

source/sqlManager.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
#include <string>
88
#include <vector>
99

10-
std::string SqlManager::getBaseQuery() {
11-
return "SELECT * FROM EURUSD WHERE timestamp >= dateadd('M', -" + std::to_string(LAST_MONTHS) + ", now()) LIMIT 40000000";
10+
std::string SqlManager::getBaseQuery(int LAST_MONTHS) {
11+
return "SELECT * FROM EURUSD WHERE timestamp >= dateadd('M', -" + std::to_string(LAST_MONTHS) + ", now()) LIMIT " + std::to_string(STREAM_LIMIT);
1212
}
1313

14-
std::vector<PriceData> SqlManager::streamPriceData(const DatabaseConnection& db) {
15-
std::string query = getBaseQuery();
14+
std::vector<PriceData> SqlManager::streamPriceData(const DatabaseConnection& db, int LAST_MONTHS) {
15+
std::string query = getBaseQuery(LAST_MONTHS);
1616
std::cout << "Executing query: " << query << std::endl;
1717
return db.streamQuery(query);
1818
}

0 commit comments

Comments
 (0)