tailwind #9

Manually merged
peperunas merged 157 commits from tailwind into master 2020-12-28 18:38:52 +00:00
3 changed files with 36 additions and 7 deletions
Showing only changes of commit 02678fd8e6 - Show all commits

View File

@ -107,6 +107,17 @@ class SymbolStatus:
def last_positions(self) -> List[PositionWrapper]:
return self.positions[self.current_tick]
def all_ticks(self) -> List[int]:
return [x for x in range(self.current_tick)]
def all_prices(self) -> List[float]:
res = []
for x in range(1, self.current_tick):
res.append(self.prices[x])
return res
# Applies strategy and adds position to list
async def add_position(self, position: Position):
pw = PositionWrapper(position)

21
main.py
View File

@ -489,26 +489,27 @@ import os
import threading
import dotenv
from flask import Flask, render_template
from flask_socketio import SocketIO
from bfxbot import BfxBot
from bfxbot.currency import Symbol
from bfxbot.models import EventHandler, PositionState, SymbolStatus, Event, EventKind
from bfxbot.models import SymbolStatus, Event, EventKind
from strategy import TrailingStopStrategy
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
socketio = SocketIO(app, async_mode="threading")
dotenv.load_dotenv()
loop = asyncio.new_event_loop()
bot = None
bot: BfxBot = None
@app.route('/')
def entry():
return render_template('index.html')
# dotenv.load_dotenv()
# API_KEY = os.getenv("API_KEY")
@ -529,7 +530,6 @@ def entry():
# while True:
# await bot.update()
from flask import request
@socketio.on("close")
def on_message(message: dict):
@ -537,6 +537,7 @@ def on_message(message: dict):
print("I would close position {}".format(position_id))
@socketio.on('connect')
def start_bot():
global bot
@ -547,13 +548,18 @@ def start_bot():
API_SECRET = os.getenv("API_SECRET")
if not bot:
bot = BfxBot(api_key=API_KEY, api_secret=API_SECRET, symbols=[Symbol.BTC], tick_duration=20)
bot = BfxBot(api_key=API_KEY, api_secret=API_SECRET, symbols=[Symbol.BTC], tick_duration=1)
strategy = TrailingStopStrategy()
bot.set_strategy(Symbol.BTC, strategy)
threading.Thread(target=lambda: asyncio.run(bot_loop())).start()
print("Bot started.")
socketio.emit("first_connect",
{"ticks": bot.status[Symbol.BTC].all_ticks(),
"prices": bot.status[Symbol.BTC].all_prices()})
async def bot_loop():
global bot
@ -568,5 +574,6 @@ async def bot_loop():
while True:
await bot.update()
if __name__ == '__main__':
socketio.run(app, debug=True)

View File

@ -5,6 +5,10 @@ import Plot from "react-plotly.js"
import { NewTickData, socket } from '../';
type FirstConnectData = {
ticks: Array<number>,
prices: Array<number>
}
type PlotState = {
x: Array<number>,
@ -22,6 +26,13 @@ class RPlot extends Component<{}, PlotState> {
}
componentDidMount() {
socket.on("first_connect", (data: FirstConnectData) => {
this.setState({
x: data.ticks,
y: data.prices
})
})
socket.on("new_tick", (data: NewTickData) => {
this.setState({
x: [...this.state.x, data.tick],