Yvictor
sjtrade
Python

shioaji day trading demo package

Last updated Mar 27, 2025
32
Stars
10
Forks
0
Issues
0
Stars/day
Attention Score
26
Language breakdown
No language data available.
Files click to expand
README

sjtrade

PyPI Code style: black Test and Deploy codecov Telegram Open Tutorial In Colab

shioaji day trading demo package

Install

pip install sjtrade

Get started

Init Shioaji and SjTrader

python
import shioaji as sj
import sjtrade

api = sj.Shioaji() accounts = api.login(**login_kws) sjtrader = sjtrade.SJTrader(api)

Set Position Filepath and Preview Position

python
sjtrader.position_filepath = "position.txt"
sjtrade.io.file.readposition(sjtrader.positionfilepath)

Set Custom Position FileReader

python
from sjtrade.io.file import readcsvposition
sjtrader.readpositionfunc = readcsvposition
sjtrader.position_filepath = "position.csv"
sjtrader.readpositionfunc(sjtrader.position_filepath)

Set entrypct stopprofitpct stoploss_pct

python
sjtrader.entry_pct = 0.05
sjtrader.stopprofitpct = 0.095
sjtrader.stoplosspct = 0.09

Start sjtrader

python
sjtrader.start()

What do sjtrader start actually do

ipython
sjtrader.start??
Signature: sjtrader.start()
Source:   
    def start(self):
        positions = readposition(self.position_filepath)
        self.api.setordercallback(self.orderdealhandler)
        sleep_until(8, 45)
        self.placeentryorder(positions, self.entry_pct)
        sleep_until(8, 54, 59)
        self.api.quote.setontickstkv1callback(self.cancelpreorder_handler)
        sleep_until(8, 59, 55)
        self.api.quote.setontickstkv1callback(self.intradayhandler)
        sleep_until(13, 25, 59)
        self.openpositioncover()
File:      ~/.pyenv/versions/miniconda3-latest/lib/python3.7/site-packages/sjtrade/trader.py
Type:      method

Simulation

all order will be place as success and deal when price touch
api = sj.Shioaji()
accounts = api.login(**login_kws)
sjtrader = sjtrade.SJTrader(api, simulation=True)
sjtrader.position_filepath = "position.txt"
sjtrade.io.file.readposition(sjtrader.positionfilepath)
sjtrader.entry_pct = 0.05
sjtrader.stopprofitpct = 0.095
sjtrader.stoplosspct = 0.09
sjtrader.start()

Notifications

bash
pip install notifiers

Check notifiers

python
from notifiers import get_notifier
notifier = get_notifier("telegram")
TELECHATID = ""
TELEBOT_TOKEN = ""
PARAMS = {"chatid": TELECHATID, "token": TELEBOTTOKEN}
notifier.notify(message="test", **PARAMS)

Check logger

python
from loguru import logger
from notifiers.logging import NotificationHandler
handler = NotificationHandler("telegram", defaults=PARAMS)
logger.add(handler, level="INFO")
logger.info("logger test")

Developer's guide

flit install -s
🔗 More in this category

© 2026 GitRepoTrend · Yvictor/sjtrade · Updated daily from GitHub