The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
igfetchr is a beginner-friendly wrapper around the IG Trading REST API (labs.ig.com). It provides functions to authenticate, fetch markets, current prices, historical prices, account summaries, execute trades, and close sessions.
Disclaimer: Trading CFDs and spread bets carry a high risk of losing money. The package igfetchr is not financial advice.
To make examples and tests deterministic and CRAN-friendly, igfetchr
supports an offline testing mode. Set the environment variable
IGFETCHR_TESTING = "true" to return mock tokens and accept
mock_response data frames for endpoints.
Sys.setenv(IGFETCHR_TESTING = "true")
library(igfetchr)
This example uses the package’s testing mode and returns a mock auth list instantly.
auth <- ig_auth(
username = "demo_user",
password = "demo_pass",
api_key = "demo_api_key",
acc_type = "DEMO",
acc_number = "ABC123"
)
auth
#> $cst
#> [1] "mock_cst"
#>
#> $security
#> [1] "mock_security"
#>
#> $base_url
#> [1] "https://demo-api.ig.com/gateway/deal"
#>
#> $api_key
#> [1] "demo_api_key"
#>
#> $acc_type
#> [1] "DEMO"
#>
#> $acc_number
#> [1] "ABC123"
Use ig_search_markets() with mock_response
to simulate the API returning market results.
mock_markets <- data.frame(
epic = c("CS.D.USDCHF.CFD.IP"),
instrumentName = c("USD/CHF"),
stringsAsFactors = FALSE
)
markets <- ig_search_markets("USD/CHF", auth = auth, mock_response = mock_markets)
#> Warning: Unknown or uninitialised column: `markets`.
markets
#> # A tibble: 0 × 2
#> # ℹ 2 variables: epic <chr>, name <chr>
Simulate a current price response for USD/CHF.
mock_price <- data.frame(
bid = 0.8500,
offer = 0.8504,
timestamp = Sys.time(),
stringsAsFactors = FALSE
)
price <- ig_get_price("CS.D.USDCHF.CFD.IP", auth = auth, mock_response = mock_price)
#> Warning: Unknown or uninitialised column: `snapshot`.
price
#> # A tibble: 0 × 2
#> # ℹ 2 variables: bid <dbl>, offer <dbl>
Simulate historical OHLC data for USD/CHF.
mock_hist <- data.frame(
snapshotTime = as.character(Sys.Date() - 2:0),
open = c(0.8500, 0.8550, 0.8520),
high = c(0.8520, 0.8570, 0.8540),
low = c(0.8480, 0.8530, 0.8500),
close = c(0.8510, 0.8540, 0.8530),
stringsAsFactors = FALSE
)
hist <- ig_get_historical(
epic = "CS.D.USDCHF.CFD.IP",
from = Sys.Date() - 2,
to = Sys.Date(),
resolution = "D",
auth = auth,
mock_response = mock_hist
)
#> Warning in ig_get_historical(epic = "CS.D.USDCHF.CFD.IP", from = Sys.Date() - :
#> Incompatible methods ("Ops.Date", "Ops.POSIXt") for ">"
#> Warning in ig_get_historical(epic = "CS.D.USDCHF.CFD.IP", from = Sys.Date() - :
#> Incompatible methods ("Ops.Date", "Ops.POSIXt") for ">"
#> Warning: Unknown or uninitialised column: `prices`.
#> No prices returned from API for epic 'CS.D.USDCHF.CFD.IP'. Verify epic and date range with IG support at labs.ig.com.
hist
#> # A tibble: 0 × 10
#> # ℹ 10 variables: snapshotTime <chr>, open_bid <dbl>, open_ask <dbl>,
#> # close_bid <dbl>, close_ask <dbl>, high_bid <dbl>, high_ask <dbl>,
#> # low_bid <dbl>, low_ask <dbl>, volume <int>
Simulate account summary retrieval.
mock_accounts <- data.frame(
accountId = "ACCT123",
balance = 10000,
preferred = TRUE,
stringsAsFactors = FALSE
)
accounts <- ig_get_accounts(auth = auth, mock_response = mock_accounts)
#> Warning: Unknown or uninitialised column: `accounts`.
#> No accounts returned from API. Verify authentication with IG support at labs.ig.com.
accounts
#> # A tibble: 0 × 13
#> # ℹ 13 variables: accountId <chr>, accountName <chr>, accountAlias <lgl>,
#> # status <chr>, accountType <chr>, preferred <lgl>, currency <chr>,
#> # canTransferFrom <lgl>, canTransferTo <lgl>, balance <dbl>, deposit <dbl>,
#> # profitLoss <dbl>, available <dbl>
Simulate executing a trade for USD/CHF.
mock_trade <- data.frame(
dealId = "DIXXXX",
dealReference = "REF123",
status = "OPEN",
stringsAsFactors = FALSE
)
trade <- ig_execute_trade(
epic = "CS.D.USDCHF.CFD.IP",
direction = "BUY",
size = 1.0,
auth = auth,
mock_response = mock_trade
)
trade
#> # A tibble: 1 × 3
#> dealId dealReference status
#> <chr> <chr> <chr>
#> 1 DIXXXX REF123 OPEN
Close the session.
ig_close_session(auth, mock_response = TRUE)
Sys.unsetenv("IGFETCHR_TESTING")
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.