Advertisement
i1last

future code, homework, 4.3.1. TradeSystem

May 16th, 2024 (edited)
46
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. #include <vector>
  2.  
  3. class ModuleBase {
  4. public:
  5.     virtual void OnTick(double price) = 0;
  6.     virtual void CloseAll() = 0;
  7. };
  8.  
  9.  
  10. class ModulesRouter {
  11.     std::vector<ModuleBase*> modules;
  12. public:
  13.     void OnTick(double price) {
  14.         for (auto modulePtr : modules) {
  15.             modulePtr->OnTick(price);
  16.         }
  17.     }
  18.     void AddModule(ModuleBase* ptr) {
  19.         modules.push_back(ptr);
  20.     }
  21.     void CloseAll() {
  22.         for (auto modulePtr : modules) {
  23.             modulePtr->CloseAll();
  24.         }
  25.     }
  26. };
  27.  
  28.  
  29.  
  30. class ModuleBorders : public ModuleBase {
  31.     AccountInterface* ptr;
  32.     std::vector<int> posIds;
  33. public:
  34.     ModuleBorders(AccountInterface* account) : ptr(account) {};
  35.  
  36.     void OnTick(double price) override {
  37.         if (price <= 4) {
  38.             auto balance = ptr->GetAvailBalance();
  39.             auto posSize = balance / price / price * 0.99;
  40.             auto posIndex = ptr->OpenPosition(posSize);
  41.             posIds.push_back(posIndex);
  42.         } else if (price >= 6) {
  43.             CloseAll();
  44.         }
  45.     }
  46.     void CloseAll() override {
  47.         for (auto index : posIds) {
  48.             ptr->ClosePosition(index);
  49.         }
  50.         posIds = std::vector<int>();
  51.     };
  52. };
Advertisement
Comments
  • i1last
    1 year
    Comment was deleted
Add Comment
Please, Sign In to add comment
Advertisement