PineForge v0.13.1-379-g9b50973
Deterministic PineScript v6 backtest runtime — C ABI reference
Loading...
Searching...
No Matches
position_close_obligation.hpp
Go to the documentation of this file.
1#pragma once
2#include <cstdint>
3#include <optional>
4#include <string>
5#include <utility>
6
7namespace pineforge::broker {
8
9// Synchronous simulator intervention, not an external execution observation.
10// Taking this request permits an attempt; it does not assert a flat position.
12 uint64_t action_id;
15 std::string comment;
16};
17
19public:
20 bool pending() const { return due_.has_value(); }
21 const std::optional<PositionCloseRequest>& peek() const { return due_; }
22 void schedule(PositionCloseRequest request) { due_ = std::move(request); }
23 std::optional<PositionCloseRequest> take_at_open(int bar, int64_t live_cycle) {
24 if (!due_ || bar <= due_->after_bar) return std::nullopt;
25 auto request = std::exchange(due_, std::nullopt);
26 if (request->position_cycle != live_cycle) return std::nullopt;
27 return request;
28 }
29private:
30 std::optional<PositionCloseRequest> due_;
31};
32
33} // namespace pineforge::broker
std::optional< PositionCloseRequest > take_at_open(int bar, int64_t live_cycle)
const std::optional< PositionCloseRequest > & peek() const