Convert arguments to files, validate them as CSVs and backtest.
13 {
14
15 using namespace std::literals::string_view_literals;
16
17
18 std::vector<std::string_view> files;
19 for (int i = 0; i < argc; ++i)
20 if (std::filesystem::path(argv[i]).extension() == ".csv"sv)
21 files.push_back(argv[i]);
22
23
25
26
28 const auto csv =
to_csv(summary);
29
30
31 std::println(
32 "- {} currency pairs (from Marketstack, Coinbase, Kraken, Binance)", std::size(files));
35 std::println(
"- {} candles window size",
fx::win);
38 std::println("{}", markdown);
39
40
41 std::ofstream{"summary.csv"} << csv;
42
43 ::benchmark::Initialize(&argc, argv);
44 ::benchmark::RunSpecifiedBenchmarks();
45}
std::vector< trade_t > to_summary(std::span< const std::string_view > files)
constexpr auto stop_loss
Close position if price has decreased by this percentage.
constexpr auto minimum_entry
Minimum price to consider a trade.
constexpr auto take_profit
Close position if price has increased by this percentage.
constexpr auto win
The number of prices in a trading window.
constexpr auto minimum_atr
Minimum (normalised) ATR to consider a trade.
std::string to_csv(std::span< const trade_t > summary)
Convert summary of trades to CSV string.
std::string to_markdown(std::span< const trade_t > summary)
Convert summary of trades to markdown string.