diff --git a/autoTradeSPXPutCreditSpread.sh b/autoTradeSPXPutCreditSpread.sh new file mode 100755 index 0000000..9193118 --- /dev/null +++ b/autoTradeSPXPutCreditSpread.sh @@ -0,0 +1,83 @@ +#!/bin/bash +#set -x +IFS=$'\0' + +inputFile="$1" +if [[ "" == "$inputFile" ]]; then + latestFile="$(ls data/`date +%Y-%m-%d`/*\$SPX* | sort | tail -n 1)" + systemd-cat -t "`basename $0` $1" -p debug <<< "Latest File: _${latestFile}_" + inputFile=temp/orderInputFile.json + bzip2 -dc < "${latestFile}" > "${inputFile}" +fi +if [[ ! -f "${inputFile}" ]]; then + errMsg="ERROR: Input file _${inputFile}_ does not exist." + systemd-cat -t "`basename $0` $1" -p err <<< ${errMsg} + >&2 echo "${errMsg}" + exit 1 +fi + +dateKey=$(jq -r '.putExpDateMap | keys | .[]' "${inputFile}" | head -n 1) +systemd-cat -t "`basename $0` $1" -p debug <<< "Date-Key: _${dateKey}_" + +jq '.putExpDateMap."'${dateKey}'"[]|map({symbol, delta, strikePrice,bid,ask}) |.[] | select(.delta >= -0.30 and .delta <= -0.25) ' "${inputFile}" | tail -n 7 > temp/shortLeg.json +shortStrike=$(jq -r '.strikePrice' < temp/shortLeg.json) +shortBid=$(jq -r '.bid' < temp/shortLeg.json) +shortAsk=$(jq -r '.ask' < temp/shortLeg.json) +shortSymbol=$(jq -r '.symbol' < temp/shortLeg.json) +msg="Short Symbol: _${shortSymbol}_ Strike: _${shortStrike}_ Bid: _${shortBid}_ Ask: _${shortAsk}_" +systemd-cat -t "`basename $0` $1" -p info <<< ${msg} +echo "${msg}" + +jq '.putExpDateMap."2024-07-10:43"[]|map({symbol, delta, strikePrice,bid,ask}) | .[] | select(.strikePrice >= 5210-50 and .strikePrice < 5210)' temp/orderInputFile.json | head -n 7 > temp/longLeg.json +longStrike=$(jq -r '.strikePrice' < temp/longLeg.json) +longBid=$(jq -r '.bid' < temp/longLeg.json) +longAsk=$(jq -r '.ask' < temp/longLeg.json) +longSymbol=$(jq -r '.symbol' < temp/longLeg.json) +msg="Long Symbol: _${longSymbol}_ Strike: _${longStrike}_ Bid: _${longBid}_ Ask: _${longAsk}_" +systemd-cat -t "`basename $0` $1" -p info <<< ${msg} +echo "${msg}" + +orderJson=$(cat <<-EOM +{ + "orderType": "NET_CREDIT", + "session": "NORMAL", + "price": 5, + "duration": "DAY", + "orderStrategyType": "SINGLE", + "quantity": 1, + "orderLegCollection": [ + { + "instruction": "SELL_TO_OPEN", + "quantity": 1, + "instrument": { + "symbol": "${shortSymbol}", + "assetType": "OPTION" + } + }, + { + "instruction": "BUY_TO_OPEN", + "quantity": 1, + "instrument": { + "symbol": "${longSymbol}", + "assetType": "OPTION" + } + } + ] +} +EOM +) + + +echo ${orderJson} +./getNewAccessToken.sh + +set -x +tempFile=temp/order.tmp.$$.json +#curl -s -X POST "https://api.schwabapi.com/trader/v1/accounts/99114DC5A768D40C3FD47D02734C696EB1FEB1063D2EE864528135D8CF31392A/orders" -H "Authorization: Bearer $( ${tempFile} +curl -s -X POST \ + 'https://api.schwabapi.com/trader/v1/accounts/E8A70AE41449257FA5A7EABFF463BA93F23E629B909C3E09DA192582718D7627/orders' \ + -H "Authorization: Bearer $( ${tempFile} +jq '.' < ${tempFile} +