tests/testthat/test-production.R

test_that("non trading production", {

  # Skip on cran without credentials
  skip_on_cran()

  # Load and revalidate credentials. Need to run login script prior to running
  sandbox = FALSE
  access_tokens = readRDS('/home/rstudio/Secure/ab_acctok.rds')
  etkeys = readRDS('/home/rstudio/Secure/etrd_login_ab.rds')
  etrade_cred = etrd_auth_credentials(etkeys$prod_key, etkeys$prod_secret, sandbox = sandbox)
  etrd_auth_manage_token(access_tokens = access_tokens, etrade_cred = etrade_cred, sandbox = sandbox)


  ##### Authenticate functions #####
  login = etrd_auth_login_url(etrade_cred, sandbox, auto_open = F)
  expect_equal(class(login), 'list')

  ##### Account functions #####
  # Acccount list
  actlist = etrd_account_list(sandbox = sandbox)
  expect_true(nrow(actlist)>=1)
  expect_equal(ncol(actlist),9)
  expect_equal(class(etrd_account_list(output = 'list', sandbox = sandbox)),'list')

  # Account balances
  actbal = etrd_account_balance(account = actlist$accountIdKey[1], realTimeNAV = 'true', sandbox = sandbox)
  expect_equal(nrow(actbal),1)
  expect_true(ncol(actbal)>10)
  actblist = etrd_account_balance(account = actlist$accountIdKey[1], output = 'list', sandbox = sandbox)
  expect_equal(class(actblist), 'list')

  Sys.sleep(1)
  # Portfolios
  perf = etrd_account_portfolio(actlist$accountIdKey[1], totalsRequired = 'true',
                                view = 'PERFORMANCE', sandbox = sandbox)
  # owatch = etrd_account_portfolio(actlist$accountIdKey[1], lotsRequired = 'true',
  #                                 view = 'OPTIONSWATCH', sandbox = sandbox)
  compl = etrd_account_portfolio(actlist$accountIdKey[1], view = 'COMPLETE', sandbox = sandbox)
  fund = etrd_account_portfolio(actlist$accountIdKey[1], view = 'FUNDAMENTAL', sandbox = sandbox)
  quick = etrd_account_portfolio(actlist$accountIdKey[1], sandbox = sandbox)
  expect_equal(class(perf), 'list')
  # expect_equal(class(owatch), 'list')
  expect_equal(class(compl), 'list')
  expect_equal(class(fund), 'list')
  expect_equal(class(quick), 'list')

  # Alerts
  alrts = etrd_alerts(actlist$accountIdKey[1], sandbox = sandbox)
  expect_true(nrow(alrts)>10)
  aldetail = etrd_alert_detail('5')
  expect_equal(class(aldetail), 'list')

  Sys.sleep(1)
  ##### Market functions #####
  # Quotes
  qts = etrd_market_quote(c('AAPL','MSFT','SPY'), sandbox = sandbox)
  expect_true(nrow(qts) >= 1)
  expect_true(ncol(qts) >= 50)

  qtslst = etrd_market_quote(c('AAPL','MSFT','SPY'), detailFlag = 'intraday',
                             output = 'list', sandbox = sandbox)
  expect_equal(class(qtslst), 'list')

  # Product search
  search = etrd_product_search('tech', sandbox = sandbox)
  expect_true(nrow(search) == 10)
  expect_true(ncol(search) == 3)

  # Options expiration
  exp = etrd_option_expiration('SPY', sandbox = sandbox)
  expect_true(nrow(exp) >= 5)
  expect_true(ncol(exp) == 4)

  Sys.sleep(1)
  # Options chain
  chain_def = etrd_option_chain('SPY', sandbox = sandbox)
  expect_true(nrow(chain_def) >= 1)
  expect_true(ncol(chain_def) == 52)

  chain_filt = etrd_option_chain(symbol = 'AAPL',
                                 expiryYear = 2021,
                                 expiryMonth = 6,
                                 noOfStrikes = 20,
                                 chainType = 'call',
                                 sandbox = sandbox)
  expect_true(nrow(chain_filt) >= 1)
  expect_true(ncol(chain_filt) == 26)


  ##### Order functions #####
  ### Order History
  filterOrd = etrd_order_history(actlist$accountIdKey[1], transactionType = 'BUY', securityType = 'mf',
                                 status = 'EXECUTED', fromDate = Sys.Date()-30, toDate = Sys.Date(), sandbox = sandbox)
  expect_true(nrow(filterOrd) >= 1)
  expect_true(ncol(filterOrd) >= 20)

  orderList = etrd_order_history(actlist$accountIdKey[1], output = 'list', sandbox = sandbox)
  expect_equal(class(orderList), 'list')

  Sys.sleep(1)
  ### Transaction search
  transdf = etrd_transactions(actlist$accountIdKey[1], fromDate = '2020-01-01', sandbox = sandbox)
  expect_true(nrow(transdf) >= 1)
  expect_true(ncol(transdf) >= 18)

  transList = etrd_transactions(actlist$accountIdKey[1], output = 'list', sandbox = sandbox)
  expect_equal(class(transList), 'list')

  ### Transaction detail
  transDet_df = etrd_transaction_detail(actlist$accountIdKey[1], transdf$transactionId[1], sandbox = sandbox)
  expect_true(nrow(transDet_df) >= 1)
  expect_true(ncol(transDet_df) >= 10)

  transDet_list = etrd_transaction_detail(actlist$accountIdKey[1], transdf$transactionId[1],
                                          output = 'list', sandbox = sandbox)
  expect_equal(class(transDet_list), 'list')

})

test_that("trading production", {

  # Skip on cran without credentials
  skip_on_cran()

  # Load and revalidate credentials. Need to run login script prior to running
  sandbox = FALSE
  access_tokens = readRDS('/home/rstudio/Secure/ab_acctok.rds')
  etkeys = readRDS('/home/rstudio/Secure/etrd_login_ab.rds')
  etrade_cred = etrd_auth_credentials(etkeys$prod_key, etkeys$prod_secret, sandbox = sandbox)
  etrd_auth_manage_token(access_tokens = access_tokens, etrade_cred = etrade_cred, sandbox = sandbox)
  actlist = etrd_account_list(sandbox = sandbox)
  account = actlist$accountIdKey[1]

  ticker = 'PSLV'
  previewOrder = 'df'
  actQuote = etrd_market_quote(ticker, sandbox = sandbox)

  # Limit order
  # limiteq = etrd_place_eq_order(account = account,
  #                     symbol = 'PSLV',
  #                     quantity = 5,
  #                     quantityType = 'DOLLAR',
  #                     orderAction = 'buy',
  #                     priceType = 'limit',
  #                     limitPrice = as.numeric(actQuote$All.ask)-1,
  #                     previewOrder = 'none',
  #                     sandbox = sandbox)
  # etrd_cancel_order(limiteq$accountidKey, limiteq$orderId)

  mforder = etrd_place_mf_order(account = account,
                                symbol = 'SWTSX',
                                quantity = 5,
                                quantityType = 'DOLLAR',
                                mfTransaction = 'sell',
                                previewOrder = 'none',
                                sandbox = sandbox)
  etrd_cancel_order(mforder$accountidKey, mforder$orderid.orderId)

  mforder = etrd_place_mf_order(account = account,
                                symbol = 'SWTSX',
                                quantityType = 'QUANTITY',
                                quantity = 1,
                                mfTransaction = 'buy',
                                previewOrder = 'none',
                                sandbox = sandbox)
  etrd_cancel_order(mforder$accountidKey, mforder$orderid.orderId)


})
tonytrevisan/etrader documentation built on Feb. 5, 2024, 10:58 a.m.