Working protocol

This commit is contained in:
2026-07-28 16:53:15 +02:00
parent 2b26ce46fc
commit 7764cf8f7a
5 changed files with 85 additions and 12 deletions
+13 -2
View File
@@ -36,7 +36,7 @@ class PulseWire:
class Strategy(PulseWire): class Strategy(PulseWire):
def on_request(self, req: plugin.StrategyEngineMessage): def on_request(self, req: plugin.StrategyEngineMessage):
pass ...
def send(self, req: plugin.StrategyMessageType): def send(self, req: plugin.StrategyMessageType):
self.send_raw(req.to_com()) self.send_raw(req.to_com())
@@ -69,7 +69,7 @@ class Strategy(PulseWire):
class Risk(PulseWire): class Risk(PulseWire):
def on_request(self, req: plugin.RiskEngineMessage): def on_request(self, req: plugin.RiskEngineMessage):
pass ...
def send(self, req: plugin.RiskMessageType): def send(self, req: plugin.RiskMessageType):
self.send_raw(req.to_com()) self.send_raw(req.to_com())
@@ -94,3 +94,14 @@ class Risk(PulseWire):
def on_raw_engine_request(self, data: bytes): def on_raw_engine_request(self, data: bytes):
com = plugin.RiskEngineMessage.from_com(data=data) com = plugin.RiskEngineMessage.from_com(data=data)
class Bro(Strategy):
def __init__(self):
self.log(general.EventLog.info("bro", "Hello, World"))
super().__init__()
def on_request(self, req: plugin.StrategyEngineMessage):
# self.log(general.EventLog.info("bro", "Hello, World"))
pass
Bro().start()
+63 -1
View File
@@ -1,6 +1,7 @@
from pwp import pwp, pwp_enum, PulseWire from pwp import pwp, pwp_enum, PulseWire
from adv_types import * from adv_types import *
import units import units
from typing import TypeAlias
@pwp_enum @pwp_enum
class MarketTrend(PulseWire): class MarketTrend(PulseWire):
@@ -42,12 +43,73 @@ class Signal(PulseWire):
take_profit: units.USD take_profit: units.USD
stop_loss: units.USD stop_loss: units.USD
MarketTrendType: TypeAlias = (
MarketTrend.Bullish
| MarketTrend.Bearish
| MarketTrend.Neutral
)
LogKindType: TypeAlias = (
LogKind.Info
| LogKind.Warn
| LogKind.Err
| LogKind.Debug
)
CandleIntervalType: TypeAlias = (
CandleInterval.OneMinute
| CandleInterval.ThreeMinutes
| CandleInterval.FiveMinutes
| CandleInterval.FifteenMinutes
| CandleInterval.ThirtyMinutes
| CandleInterval.OneHour
| CandleInterval.TwoHours
| CandleInterval.FourHours
| CandleInterval.EightHours
| CandleInterval.TwelveHours
| CandleInterval.OneDay
| CandleInterval.ThreeDays
| CandleInterval.OneWeek
| CandleInterval.OneMonth
)
@pwp @pwp
class EventLog(PulseWire): class EventLog(PulseWire):
kind: LogKind kind: LogKindType
name: str name: str
message: str message: str
@classmethod
def info(cls, name: str, message: str):
log = cls()
log.kind = LogKind.Info()
log.name = name
log.message = message
return log
@classmethod
def warn(cls, name: str, message: str):
log = cls()
log.kind = LogKind.Warn()
log.name = name
log.message = message
return log
@classmethod
def error(cls, name: str, message: str):
log = cls()
log.kind = LogKind.Err()
log.name = name
log.message = message
return log
@classmethod
def debug(cls, name: str, message: str):
log = cls()
log.kind = LogKind.Debug()
log.name = name
log.message = message
return log
@pwp @pwp
class Position(PulseWire): class Position(PulseWire):
symbol: units.Symbol symbol: units.Symbol
+2 -2
View File
@@ -63,7 +63,7 @@ class StrategyEngineMessage(PulseWire):
interval: general.CandleInterval interval: general.CandleInterval
candle: general.Candle candle: general.Candle
class CandleStick(PulseWire): class Candlestick(PulseWire):
symbol: str symbol: str
interval: general.CandleInterval interval: general.CandleInterval
candles: list[general.Candle] candles: list[general.Candle]
@@ -105,7 +105,7 @@ StrategyEngineMessageType: TypeAlias = (
| StrategyEngineMessage.WatchList | StrategyEngineMessage.WatchList
| StrategyEngineMessage.Command | StrategyEngineMessage.Command
| StrategyEngineMessage.CandleUpdate | StrategyEngineMessage.CandleUpdate
| StrategyEngineMessage.CandleStick | StrategyEngineMessage.Candlestick
) )
RiskEngineMessageType: TypeAlias = ( RiskEngineMessageType: TypeAlias = (
+2 -2
View File
@@ -461,7 +461,7 @@ def pwp_enum(cls: T) -> T:
return ( return (
idx.to_bytes(1, "little") idx.to_bytes(1, "little")
+ PulseWire.to_com(self) + self.to_com()
) )
raise PWPError( raise PWPError(
@@ -484,7 +484,7 @@ def pwp_enum(cls: T) -> T:
) )
enum_id = data[offset] enum_id = data[offset]
offset += 1 # offset += 1
if enum_id not in variants: if enum_id not in variants:
+5 -5
View File
@@ -1,21 +1,21 @@
from pwp import pwp, pwp_enum from pwp import pwp, pwp_enum, PulseWire
from adv_types import * from adv_types import *
@pwp @pwp
class Symbol: class Symbol(PulseWire):
unit: str unit: str
@pwp @pwp
class USD: class USD(PulseWire):
unit: f64 unit: f64
@pwp_enum @pwp_enum
class Direction: class Direction(PulseWire):
class Buy: pass class Buy: pass
class Sell: pass class Sell: pass
@pwp_enum @pwp_enum
class Volatility: class Volatility(PulseWire):
class Low: pass class Low: pass
class Medium: pass class Medium: pass
class High: pass class High: pass