Code Monkey home page Code Monkey logo

swissalgoknife's Introduction

SwissAlgoKnife

Utilities to automate small daily tasks for algo traders.

WARNING: Based on https://github.com/PySimpleGUI/, these are one shot windows. Plan your workflow, or be prepared to open and close the application in entirety since a window once closed cannot be opened again. As soon as there's a solution for this, this warning will be removed. Latest change made to SwissAlgoKnife.py (2019-12-29) allow windows to opened and close multiple times. The change was to use read-execute on the files contained in SAKModules directory, rather than importing them at the click of a button. This also allows new modules to be added to the project without any changes needed in the front end.

Project Structure:

SwissAlgoKnife
    |-SwissAlgoKnife.py
    |-SAKModules
        |-IBKRAllinone.py
        |-MySQL_Allinone.py
        |-IBKR_Connect_Window.py
        |-IBKR_Historical_Window.py
        |-IBKR_Tick_Data_Window.py
        |-ALPACA_Connect.py
        |-UPSTOX_Connect_Window.py
        |-SAK_NSEOptionChainExtractor.py
        |-__pycache__
    |-Secret
        |-Cred.py
    |-Downloads
        |-<various downloaded data files>
    |-__pycache__

Description of files

  • SwissAlgoKnife.py - just an entry point to the application.
  • SAKModules - Folder containing all utilities. Each utility is designed to also be a standalone file.
  • IBKRAllinone.py - All IBKR functions in one file: Connect, get OHLC Data, get Tick Data
  • MySQL_Allinone.py - All MySQL functions in one file: Connect, store OHLC Data, store Tick Data. (TODO: (1) Retrieval function WIP, (2) store Option Chain Data.)
  • IBKR_Connect_Window.py - older window. To connect to IBKR.
  • IBKR_Historical_Window.py - older window. To get OHLC Data.
  • IBKR_Tick_Data_Window.py - older window. To get tick Data.
  • SAK_NSEOptionChainExtractor.py - crawls and collects data from NSE Options Chain pages. Creates a separate CSV file for each symbol. Will keep appending to CSV if file isn't removed from directory. (TODO: (1) Subdivide Downloads directory into different folders for different types of downloaded data, (2) pick up list_identifiers from a file instead of hardcoded values.)
  • ALPACA_Connect.py - WIP.
  • SAK_Zerodha.py - coming sooner.
  • SAK_Fyers.py - coming later.
  • UPSTOX_Connect_Window.py - frozen due to Upstox discontinuing API.
  • pycache - don't touch.
  • Secret - folder for credential files
  • Cred.py - file containing credentials for all APIs in one place.
  • Downloads - folder for all downloaded files across utilities.
  • pycache - don't touch.

Interactive Brokers Utilities

Written with https://github.com/erdewit/ib_insync.

  • Connect to TWS or Gateway on localhost:port:UID
  • View and download OHLC data for one symbol, one request at a time
  • Download Tick data for one symbol, between any two start and end dates

MySQL Utilities

Written using SQLAlchemy.

  • Connect to local MySQL server
  • Commit OHLC and Tick data files to respective tables

Upstox Utilities

Frozen due to unavailability of Upstox Historical API

Zerodha Utilities

WIP

Fyers Utilities

WIP

HDF5 Utilities

Planning

swissalgoknife's People

Contributors

algonitish avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swissalgoknife's Issues

Keep running

Hello Nitish - THanks a lot for wonderful initiative..Saw your tweet and got into this place. Tried with SBIN and it keeps running and running. Did this at around 0730 PM IST.

All weekly expiry not included

datelist=re.findall('[0-9]{2}[A-Z]{3}[0-9]{4}', rawlist) misses out on weekly expiries like 2Jan2020.

datelist.sort(key = lambda date: datetime.datetime.strptime(date, '%d%b%Y')) can preserve chronological order.

I couldn't get the UI to start, but that could be because I was working with virtualenv

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.