Last active
February 10, 2021 03:30
-
-
Save rezahussain/f5dcfc586e7f54e439e8548f25157133 to your computer and use it in GitHub Desktop.
HelloWorldTDAmeritradeTrader
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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