2026-08-06 08:39:25 -05:00
2026-08-06 08:39:25 -05:00
2026-07-24 15:37:28 -05:00
2024-05-09 15:29:45 -05:00

Charls Schwab Quote recording bot

Expiry

  • Access token expires in 30 Min.
  • Refresh token expires in ?

File - Descriptions

appCredentials.dat

  • Base64 encoded App Credentials - "{app key}:{secret}"
  • Manually maintained

appKey.dat

  • only the application's AppKey
  • Manually maintained

allSymbols.json

  • List of all Symbols to get Data for
  • Manually maintained

access_token.dat

  • Current Access Token
  • written by getNewAccessToken.sh

accessTokenReqResp.json

  • Full JSON response of the last Access Token request
  • written by getNewAccessToken.sh

refresh_token.dat

  • Current refresh token
  • written by getNewRefreshToken.sh

refreshTokenReqResp.json

  • Full JSON response of the last Refresh Token request
  • written by getNewRefreshToken.sh

codeReceiveServer.py

  • Python HTTPS web server to receive and output the Authentication code from the Schwab Website callback
  • This web server only runs temporarily and ends after receiving a request

cert.pem

  • self signed certificate for the temporary HTTPS server that receives the code.
  • Manually maintained with:
    openssl req -new -x509 -keyout cert.pem -out cert.pem -days 365 -nodes Answer all questions hitting enter.

data/

  • Folder containing date sub-folders for the output data
  • Created and maintained by recordSingleSymbolSingleRun.sh

getNewAccessToken.sh

  • Gets a new access Token and saves it to file access_token.dat

getNewRefreshToken.sh

  • Gets a new refresh Token and saves it to file refresh_token.dat

recordAllSymbolsSingleRun.sh

  • Runs recordSingleSymbolSingleRun.sh for every Symbol in file allSymbols.json

recordQuoteSingleSymbolSingleRun.sh

  • requests stock quote data for a single symbol and writes output into the data/* Folder structure.

recordOptionChainSingleSymbolSingleRun.sh

  • requests option chain data for a single symbol and writes output into the data/* Folder structure.

NEW CHANGES, NEED TO DOCUMENT

jq <<< '{ "numberOfContracts":'$(( $(jq '.numberOfContracts' < ITM.json) + $(jq '.numberOfContracts' < OTM.json) ))' }' > numberOfContracts.tmp jq '. | del(.numberOfContracts) | map_values(select(type!="object"))' < ITM.json > CommonDetail.tmp jq '. | map_values(select(type=="object"))' < ITM.json > ITMo.tmp jq '. | map_values(select(type=="object"))' < OTM.json > OTMo.tmp jq -s '.[0] * .[1] * .[2] * .[3]' numberOfContracts.tmp CommonDetail.tmp ITMo.tmp OTMo.tmp | less

Description
No description provided
Readme 70 KiB
Languages
Shell 97.4%
Python 2.6%