Source code for h2o_dashboard.pages.okx_dashbaord_page.okx_dashboard_page

import asyncio
import os

from h2o_wave import Q, ui, on, data, run_on, AsyncSite  # noqa F401

from h2o_dashboard.pages.okx_dashbaord_page.okx_account_widget import OKX_Account_StreamWidget
# from h2o_dashboard.pages.okx_dashbaord_page.okx_algo_orders_widget import OKX_AlgoOrders_StreamWidget
from h2o_dashboard.pages.okx_dashbaord_page.okx_antbot_okx_premium_indicator_handler import \
    OKX_Premium_Indicator_Handler_Widget
from h2o_dashboard.pages.okx_dashbaord_page.okx_fill_report_widget import OKX_Fill_Report_StreamWidget
from h2o_dashboard.pages.okx_dashbaord_page.okx_orders_widget import OKX_Orders_StreamWidget
from h2o_dashboard.pages.okx_dashbaord_page.okx_positions_widget import OKX_Live_Positions_StreamWidget
from h2o_dashboard.util import add_card

app = AsyncSite()

REDIS_STREAM_MAX_LEN = int(os.getenv('REDIS_STREAM_MAX_LEN', 1000))


[docs] async def okx_dashboard_page(q: Q, update_seconds: int = 2): '''Header''' await add_card(q, 'OKXDEBUG_Header', ui.header_card(box='header', title='OKX Dashboard', subtitle='DevPage', # Color color='transparent', icon='DeveloperTools', icon_color=None, items=[ ui.link(label="OKX Market's Data Page", name='okx_website_stats', path='https://www.okx.com/markets/data/contracts', target=''), ui.link(label="OKX API Docs", name='okx_website_stats', path='https://www.okx.com/docs-v5/en/', target=''), ] )) # Add the the '''Init Widgets''' account_stream_widget = OKX_Account_StreamWidget(q=q, card_name='OKXDEBUG_Account_Stream', box='grid_1', history_count=REDIS_STREAM_MAX_LEN) fill_report_stream_widget = OKX_Fill_Report_StreamWidget(q=q, card_name='OKXDEBUG_Fill_Report_Stream', box='grid_2') positions_stream_widget = OKX_Live_Positions_StreamWidget(q=q, card_name='OKXDEBUG_Positions_Stream', box='grid_3') orders_stream_widget = OKX_Orders_StreamWidget(q=q, card_name='OKXDEBUG_Orders_Stream', box='grid_4') okx_premium_indicator_handler_widget = OKX_Premium_Indicator_Handler_Widget(q=q, card_name='OKXDEBUG_Premium_Manual_Controls', box='grid_5') '''Init RealTime Page Cards''' await account_stream_widget.add_cards() await positions_stream_widget.add_cards() await fill_report_stream_widget.add_cards() await orders_stream_widget.add_cards() await okx_premium_indicator_handler_widget.add_cards() await q.page.save() try: while True: if not q.client.okx_dashboard_page_running_event.is_set(): print("Breaking OKX Dashboard Page Loop") break await asyncio.sleep(update_seconds) # await account_stream_widget.update_cards() await positions_stream_widget.update_cards() await fill_report_stream_widget.update_cards() await orders_stream_widget.update_cards() await okx_premium_indicator_handler_widget.update_cards() await q.page.save() except asyncio.CancelledError: print("Cancelled") pass finally: print("Finally") q.client.okx_dashboard_page_running_event.clear() await q.page.save()