Files
OptionRecorderSchwab/README.md

72 lines
2.6 KiB
Markdown
Raw Normal View History

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