Working protocol
This commit is contained in:
+13
-2
@@ -36,7 +36,7 @@ class PulseWire:
|
||||
|
||||
class Strategy(PulseWire):
|
||||
def on_request(self, req: plugin.StrategyEngineMessage):
|
||||
pass
|
||||
...
|
||||
|
||||
def send(self, req: plugin.StrategyMessageType):
|
||||
self.send_raw(req.to_com())
|
||||
@@ -69,7 +69,7 @@ class Strategy(PulseWire):
|
||||
|
||||
class Risk(PulseWire):
|
||||
def on_request(self, req: plugin.RiskEngineMessage):
|
||||
pass
|
||||
...
|
||||
|
||||
def send(self, req: plugin.RiskMessageType):
|
||||
self.send_raw(req.to_com())
|
||||
@@ -94,3 +94,14 @@ class Risk(PulseWire):
|
||||
|
||||
def on_raw_engine_request(self, data: bytes):
|
||||
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
@@ -1,6 +1,7 @@
|
||||
from pwp import pwp, pwp_enum, PulseWire
|
||||
from adv_types import *
|
||||
import units
|
||||
from typing import TypeAlias
|
||||
|
||||
@pwp_enum
|
||||
class MarketTrend(PulseWire):
|
||||
@@ -42,12 +43,73 @@ class Signal(PulseWire):
|
||||
take_profit: 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
|
||||
class EventLog(PulseWire):
|
||||
kind: LogKind
|
||||
kind: LogKindType
|
||||
name: 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
|
||||
class Position(PulseWire):
|
||||
symbol: units.Symbol
|
||||
|
||||
+2
-2
@@ -63,7 +63,7 @@ class StrategyEngineMessage(PulseWire):
|
||||
interval: general.CandleInterval
|
||||
candle: general.Candle
|
||||
|
||||
class CandleStick(PulseWire):
|
||||
class Candlestick(PulseWire):
|
||||
symbol: str
|
||||
interval: general.CandleInterval
|
||||
candles: list[general.Candle]
|
||||
@@ -105,7 +105,7 @@ StrategyEngineMessageType: TypeAlias = (
|
||||
| StrategyEngineMessage.WatchList
|
||||
| StrategyEngineMessage.Command
|
||||
| StrategyEngineMessage.CandleUpdate
|
||||
| StrategyEngineMessage.CandleStick
|
||||
| StrategyEngineMessage.Candlestick
|
||||
)
|
||||
|
||||
RiskEngineMessageType: TypeAlias = (
|
||||
|
||||
+2
-2
@@ -461,7 +461,7 @@ def pwp_enum(cls: T) -> T:
|
||||
|
||||
return (
|
||||
idx.to_bytes(1, "little")
|
||||
+ PulseWire.to_com(self)
|
||||
+ self.to_com()
|
||||
)
|
||||
|
||||
raise PWPError(
|
||||
@@ -484,7 +484,7 @@ def pwp_enum(cls: T) -> T:
|
||||
)
|
||||
|
||||
enum_id = data[offset]
|
||||
offset += 1
|
||||
# offset += 1
|
||||
|
||||
|
||||
if enum_id not in variants:
|
||||
|
||||
+5
-5
@@ -1,21 +1,21 @@
|
||||
from pwp import pwp, pwp_enum
|
||||
from pwp import pwp, pwp_enum, PulseWire
|
||||
from adv_types import *
|
||||
|
||||
@pwp
|
||||
class Symbol:
|
||||
class Symbol(PulseWire):
|
||||
unit: str
|
||||
|
||||
@pwp
|
||||
class USD:
|
||||
class USD(PulseWire):
|
||||
unit: f64
|
||||
|
||||
@pwp_enum
|
||||
class Direction:
|
||||
class Direction(PulseWire):
|
||||
class Buy: pass
|
||||
class Sell: pass
|
||||
|
||||
@pwp_enum
|
||||
class Volatility:
|
||||
class Volatility(PulseWire):
|
||||
class Low: pass
|
||||
class Medium: pass
|
||||
class High: pass
|
||||
|
||||
Reference in New Issue
Block a user