31 #include "../utils.hpp"
32 #include "rapidcsv/src/rapidcsv.h"
33 #include "rapidjson/include/rapidjson/document.h"
34 #include "rapidjson/include/rapidjson/rapidjson.h"
36 namespace kiteconnect {
39 namespace rj = rapidjson;
40 namespace kc = kiteconnect;
41 namespace utils = kc::internal::utils;
45 explicit orderCharges(
const rj::Value::Object& val) { parse(val); };
47 void parse(
const rj::Value::Object& val) {
48 transactionTax = utils::json::get<double>(val,
"transaction_tax");
49 exchangeTurnoverCharge =
50 utils::json::get<double>(val,
"exchange_turnover_charge");
52 utils::json::get<double>(val,
"sebi_turnover_charge");
53 brokerage = utils::json::get<double>(val,
"brokerage");
54 stampDuty = utils::json::get<double>(val,
"stamp_duty");
55 total = utils::json::get<double>(val,
"total");
57 utils::json::get<string>(val,
"transaction_tax_type");
58 gst = utils::json::get<utils::json::JsonObject, Gst>(val,
"gst");
61 double transactionTax = -1;
62 double exchangeTurnoverCharge = -1;
63 double sebiTurnoverCharge = -1;
64 double brokerage = -1;
65 double stampDuty = -1;
67 string transactionTaxType;
70 explicit Gst(
const rj::Value::Object& val) { parse(val); };
72 void parse(
const rj::Value::Object& val) {
73 igst = utils::json::get<double>(val,
"igst");
74 cgst = utils::json::get<double>(val,
"cgst");
75 sgst = utils::json::get<double>(val,
"sgst");
76 total = utils::json::get<double>(val,
"total");
90 GENERATE_FLUENT_METHOD(
marginsParams,
double, quantity, Quantity);
92 GENERATE_FLUENT_METHOD(
marginsParams,
double, triggerPrice, TriggerPrice);
93 GENERATE_FLUENT_METHOD(
marginsParams,
const string&, exchange, Exchange);
94 GENERATE_FLUENT_METHOD(
96 GENERATE_FLUENT_METHOD(
97 marginsParams,
const string&, transactionType, TransactionType);
98 GENERATE_FLUENT_METHOD(
marginsParams,
const string&, variety, Variety);
99 GENERATE_FLUENT_METHOD(
marginsParams,
const string&, product, Product);
100 GENERATE_FLUENT_METHOD(
marginsParams,
const string&, orderType, OrderType);
104 double triggerPrice = 0;
106 string tradingsymbol;
107 string transactionType;
116 explicit orderMargins(
const rj::Value::Object& val) { parse(val); };
118 void parse(
const rj::Value::Object& val) {
119 type = utils::json::get<string>(val,
"type");
120 tradingSymbol = utils::json::get<string>(val,
"tradingsymbol");
121 exchange = utils::json::get<string>(val,
"exchange");
122 span = utils::json::get<double>(val,
"span");
123 exposure = utils::json::get<double>(val,
"exposure");
124 optionPremium = utils::json::get<double>(val,
"option_premium");
125 additional = utils::json::get<double>(val,
"additional");
126 bo = utils::json::get<double>(val,
"bo");
127 cash = utils::json::get<double>(val,
"cash");
128 var = utils::json::get<double>(val,
"var");
129 pnl = utils::json::get<utils::json::JsonObject, PNL>(val,
"pnl");
130 total = utils::json::get<double>(val,
"total");
131 leverage = utils::json::get<double>(val,
"leverage");
132 charges = utils::json::get<utils::json::JsonObject, orderCharges>(
137 double exposure = -1;
138 double optionPremium = -1;
139 double additional = -1;
144 double leverage = -1;
146 string tradingSymbol;
150 explicit PNL(
const rj::Value::Object& val) { parse(val); };
152 void parse(
const rj::Value::Object& val) {
153 realised = utils::json::get<double>(val,
"realised");
154 unrealised = utils::json::get<double>(val,
"unrealised");
157 double realised = -1;
158 double unrealised = -1;
165 explicit basketMargins(
const rj::Value::Object& val) { parse(val); };
167 void parse(
const rj::Value::Object& val) {
168 initial = utils::json::get<utils::json::JsonObject, orderMargins>(
170 final = utils::json::get<utils::json::JsonObject, orderMargins>(
172 charges = utils::json::get<utils::json::JsonObject, orderCharges>(
175 rj::Value ordersVal(rj::kArrayType);
176 utils::json::get<utils::json::JsonArray>(val, ordersVal,
"orders");
177 for (
auto& i : ordersVal.GetArray()) {
178 orders.emplace_back(i.GetObject());
184 std::vector<orderMargins> orders;