-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implements request historical data
- Loading branch information
Showing
27 changed files
with
1,142 additions
and
277 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,9 @@ edition = "2021" | |
authors = ["Wil Boayue <[email protected]>"] | ||
description = "A synchronous implementation of the Interactive Brokers TWS API." | ||
readme = "README.md" | ||
homepage = "https://github.com/wboayue/rust-ibapi/" | ||
repository = "https://github.com/wboayue/rust-ibapi/" | ||
documentation = "https://docs.rs/ibapi/latest/ibapi/" | ||
license = "MIT" | ||
keywords = ["algo-trading", "interactive-brokers", "tws"] | ||
categories = ["finance", "api-bindings"] | ||
|
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
## Run Coverage Report | ||
|
||
https://github.com/taiki-e/cargo-llvm-cov | ||
|
||
```bash | ||
cargo install cargo-tarpaulin | ||
cargo tarpaulin -o html | ||
``` | ||
|
||
RUST_LOG=debug cargo run --bin find_contract_details | ||
|
||
## Troubleshooting | ||
|
||
`RUST_LOG=debug` | ||
`IBAPI_RECORDING_DIR=/tmp` |
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
use clap::{arg, Command}; | ||
|
||
use ibapi::contracts::Contract; | ||
use ibapi::market_data::historical::{BarSize, ToDuration, WhatToShow}; | ||
use ibapi::Client; | ||
|
||
fn main() { | ||
env_logger::init(); | ||
|
||
let matches = Command::new("historical_data_ending_now") | ||
.about("Gets last 7 days of daily data for given stock") | ||
.arg(arg!(<STOCK_SYMBOL>).required(true)) | ||
.arg(arg!(--connection_string <VALUE>).default_value("127.0.0.1:4002")) | ||
.get_matches(); | ||
|
||
let connection_string = matches.get_one::<String>("connection_string").expect("connection_string is required"); | ||
let stock_symbol = matches.get_one::<String>("STOCK_SYMBOL").expect("stock symbol is required"); | ||
|
||
let client = Client::connect(&connection_string, 100).expect("connection failed"); | ||
|
||
let contract = Contract::stock(stock_symbol); | ||
|
||
let historical_data = client | ||
.historical_data_ending_now(&contract, 7.days(), BarSize::Day, WhatToShow::Trades, true) | ||
.expect("historical data request failed"); | ||
|
||
println!("start_date: {}, end_date: {}", historical_data.start, historical_data.end); | ||
|
||
for bar in &historical_data.bars { | ||
println!("{bar:?}"); | ||
} | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
use clap::{arg, Command}; | ||
use time::macros::datetime; | ||
|
||
use ibapi::contracts::Contract; | ||
use ibapi::market_data::historical::ToDuration; | ||
use ibapi::Client; | ||
|
||
fn main() { | ||
env_logger::init(); | ||
|
||
let matches = Command::new("historical_data") | ||
.about("Get last 30 days of daily data for given stock") | ||
.arg(arg!(<STOCK_SYMBOL>).required(true)) | ||
.arg(arg!(--connection_string <VALUE>).default_value("127.0.0.1:4002")) | ||
.get_matches(); | ||
|
||
let connection_string = matches.get_one::<String>("connection_string").expect("connection_string is required"); | ||
let stock_symbol = matches.get_one::<String>("STOCK_SYMBOL").expect("stock symbol is required"); | ||
|
||
let client = Client::connect(&connection_string, 100).expect("connection failed"); | ||
|
||
let contract = Contract::stock(stock_symbol); | ||
|
||
let historical_data = client | ||
.historical_schedules(&contract, datetime!(2023-04-15 0:00 UTC), 30.days()) | ||
.expect("historical schedule request failed"); | ||
|
||
println!("start: {:?}, end: {:?}", historical_data.start, historical_data.end); | ||
|
||
for session in &historical_data.sessions { | ||
println!("{session:?}"); | ||
} | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
use clap::{arg, Command}; | ||
|
||
use ibapi::contracts::Contract; | ||
use ibapi::market_data::historical::ToDuration; | ||
use ibapi::Client; | ||
|
||
fn main() { | ||
env_logger::init(); | ||
|
||
let matches = Command::new("historical_schedules_ending_now") | ||
.about("Gets last 7 days of schedules for given stock") | ||
.arg(arg!(<STOCK_SYMBOL>).required(true)) | ||
.arg(arg!(--connection_string <VALUE>).default_value("127.0.0.1:4002")) | ||
.get_matches(); | ||
|
||
let connection_string = matches.get_one::<String>("connection_string").expect("connection_string is required"); | ||
let stock_symbol = matches.get_one::<String>("STOCK_SYMBOL").expect("stock symbol is required"); | ||
|
||
let client = Client::connect(&connection_string, 100).expect("connection failed"); | ||
|
||
let contract = Contract::stock(stock_symbol); | ||
|
||
let schedule = client | ||
.historical_schedules_ending_now(&contract, 7.days()) | ||
.expect("historical schedule request failed"); | ||
|
||
println!("start: {}, end: {}, time_zone: {}", schedule.start, schedule.end, schedule.time_zone); | ||
|
||
for session in &schedule.sessions { | ||
println!("{session:?}"); | ||
} | ||
} |
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
Oops, something went wrong.