Skip to content

Instantly share code, notes, and snippets.

@rezahussain
Last active February 10, 2021 03:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rezahussain/f5dcfc586e7f54e439e8548f25157133 to your computer and use it in GitHub Desktop.
Save rezahussain/f5dcfc586e7f54e439e8548f25157133 to your computer and use it in GitHub Desktop.
HelloWorldTDAmeritradeTrader
//THE SAMPLE CODE ON THIS PAGE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
//INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
//ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
//INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) SUSTAINED BY YOU
//OR A THIRD PARTY, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
//CONTRACT, STRICT LIABILITY, OR TORT ARISING IN ANY WAY OUT OF THE USE OF
//THIS SAMPLE CODE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//
// main.swift
// HelloworldTrader
//
// Created by admin on 2/7/21.
//
import Foundation
import TDAmeritradeForSwift
let accountNumber = 42069
let tdameritradeRedirectURI = "http://Localhost:8080/"
let appConsumerKey = "69420ABC"
let chosenSymbol = "SNAP"
let tdAmeritradeConsumerKey = appConsumerKey
let (someAuthCode,someClientId) = try TDAmeritradeForSwift.obtainInitialAuthorizationCodeUsingLocalhostServer(tempLocalhostServerPort:8080,tdameritradeRedirectURI:tdameritradeRedirectURI,tdameritradeConsumerKey:tdAmeritradeConsumerKey,sslCertPath:"/Users/admin/Desktop/localhost-ssl/localhost.crt",sslKeyPath:"/Users/admin/Desktop/localhost-ssl/localhost.key")
print(someAuthCode!)
print(someClientId)
print(tdameritradeRedirectURI)
let (refreshToken,accessToken) = TDAmeritradeForSwift.grantRefreshTokenAndAccessTokenUsingAuthorizationCode(clientId: someClientId,
authCode: someAuthCode!,
tdameritradeRedirectURI:tdameritradeRedirectURI)
let accessToken2 = TDAmeritradeForSwift.grantAccessTokenUsingRefreshToken(clientId:someClientId,refreshToken:refreshToken!,tdameritradeRedirectURI:tdameritradeRedirectURI)
print("\(accessToken2!)")
let someAccount = TDAmeritradeForSwift.getAccount(tdAmeritradeAccountNumber:accountNumber,accessTokenToUse:accessToken2!)
print(someAccount!)
//-----------------------| see existing position
//this returns the position if one exists in your account for the specified symbol
//let somePosition = TDAmeritradeForSwift.getPositionForSymbol(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!, chosenSymbol: "AAPL")
//print(somePosition)
//-----------------------| buy and cancel
/*
var someQuote = TDAmeritradeForSwift.getQuoteForSingleSymbol(symbol:chosenSymbol,accessTokenToUse:accessToken2!)
print(someQuote!)
let chosenPrice = someQuote!.bidPrice
var someOrder = TDAmeritradeForSwift.doOrder(tdAmeritradeAccountNumber:accountNumber,accessTokenToUse:accessToken2!,quantity:1,symbol:chosenSymbol,limitPrice:chosenPrice,orderType: .buy)
print(someOrder!)
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
if someOrder!.cancelable! == true
{
someOrder!.cancel(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
print(someOrder!)
print(someOrder!.status!)
}
*/
//-----------------------| buy and sell
/*
let someQuote = TDAmeritradeForSwift.getQuoteForSingleSymbol(symbol:chosenSymbol,accessTokenToUse:accessToken2!)
print(someQuote!)
var someOrder = TDAmeritradeForSwift.doOrder(tdAmeritradeAccountNumber:accountNumber,accessTokenToUse:accessToken2!,quantity:1,symbol:chosenSymbol,limitPrice:someQuote!.askPrice,orderType: .buy)
print(someOrder!)
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
while someOrder!.status!.compare("FILLED") != .orderedSame
{
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
print(someOrder!)
print("waiting for BUY fill")
}
print(someOrder!.status!)
someOrder = TDAmeritradeForSwift.doOrder(tdAmeritradeAccountNumber:accountNumber,accessTokenToUse:accessToken2!,quantity:1,symbol:chosenSymbol,limitPrice:someQuote!.bidPrice,orderType: .sell)
print(someOrder!)
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
while someOrder!.status!.compare("FILLED") != .orderedSame
{
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
print(someOrder!)
print("waiting for SELL fill")
}
print(someOrder!.status!)
*/
//-----------------------| sell short and cover
/*
let someQuote = TDAmeritradeForSwift.getQuoteForSingleSymbol(symbol:chosenSymbol,accessTokenToUse:accessToken2!)
print(someQuote!)
var someOrder = TDAmeritradeForSwift.doOrder(tdAmeritradeAccountNumber:accountNumber,accessTokenToUse:accessToken2!,quantity:1,symbol:chosenSymbol,limitPrice:someQuote!.askPrice,orderType: .sellShort)
print(someOrder!)
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
while someOrder!.status!.compare("FILLED") != .orderedSame
{
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
print(someOrder!)
print("waiting for SELL SHORT fill")
}
print(someOrder!.status!)
someOrder = TDAmeritradeForSwift.doOrder(tdAmeritradeAccountNumber:accountNumber,accessTokenToUse:accessToken2!,quantity:1,symbol:chosenSymbol,limitPrice:someQuote!.bidPrice,orderType: .buyToCover)
print(someOrder!)
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
while someOrder!.status!.compare("FILLED") != .orderedSame
{
someOrder!.refresh(tdAmeritradeAccountNumber: accountNumber, accessTokenToUse: accessToken2!)
print(someOrder!)
print("waiting for BUY TO COVER fill")
}
print(someOrder!.status!)
*/
//-----------------------|
var someQuote = TDAmeritradeForSwift.getQuoteForSingleSymbol(symbol:chosenSymbol,accessTokenToUse:accessToken2!)
print(someQuote!)
let chosenPrice = someQuote!.askPrice
var someOrder = TDAmeritradeForSwift.doOrderFillOrKillImitation(tdAmeritradeAccountNumber:accountNumber,accessTokenToUse:accessToken2!,quantity:1,symbol:chosenSymbol,limitPrice:chosenPrice,timeLimitSecondsForFill:5,orderType: .buy)
print(someOrder!)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment