Skip to content

Instantly share code, notes, and snippets.

View ypochien's full-sized avatar
🎯
Focusing

Po Chien Yang ypochien

🎯
Focusing
View GitHub Profile
@ypochien
ypochien / CancelAllOrder.py
Last active December 10, 2022 15:33
刪除全部的委託單
api.update_status()
for idx,t in enumerate(api.list_trades()):
if t.status.status in [shioaji.constant.Status.PreSubmitted,shioaji.constant.Status.Submitted,shioaji.constant.Status.PartFilled] :
api.cancel_order(t,timeout=0)
@ypochien
ypochien / PositionAid.py
Last active May 15, 2024 00:31
Shioaji Sample - 先透過 createPositionFromPnl 建立當下部位狀態,後面透過 Shioaji 成交回報 即時更新股票持倉部位
from loguru import logger
from dataclasses import dataclass
from typing import Optional, Dict, List
import math
import shioaji as sj
from shioaji.constant import OrderState, Action, StockOrderCond
@dataclass
class StockPosition:
@ypochien
ypochien / clear_all.py
Created December 1, 2021 05:27
13:25之後用漲跌停價格反向出場
def clear_all():
"""13:25之後用漲跌停價格反向出場"""
#只處理今天新增的現股 (現股當沖、不含興櫃)
pnls = [one for one in api.list_positions() if abs(one.quantity) - one.yd_quantity!=0]
for one_pnl in pnls:
contract = api.Contracts.Stocks[one_pnl.code]
if contract == None:
print(f"無此商品 {one_pnl.code}")
continue
action = "Buy"
@ypochien
ypochien / SJ_quote_sample.py
Created May 2, 2020 12:17
成交+委買賣顯示
def quote_callback(topic, data):
"""
# L/TFE/TXFF9
{'Amount': [21088.0], 'AmountSum': [1028165646.0], 'AvgPrice': [10562.513699263414],
'Close': [10544.0], 'Code': 'TXFF9', 'Date': '2019/05/16', 'DiffPrice': [-37.0],
'DiffRate': [-0.34968339476419996], 'DiffType': [4], 'High': [10574.0],
'Low': [10488.0], 'Open': 10537.0, 'TargetKindPrice': 10548.47, 'TickType': [2],
'Time': '11:15:11.911000', 'TradeAskVolSum': 52599, 'TradeBidVolSum': 53721,
'VolSum': [97341], 'Volume': [2]}
@ypochien
ypochien / shioaji_login.py
Last active April 28, 2020 02:22
[SAMPLE] Sinopac Shioaji Login and print contracts ready message.
import shioaji as sj
import datetime
api = sj.Shioaji()
def cb_contract(msg):
print(datetime.datetime.now(), msg)
api.login("USERID","PASSWORD" ,contracts_timeout=0 ,contracts_cb=cb_contract)
@ypochien
ypochien / test.js
Created November 10, 2018 06:37
uupp
input = document.getElementsByClassName('emojipicker-input')[0]
send = document.getElementsByClassName('send')[0]
let prev_like_count = document.querySelectorAll('.item.like span.name').length
let prev_chat_count = document.querySelectorAll('.item.chat span.name').length
let prev_gift_count = document.getElementsByClassName('item gift').length
let prev_follow_count = document.querySelectorAll('.item.follow span.name').length
inter_like = setInterval(() => {
eleLike = document.querySelectorAll('.item.like span.name')
if (eleLike.length > prev_like_count) {
@ypochien
ypochien / test.js
Created November 10, 2018 06:37
uupp
input = document.getElementsByClassName('emojipicker-input')[0]
send = document.getElementsByClassName('send')[0]
let prev_like_count = document.querySelectorAll('.item.like span.name').length
let prev_chat_count = document.querySelectorAll('.item.chat span.name').length
let prev_gift_count = document.getElementsByClassName('item gift').length
let prev_follow_count = document.querySelectorAll('.item.follow span.name').length
inter_like = setInterval(() => {
eleLike = document.querySelectorAll('.item.like span.name')
if (eleLike.length > prev_like_count) {
@ypochien
ypochien / httpd.sh
Last active March 19, 2017 20:57
osx server - httpd
Start Service.
sudo launchctl load -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist
sudo launchctl load -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.server.httpd.plist
Stop Service.
sudo launchctl unload -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist
sudo launchctl unload -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.server.httpd.plist
import pandas as pd
def calc(*_ohlcv):
data = dict(list(zip(['open','high','low','close','volume'],_ohlcv)))
ohlc = pd.DataFrame(data)
stratData = pd.DataFrame(index=ohlc.index)
stratData['cc'] = 100*ohlc['close'].pct_change()
stratData['co'] = 100*(ohlc['open']/ohlc['close'].shift(1)-1)
idx = (stratData['cc']<-0.25).shift(1) & (stratData['co'] < -0.1)
idx[0] = False
@ypochien
ypochien / cp950toutf8.py
Created December 20, 2016 02:19
cp950 to UTF8
def decorate_to_utf8(func):
"""只要參數是str就要to cp950給t4.dll
只要回傳值是bytes就要to utf8給 Api caller"""
def func_wrapper(*args):
new_args = list(args)
for idx, arg in enumerate(args):
if isinstance(arg, str):
new_args[idx] = args[idx].encode('utf-8')