Update implemented check canFulfillOrder
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
#include "Wallet.h"
|
#include "Wallet.h"
|
||||||
|
#include "CSVReader.h"
|
||||||
|
|
||||||
Wallet::Wallet()
|
Wallet::Wallet()
|
||||||
{
|
{
|
||||||
@ -68,3 +69,22 @@ std::string Wallet::toString()
|
|||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Wallet::canFulfillOrder(OrderBookEntry order)
|
||||||
|
{
|
||||||
|
std::vector<std::string> currs = CSVReader::tokenise(order.product, '/');
|
||||||
|
// ask
|
||||||
|
if(order.orderType == OrderBookType::ask)
|
||||||
|
{
|
||||||
|
double amount = order.amount;
|
||||||
|
std::string currency = currs[0];
|
||||||
|
return containsCurrency(currency, amount);
|
||||||
|
}
|
||||||
|
if(order.orderType == OrderBookType::bid)
|
||||||
|
{
|
||||||
|
double amount = order.amount * order.price;
|
||||||
|
std::string currency = currs[1];
|
||||||
|
return containsCurrency(currency, amount);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include "OrderBookEntry.h"
|
||||||
|
|
||||||
class Wallet
|
class Wallet
|
||||||
{
|
{
|
||||||
@ -16,6 +17,9 @@ class Wallet
|
|||||||
/** check if the wallet contains at least this much currency */
|
/** check if the wallet contains at least this much currency */
|
||||||
bool containsCurrency(std::string type, double amount);
|
bool containsCurrency(std::string type, double amount);
|
||||||
|
|
||||||
|
/** check if the wallet can cope with the ask or bid */
|
||||||
|
bool canFulfillOrder(OrderBookEntry order);
|
||||||
|
|
||||||
/** generate a string representation of the wallet */
|
/** generate a string representation of the wallet */
|
||||||
std::string toString();
|
std::string toString();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user