syntax = "proto3";
package backproof;
// StrategyService
// A service about strategy configuration and runtime.
service StrategyService {
// Before running the strategy you need to register it.
rpc RegisterStrategy (RegisterStrategyRequest) returns (RegisterStrategyReply);
// Run a stream of event to synchronyse the user strategy and our backend.
rpc RunStrategy (stream RunStrategyInput) returns (stream RunStrategyOutput);
}
// Common
//
message Strategy {
string id = 1;
string name = 2;
repeated string sessionIds = 3;
}
message Candle {
double open = 1;
double low = 2;
double high = 3;
double close = 4;
double volume = 5;
// time unit
int32 tu = 6;
}
message Order {
string symbol = 1;
string quantity = 2;
enum Side {
LONG = 0;
SHORT = 1;
}
Side side = 3;
}
// Register Strategy
//
message RegisterStrategyRequest {
string apiKey = 1;
string strategyName = 2;
}
message RegisterStrategyReply {
enum Status {
OK = 0;
ERROR = 1;
}
Status status = 1;
string message = 2;
Strategy output = 3;
}
// Run Strategy
//
message RunStrategyInput {
string strategyId = 1;
oneof event {
Order order = 3;
StartSession startSession = 4;
EndSession endSession = 5;
}
}
message StartSession {
string apiKey = 1;
string sessionName = 2;
}
message EndSession {
string apiKey = 1;
string sessionName = 2;
}
message RunStrategyOutput {
int32 uptime = 1;
enum Status {
WAITING_FOR_START = 0;
RUNNING = 1;
STOPPED = 2;
}
Status status = 2;
string sessionName = 3;
string sessionId = 4;
oneof event {
Candle candle = 5;
EndSession endSession = 6;
}
}