added positions on connect event. new socketio event, new_event
This commit is contained in:
parent
ff0796024a
commit
4114333632
30
main.py
30
main.py
@ -13,6 +13,7 @@ from flask_socketio import SocketIO
|
||||
from bfxbot import BfxBot
|
||||
from bfxbot.currency import Symbol
|
||||
from bfxbot.models import PositionWrapper, SymbolStatus, Event, EventKind
|
||||
from bfxbot.utils import pos_to_json
|
||||
from strategy import TrailingStopStrategy
|
||||
|
||||
|
||||
@ -64,18 +65,22 @@ def on_close_position(message: dict):
|
||||
@socketio.on('connect')
|
||||
def on_connect():
|
||||
# sleeping on exception to avoid race condition
|
||||
ticks, prices = [], []
|
||||
ticks, prices, positions = [], [], []
|
||||
|
||||
while not ticks or not prices:
|
||||
try:
|
||||
ticks = bot.symbol_status(Symbol.BTC).all_ticks()
|
||||
prices = bot.symbol_status(Symbol.BTC).all_prices()
|
||||
positions = bot.symbol_status(Symbol.BTC).current_positions()
|
||||
except KeyError:
|
||||
sleep(1)
|
||||
|
||||
socketio.emit("first_connect",
|
||||
{"ticks": ticks,
|
||||
"prices": prices})
|
||||
{
|
||||
"ticks": ticks,
|
||||
"prices": prices,
|
||||
"positions": list(map(pos_to_json, positions))
|
||||
})
|
||||
|
||||
|
||||
###################################
|
||||
@ -84,18 +89,6 @@ def on_connect():
|
||||
|
||||
@btc_eh.on_event(EventKind.NEW_TICK)
|
||||
def on_new_tick(event: Event, status: SymbolStatus):
|
||||
# TODO: finalize JSON structure
|
||||
def pos_to_json(pw: PositionWrapper):
|
||||
return {
|
||||
"id": pw.position.id,
|
||||
"amount": pw.position.amount,
|
||||
"base_price": pw.position.base_price,
|
||||
"state": str(pw.state()),
|
||||
"symbol": pw.position.symbol,
|
||||
"profit_loss": pw.net_profit_loss(),
|
||||
"profit_loss_percentage": pw.net_profit_loss_percentage()
|
||||
}
|
||||
|
||||
tick = event.tick
|
||||
price = status.prices[event.tick]
|
||||
|
||||
@ -106,5 +99,12 @@ def on_new_tick(event: Event, status: SymbolStatus):
|
||||
"positions": list(map(pos_to_json, positions))})
|
||||
|
||||
|
||||
@btc_eh.on_any_event()
|
||||
def on_any_event(event: Event, _):
|
||||
socketio.emit("new_event", {
|
||||
"tick": event.tick,
|
||||
"kind": event.kind.name
|
||||
})
|
||||
|
||||
if __name__ == '__main__':
|
||||
socketio.run(app, debug=True)
|
||||
|
Loading…
Reference in New Issue
Block a user