Release notes

Algorithmic trading python TD IB IBridgePy is an Easiest algorithmic trading platform in Python. You can backtest and automated live trade, all together on your own computer. Interactive Brokers, TD Ameritrade and Robinhood are supported.

V 20.2.1 ON 20240315

  • Added the feature of placing a order type of Market On Open (MOO) 

V 20.1.2 ON 20240110

  • Added the feature of handling negative values by roundToMinTick and the API document is updated.

V 20.1.0 ON 20231215

  • Added tradingClass to superSymbol to solve the issue of “The contract description specified for SPX is ambiguous”. Check out this tutorial: https://youtu.be/pCDLfLL0WRo

V 20.0.2 ON 20231204

  • Fixed the issue of IBridgePyInDocker
  • Fixed the issue of “errors when run cancelOrder”

V 20.0.1 ON 20231129

  • To solve the issue of “AttributeError: ‘DatetimeIndex’ object has no attribute ‘union_many’.”, we have decided to deprecate the old market calendar system. The new calendar system only supports NYSE but the users can create their own market calendar easily. The root cause of the issue is that the latest version of pandas does not support union_many anymore. As the result of V 20.0.1, the user can use any version of pandas. nth_trading_day_of_month and nth_trading_day_of_week are deprecated from V 20.0.1

V 19.2.4 ON 20231117

  • Fixed the issue of “type object is not subscriptable.”

V 19.2.1 ON 20231109

  • Added the feature of “placing combo orders for options traders”

V 19.1.0 ON 20231002

  • Added the feature of “supporting followUp in the legacy data.history so that the user can intentionally ignore the error during retrieving historical data”

V 19.0.8 ON 20230925

  • Fixed the issue of “IBridgePy cannot get connected to IB server but there is no error messages.” The solution is to search both of localhost and 127.0.0.1 because TWS and Gateway may set up differently.
  • Fixed the error of “9003 Expected order status has not been confirmed by the broker
  • Adjusted a few log level
  • Fixed the issue of “Need to configure trader by calling trader.setAuthedAcctCode” 

V 19.0.6 ON 20230922

  • Updated IBridgePy to work with IB Gateway 10.19. The major change is to change the type of the number of shares from int to decimal, which is required by IB API 10.19 to accommodate the feature of fractional shares. If you see the error of “Your API version does not support fractional size rules. Please upgrade to a minimum version 163″,  this version of IBridgePy is the solution.

V 18.5.1 ON 20230710

  • Added the feature of getting 5 second real time bar, a feature related to Interactive Brokers(IBKR) only. See  https://ibridgepy.com/documentation/ for more details

V 18.3.1 ON 20230424

  • Added the feature that the user can selectively ignore a list of error messages. We strongly recommend users to address the errors instead of ignoring them but it is a new feature that the users can leverage. 

V 18.2.1 ON 20230127

  • Enabled a feature of backtesting using second bar data

V 18.1.18 ON 20230112

  • Added the feature to handle a new warning from TWS(IB Gateway does not have this new warning) :  Warning: Your API version does not support fractional share size rules. Please upgrade to a minimum version 163

V 18.1.1 ON 20220619

  • IBridgePyInDocker is fully refactored and tested.
  • IBridgePyInCloud is almost ready to roll out.

V 17.1.1 ON 20220525

  • Added waitForFeedbackInSeconds to get_scanner_results.
  • Fixed the issue “get_historical_data.py show errors with TD”

V 17.0.2 ON 20220429

  • Fixed the issue of “negative price in updateAccountValue”.
  • Fixed the issue of “wrong datetime index when get hist data”.

V 17.0.0 ON 20220426

  • Major refactoring for backtesting system.
  • Fixed the issue of “losing heartbeat under backtesting mode”.
  • Fixed the issue of “parsing errors when importing csv file to backtesting system”.
  • Added the feature of simulating transaction commission.
  • Updated a few error messages to easier debug.
  • Changed: balanceLog is updated immediately after a cycle of process messages, instead of writing balanceLog at the beginning of a simulation day.

V 16.9.11 ON 20220314

  • Improved the feature for multiple account users by specifying account summary tag. in settings.py. The tutorial is coming.

V 16.9.7 ON 20220113

  • Improved the feature of uploading local file to the backtester. IBridgePy is able to handle hist files with different timezones in different rows
  • Fixed the bug about “EXIT, there is no reqId” when get_option_info, for example, greeks.

V 16.9.4 ON 20211213

  • Fixed the bug about “status=completedAsk when show_real_time_price”

V 16.9.3 ON 20211206

  • Fixed the bug when handling errorCode = 200

V 16.9.1 ON 20211025

  • Fixed the bug of “get_datetime() does not match the server time on broker side”.
  • Added orderRef to order functions. see details in API doc.

V 16.8.4 ON 20210817

  • Fixed the bug of “data.current and show_real_time_price do not update”

V 16.8.3 ON 20210812

  • Fixed the bug of “get_datetime() does not match with time.time()”
  • Added “followUp” to show_real_time_price and show_real_time_size.

V 16.8.2 ON 20210809

  • Added waitForFeedbackInSeconds to get_contract_details so that user can choose to wait for server responses for longer time.

V 16.8.1 ON 20210805

  • When IBridgePy cannot get primaryExchange, use security.exchange if it is available. It is a user friendly improvement.
  • Added waitForFeedbackInSeconds to get_option_info becasue it may take a long time to get whole option chains from IB server.
  • Added followUp=True to request_historical_data so that user can choose not to follow up when IB server is down.
  • Fixed the bug of “cannot find reqId after cancelMktReq.
  • Fixed the bug of “get_datetime is not accurate within handle_data

V 16.7.1 ON 20210803

  • Refactored get_option_greek to get_option_info. More tutorials are coming.
  • Added the features of getting option open interests. More tutorials are coming.
  • Fixed the bug of “closest_expiry and closest_strike when the length is not correct”
  • Added the feature of choose_expiry_range in IbridgpyTools.py 

V 16.6.2 ON 20210720

  • Updated the hint when IB server did not response at all.
  • Fixed the bug “error message reqId does not match during request_historical data”
  • Added retry mechanism to simpleLoger to solve “Permission denied error when writing the TraderLog.txt file” 

V 16.6.1 ON 20210714

  • Added a new feature of request historical data from Yahoo Finance. The tutorial is coming.
  • Updated a few demos.
  • Added a few examples of running IBridgePy in Jupyter notebook.

V 16.5.4 ON 20210706

  • Optimized dataProvider_IBridgePy

V 16.5.3 ON 20210622

  • Optimized internal implementations

V 16.5.2 ON 20210611

  • Enabled standard debugger in IDE, such as PyCharm.
  • Refactored the logic related to OCA in backtester.
  • Added sorting the hist dataframes that are uploaded by users for backtesting. The oldest timestamp is the 1st row and the latest timestamp is the last row.
  • Fixed the format issue in order_status_monitor.

V 16.4.1 ON 20210602

  • Added new features in Backtester. It supports backtesting on stoploss and takeprofit orders.
  • Added new features in IBridgePy_plus by removing “duplicated order id” error message. settings.py -> BROKER_CLIENT -> ‘IB_CLIENT’ -> ‘syncOrderId’: True

V 16.2.3 ON 20210518

  • Fixed the bug of “duplicate orderid when place_order_with_stoploss_takeprofit”

V 16.2.2 ON 20210512

  • Fixed a few bugs in backtesting system.
  • Fixed the bug of “KeyError: ‘S'”

V 16.2.1 ON 20210511

  • Added get_option_greek to IBridgePy_plus
  • Added get_scanner_result to IBridgePy_plus

V 16.1.4 ON 20210502

  • Fixed the bug of “self.log is None in ./Config/config_defs.py”
  • Fixed the typo related SPY_1day_55D.csv
  • Enabled standard debugger in IDE like PyCharm.
  • Fixed the bug of “duplicated orderId when running multiple strategies at same time”

V 16.1.3 ON 20210426

  • Added historical data to Input folder so that users can backtest the sample strategy of demo_buy_low_sell_high.py
  • Simplified TEST_ME sample files.
  • Fixed the bug of “get_all_order and get_order failed in IBridgePy_plus when placing orders”

V 16.1.1 ON 20210417

  • From IB TW 983+, a few new error codes are added and they are not backward compatible. 10268 = The EtradeOnly order attribute is not supported and 10269 = The firmQuoteOnly order attribute is not supported. This is an urgent fix to accommodate these changes.

V 15.1.8 ON 20210412

  • Updated a few URLs
  • Refactored backtester implementations

V 15.1.7 ON 20210329

  • Updated a few error messages.

V 15.1.6 ON 20210315

  • Added “lastFillPrice” to the Order object. See documentation for more details. A section of Order is added.
  • Fixed a bug in backtester when random numbers are used.

V 15.1.5 ON 20210301

  • Added port 4002 to the auto-search port list
  • Refactored IbridgePyOrder class to accommodate an IB issue of missing orderStatus callback.

V 15.1.4 ON 20210216

  • Enforced order.totalQuantity to be an Integer.

V 15.1.3 ON 20210206

  • Fixed the issue on Ubuntu plain Python 3.7
  • Changed errorCode 2109 to non critical
  • Enforced port number and clientId to Integer

V 15.1.2 ON 20210202

  • Fixed the issue of “using Miniconda on Windows and stopped on the new system check.”

V 15.1.1 ON 20210131

  • New feature: Search IB TWS/Gateway port numbers of 4001, 7496 and 7497 automatically so that user do not need to set it anymore. YouTube tutorial is coming.
  • New feature: Enable high frequency trading(HFT), handle_date( ) can be invoked many times within a second. YouTube tutorial is coming.
  • New feature: Print out user’s Python version and notify if it does not match with IBridgePy version. YouTube tutorial is coming.
  • New feature: Add backtesting initial portfolio value to config system so that user can change it easily. YouTube tutorial is coming.
  • Improvements: Backtest is much faster than previous versions because the log is in memory during backtesting. YouTube tutorial is coming.

V 14.1.2 ON 20210119

  • Fixed the bug of “cannot place orders in IBridgePy_plus”

V 14.1.1 ON 20210118

  • Added a new Premium feature of automatically reconnecting IBridgePy to IB TWS/Gateway after they restart/shut down without user intervention. YouTube tutorial is coming.
  • Added a few imports to sample codes to reduce user’s work
  • Fixed the warning about “timezone-aware DatetimeIndex” on Python 3.9
  • Started to support Python 3.9 on Mac. YouTube tutorial is coming.https://youtu.be/MCZcmxqDL94

V 13.5.5 ON 20210103

  • Fixed the bug in TD and Robinhood when the portfolio has options.
  • Fixed the bug when backtesting FOREX.
  • Added backtest while 1 minute bars are simulated by daily bars. YouTube tutorial is coming.
  • Added more explanations to sample TEST_ME files

V 13.4.2 ON 20201229

  • Fixed the bug in IBridgePy_plus tutorial jupyter notebook due to new OrderTypes.

V 13.4.1 ON 20201228

  • Added the features of placing MarketOnCloseOrder
  • Fixed the bug of “duplicate orderId” or “cannot modify a filled order” in IBridgePy_plus
  • Added the feature of “isEarlyClose” to check if today is an early close trading day in NYSE

V 13.1.3 ON 20201223

  • Fixed the bugs in tutorial jupyter notebook files

V 13.1.2 ON 20201222

  • Added a new feature called IBridgePy_plus which allow users to integrate IBridgePy with other python packages by “import” and creating objects. See this tutorial: https://youtu.be/gEtkpyOm4V8
  • IBridgePy Backtester can ingest csv files with datetime as index, not only epoch seconds.
  • Added a few hist converter in /tools folder. See this tutorial: https://youtu.be/hYL6SYgy7wE
  • Added a tutorials/ folder including tutorials in jupyter notebook
  • Fixed the bug of “data.current() return None”

V 12.3.5 ON 20201220

  • ErrorCode of 2137(“The closing order quantity is greater than your current position.”) is not a critical error anymore so that it is a warning and the code will not terminate due to this error.
  • Added more error messages to users about backtester.
  • Added a tutorials folder to hold tutorial files.
  • Fixed the bug of data.current(‘volume’) always return -1
  • Updated sharpe ratio sample code
  • HistIngestPlan is not required for backtesting using TEST_ME.py but it is still recommended for faster backtesting. YouTube tutorial is coming.
  • Added an example of portfolio_sharpe_ratio.py to demo how to calculate sharpe ratio based on the balanceLog generated during backtesting. YouTube tutorial is https://youtu.be/4xTHdzAMhcI.
  • Fixed the bug of “missing open price from TD when data.current”
  • Fixed the bug of handling errorCode=162
  • Fixed the bug of “ibpyOrderId is None” when placing orders to TD
  • Switched a few “exit” to raising exceptions of CustomError
  • Fixed the bug of ‘no exist is defined in BrokerClient_IB’
  • Fixed the bug when handling bracket orders from TD
  • Fixed the bug of parentTrader.log.
  • Replaced “is not” by “!=” for Python 3.8 compatibility
  • Added a new feature of get_ibpy_expiry_in_days( ) to know how many days IBridgePy will expire in.
  • Added a new feature of get_TD_access_token_expiry_in_days( ) to know how many days TD access token will expire in.
  • Added a new feature of get_new_TD_refresh_token( ) to get a new TD refresh token by code
  • Fixed the bug of missing CustomError.py
  • Switched to “raise Exception” instead of terminations. Check out YouTube tutorial for more details.
  • Fixed the bug of missing setAsDataProviderService
  • Refactored a few clients
  • Fixed the bug of using superSymbol in test_me.py
  • Added the features of ingesting data from 3rd party data providers, YouTube tutorial is coming.
  • Added the features of interacting with multiple brokers in one code strategy, YouTube tutorial is coming.
  • Fixed the bug of handling cash_equivalent for TD Ameritrade
  • Fixed the bug of missing brokerClient_factory
  • Fixed the issue on Mac_Python3.7 for ImportError: dlopen
  • Forced to the string size of expiry of FUT OPT to 8 characters because users input 6 characters and IB callback contract is 8 characters, which causes many troubles.
  • Updated print_decision when decision is empty.
  • Fixed bugs in rebalance
  • Removed portfolio.cash_fro_trade and user should check availableFunds before placing order. If not enough fund for trading, brokers will return error codes.
  • Added saveToFile=True to histIngestionPlan so that the fetched historical data will be saved to IBridgePy/Input/ folder as csv files and user can load them directly to backtest later. YouTube tutorial is coming.
  • Fixed the bug of “short positions on TD does not display correctly”
  • Updated the feature of “raise RuntimeExceptions when TD does not respond a request of real time prices after retry 3 times”
  • Fixed the bug of AttributeError: ‘float’ object has no attribute ‘portfolio_value’
  • Added IBridgePy for Windows Anaconda Python 3.8
  • Updated the parameter of send_email to remove confusions.
  • Added a new feature of send_email so that users can send out emails easily in IBridgePy
  • Added a new function isTradingDay to check if today is a tradingDay.
  • Updated the error message when requesting quote from TD
  • Updated rebalance with a buyAdvantage and a sellAdvantage
  • Fixed the bug of “TypeError: can only concatenate str (not “NoneType”) to str””
  • Fixed the bug of “request_historical_data to TD cannot specify endDate”
  • Added more explanations to examples.
  • Fixed the bug of “request_historical_data to TD cannot specify endDate”
  • Fixed the bug of “show_account_info returns string instead of float when float is more meaningful
  • Added features of show_account_info to show more values, such as buyingPower
  • Updated the logic of getting TotalCashValue from TD Ameritrade
  • Added a method of show_timestamp to know how fresh the prices retrieved from IB server are.
  • Changed exit to throw exceptions when request_historical_data fail, which allows users to decide what to do as the next step.
  • Fixed the bug of UnicodeDecoder in Win Anaconda 3.7
  • Added more info about YouTube tutorials
  • Fixed a python 3.x compatibility bug in get_contract_details
  • Fixed the bug in TD client
  • Added more info about connection to TD Ameritrade
  • Released the features of trading with TD Ameritrade
  • Fixed a few minor bugs
  • Added more explanations
  • Added a feature to check the expiration of TD Ameritrade client refresh token
  • Added close_all_positions_LMT internally
  • Fixed the bug in “rebalance account”
  • Added more explanations when request_historical_data fails
 
  • Added more explanations and hints when failures happen during backtester loading hist
  • Fixed the bug of “volume=-1 in request_historical_data when TEST_ME.py”
  • Added more explanations when request_historical_data fails
  • Fixed minor bugs in public examples
  • Added more explanations when failures happen during backtester loading hist
  • Add more info when requesting hist data failure due to connectivity issues.
  • Fixed the bug of “cannot trade Forex”
  • Replaced pandas.Panel by pandas.DataFrame MultiIndex in request_historical_data so that the warning of pandas.Panel is deprecated is solved.
  • Minimized the usage of security_info.csv. No need to add securities into security_info.csv for Premium version.
  • Added the feature of schedule_function when traderRunMode = REGULAR
  • Fixed the potential issue of float precision when working with TD Ameritrade
  • Fixed the bug of “hist cannot ingest in TEST_ME.py”
  • Fixed the bug of “record( ) is not missing”
  • Fixed the bug of “No module named IBridgePy.transformers”
  • Fixed the bug of “sudo_run_like_quantopian does not run as expected”
  • Minimized the issue of “client ID is occupied”
  • Changed orderId from integer to string to accommodate Robinhood and TD Ameritrade because their orderId is string. The rule of converting IB orderId is to add “ib” in front of integer orderId. For example, the original IB orderId is int 99 and the new string orderId is “ib99”.
  • Added a new function of “get_all_open_orders”
  1. Fixed the bug of “date_rules is not defined”
  1. Fixed the bug of “ModuleNotFoundError of base_settings” on Windows
  • Updated to a new configuration system
  • Packaged IBridgePy entrance into a function interface so that it is much easier to integrate IBridgePy with other applications. Refer to run_me(fileName, globals()) in RUN_ME.py
  • Fixed the bug of “wrong datetime display format in request_historical_data”
  • Updated a few comments
  • Added a new feature of “specify the timezoneOfReturn when request_historical_data”
  • Fixed the bug of “calculated_startTimePosition”
  • Fixed the bug of “cannot handle goBack=6 M barSize=15 mins”
  • Fixed the bug of “TraderExtendedResources_deprecated error
  • Added the feature of “do not follow up on the order status immediately so that multiple orders can be placed quickly”
  • Fixed the bug of “place_combination_orders return None as orderId”
  • Fixed the bug of STP_LMT orderType
  • Refactored a few methods
  • Fixed the bug of “timestamp is not correct” in backtester using local file
  • Fixed the bug in get_open_orders
  • Updated the API document of premium features, get_contract_details, get_scanner_results and  get_option_greeks
  • Fixed the bug in get_open_orders
  • Added features of “designating ocaGroup when placing order_with_stoploss_takeprofit
  • Added feature of “modifying ocaGroup of an order”
  • Updated the API document with “get_all_orders” and “get_all_positions”
  • Fixed a bug in Multi Acct version, related to get_order failures of KeyError
  • Added a few logs to easier debug
  • Started to support orderType of STP LMT
  • Refactored a few methods
  • Silenced error messages about data farm broken.
  • Fixed the bug of “timezone in get_datetime”
  • Fixed the bug of “returning None as orderId in order_with_stoploss_takeprofit”
  • Trading with Robinhood is rolled out!
  • Refactored for Robinhood integration
  • Fixed the bug of ” errorCode=2157 errorMessage=Sec-def data farm connection is broken : secdefnj “. This new errorCode was introduced by IB Gateway new version 977.3c
  • Added Robinhood services
  • Fixed the bug of ” errorCode=2157 errorMessage=Sec-def data farm connection is broken : secdefnj “. This new errorCode was introduced by IB Gateway new version 977.3c
  • Fixed the bug of ” errorCode=2158 errorMessage=Sec-def data farm connection is OK : secdefnj “. This new errorCode was introduced by IB Gateway new version 977.3c
  • Fixed the bug of “missing BrokerService_Common”
  • Fixed the bug of “last_option_computation = None”
  • Fixed the bug of “cannot handle tickType=last_option_computation”
  • Prepared for Robinhood integration
  • Examples of IBridgePy managing multiple accounts are added.
  • Fixed the bug of “Local_file.py is missing”
  • Fixed a bug of “superSymbol in TEST_ME.py is missing”
  • Prepared for integration with Robinhood
  • Fixed a bug related to a secType of CMDTY
  • Prepared to integrate with Robinhood
  • Fixed the bug of “crash after show_real_time_price when the price”
  1. Fixed the bug of “context.portfolio.position of IOPT with localSymbol always return 0”
  2. Added the validation of “type of strike == float for SuperSymbol”, which also fixed the issue of incorrect positions.
  • Handle orderId = 0
  • Add transactionLog and balanceLog in backtesting mode
  • Added the feature of placing order with waitForFeedbackInSeconds
  • Fixed the bug of “OrderId x that needs to be cancelled is not found”
  • Fixed the bug of silence exit when orders exist
  • Added the feature of setting waitForFeedbackInSeconds for request_historical_data
  • Fixed the bug of existing orders
  • Added the feature of “show_real_time_size”
  • Changed the serialization method of Security Objects to solve the issues of “positions[symbol].amount = 0”
  • Added features of “do not exit the program due to errors issued when the connection to IB server is lost”.
  • Refactored the mechanism of requesting data from IB server to be prepared to add more features.
  • Fixed the bug of logLevel = ‘ERROR’
  • Added error message for “global name ‘startTimePosition’ is not defined”
  • Prepared to integrate with Robinhood
  • Fixed the bug of “unharmful print”
  • Fixed the bug of “showTimeZone not working”
  • Fixed the bug of “unhashable type: Security”
  • Fixed the bug of “schedule_function week_start does not work”.
  • Fixed the bug of “showTimeZone does not take effect”
  • Add equality check for Security objects.
  • IBridgePy Backtester is available in Windows versions.
  • IBridgePy started to support Anaconda python 3.7 on Windows
  • IBridgePy Backtester is released in Mac version. The documentation will be published soon. Other version will come soon as well.
  • Refactored to support IBridgePy back tester.
  • Added the feature of specifying tif when placing orders with stoploss and takeprofit.
  • Refactored a few to build IBridgePy back tester.
  • Separated sysTimeZone and showTimeZone
  • Simulated updateAccountValue after an execDetails. Refer to this webpage.
  • Fixed the bug of portfolio.returns
  • Fixed the bug of “cannot handle dataProviderName”
  • Added the feature of orderType of TrailStopOrder
  • Fixed the bug of cancel_order( orderId or order )
  • Fixed the bug of backtester
  • Fixed the bug of before_trading_start running on weekends.
  • Implemented count_positions
  • Fixed the bug of “the return type of get_open_orders are not as same as Quantopian’s function”
  • Changed the display message of orders in orderStatusBook
  • Added cost_basis to Position object to have backward compatibility to V 3.2.4
  • Fixed sample codes
  • Fixed the bug of “processMessages() missing 1 required positional argument: ‘timeNow’”
  • Made Changes to prepare IBridgePy backtester
  • Fixed the bug of “exit is not defined”
  • Made Changes to prepare IBridgePy backtester
  • Fixed the bug of “for security in context.portfolio.positions”
  • Fixed the bug of “returned hist ‘s index is not datetime”
  • Fixed the bug of “print context.portfolio.positions returns empty dict even if a position exists”
  • Fixed a deployment bug
  • create_order and place_combination_orders are supported.
  • Fixed a minor bug
  • Solved the backward compatibility issues: the 1st time of running handle_data with repBarFreq = xx is set at 00 seconds. For example, if repBarFreq = 5, the time of running handle_data will be 0, 5, 10, 15, 20, 25, …55.
  • Support the following code “for stock, position in context.portfolio.positions.items():”
  • Fixed the bug of “context.portfolio.positions[symbol(‘AAPL’)]
  • Fixed the bug of “schedule_functions are not working”
  • Fixed the bug of “index of data.history is not in the type of datetime”
  • Fixed the bug of “showTimeZone is not working”
  • Fixed the bug of “TrailStopLimitOrder is not defined”
  • Fixed the bug of “modify_order is not working”
  • Support “context.portfolio.position_values”, “context.portfolio.portfolio_values”, “context.portfolio.position_cash” and “context.portfolio.positions”
  • Fixed the bug related to “Unable connect as the client id is already in use”
  • Fixed the bug related to “modify orders”
  • Fixed a bug related to Python 3.x compatibility issue
  • Fixed a bug related to schedule_functions
  • Fixed a bug related to Python 3.x compatibility issue
  • New backend IBridgePy engine which will power up back-tester later
  • A few API signatures have been optimized. More details will be updated  in https://ibridgepy.com//ibridgepy-documentation/
  • Please let us know if you have any questions about IBridgePy 4 and we will try our best to fix them as soon as possible.
  • Minor update related to TrailStopLimitOrder
  • Fixed the bug of placing hidden orders
  • Fixed the bug of Trailing Stop Limit Order
  • Fixed the bug of “cannot get volume/size of securities”
  • Fixed the bug of “placing hidden order to ISLAND”
  • Fixed the bug of “real time price is not tree real time in runMode of run_like_quantopian”
  • Modified read_in_hashcode
  • Removed the error message when open price is not available. User need to check by themselves.
  • Fixed a bug
  • Added a new feature of placing hidden order at ISLAND
  • Fixed a bug of consuming too many resources
  • Fixed a bug
  • Added a new feature in superSymbol to defined “localSymbol”
  • Add a new feature of “modify_order”
  • Fixed the bug of “STK BRK B is missing”
  • Fixed the bug of “real time price does not update”
  • Fixed the bug related to barSize in data.history
  • Fixed the bug of “repBarFreq does not work”
  • Fixed the bug of waitForFeedbackInSeconds
  • New IBridgePy engine
  • Added trailingPercent to TrailStopLimitOrder
  • Fixed the bug related to secType of “BOND”
  • Added more examples
  • Fixed the bug of “No security definition has been found for the request” because of holding positions
  • More examples are added.
  • Fixed the bug related to premium functions.
  • Fixed the bug of “scheduled functions do not run as scheduled”
  • Fixed the following bug in Win_Anaconda36_64
  • import pandas_market_calendars as mcal ModuleNotFoundError: No module named ‘pandas_market_calendars’
  • Fixed the following bug
  • import pandas_market_calendars as mcal ModuleNotFoundError: No module named ‘pandas_market_calendars’   2. Added Mac_Anaconda27_64 version.
  • Fixed a bug related to request_historical_data when disconnection happens
  • Added a new feature. User can choose a market calendar. handle_data will run according to the chosen market calendar when runMode = ‘run_like_quantopian’
  • Fixed the bug of “ask_price = na”
  • Fixed the bug of “missing self.setHashConfig” in IBrigePy_python2_64
  • Fixed a typo
  • Fixed a few bugs in Windows Python 3.6 for incompatibility issues.
  • The default time-in-force for LimitOrder and StopOrder is to cancel the open orders by the end of the day. A feature is added to allow traders to designate time-in-force. See details at https://ibridgepy.com//ibridgepy-documentation/#order8212_similar_as_order_at_Quantopian
  • place_order_with_stoploss, place_order_with_stoploss_takeprofit and place_order_with_takeprofit are added to make placing orders much easier than before.
  • Fixed a bug related to context.portfolio.position[a_security] returning 0 shares when the position is not 0.
  • Add a trader property of runScheduledFunctonBeforeHandleData. The scheduled_functions will run before handle_data runs when runScheduledFunctonBeforeHandleData = True. The default setting of Quantopian is to run handle_data before all scheduled functions.
  • Improved the performance of searching securities internally.
  • Add a new function of place_order_with_SL_TP
  • Fixed the bug “No security definition when a position was in the account”
  • Change the version number to semantic version 2.0.1
  • Added a new function of get_order_status
  • Fixed the bug in order_status_monitor, raised by Lamperti
  • Added Trailing Stop Limit order
  • Fixed a bug about superSymbol when accounts have positions
  • Fixed the bug about printing positions.
  • Added a feature of placing orders outside regular trading hours.
  • Matched a feature to Quantopian. context.portfolio.portfolio_value is the actual value in the function of initialize.
  • Fixed the bug about ending cash balances, reported by timma.
  • Fixed the bug about handle_data running at unexpected times, reported by timma.
  • Added displaying message when market is closed.
  • Fixed the bug about “cannot find index in self.end__check__list” by recording all request data.
  • Changed version number to string.
  • Print out fileName.
  • Exit the code after tried to request data for 3 times and failed.
  • Fixed the bug about “cannot get real time price because of “No security is found” when init is holding the positions
  • Changed the logic to search exchange and primaryExchange from stockList
  • Moved some functions to better locations
  • Fixed the bug of “Error processing request:-‘bm’ : cause – Duplicate ticker ID for xxx”
  • Added a method in data, data.can_trade( ). It always returns True at the moment. It will be extended later.
  • Fixed the bug of “missing handle_data”. The handle_data function is not required in IBridgePy.
  • Changed default values of open, high, low, close, size to NaN, following Quantopian’s style
  • The function of show_real_time_price ( ) returns the current values without extra checking even if the values are NaN. However, show_real_time_price ( ) will guarantee that the bid price and ask price of stocks are positive and the last_traded of indexes are positive.
  • Fixed the bug of “duplicated orderId” when re-sending request data
  • Fixed the bug of AttributeError: ‘float’ object has no attribute ‘param’ when requesting real time prices
  • Fixed the bug related to Ubuntu version and Mac version about file path
  • errorCode = 2148 becomes a warning, not a critical error anymore.
  • Fixed the bug of getting real time prices of secType = ‘IND’, for example, IND, VIX, USD
  • Fixed the bug in Mac and Ubuntu version
  • Fixed the bug of repBarFreq = 60
  • Fixed the bug of before_tradng_start ( )
  • Changed: show_real_time_price will not show any negative number anymore. However, the code will stop if the real time prices are not available for any reasons.
  • Fixed the bug of the log file path in Linux.
  • Fixed the bug in handle calendar, for example 2017.11.30
  • Changed: errorCode = 2105 is a warning message and not a critical error any more.
  • Fixed the bug of handle_data in run_like_quantopian mode. It won’t run when the market is close.
  • Fixed a print versionNumber when exit with error message.
  • Fixed IBridgePy for Ubuntu errorCode = 509
  • Fixed the print bug in windows Python 3_64 version
  • Added order_value ( ), order_target_percent ( ), order_target_value ( ) and record ( ) , same as in Quantopian.
  • Deleted positions from context.portfolio.positions when the quantity of the security is 0. Now it matches what Quantopian does.
  • Fixed the example_get_historical_data.py because request_data is deprecated from version 2.20171004.
  • Added showing versionNumber when IBridgePy terminates with error messages.
  • Fixed the bug in showing latest_profit when printing out positions. It always showed “NA” in the previous versions
  • Separated IBridgePy log with the log created by users using the function of record ( ).
  • Fixed the bug in get_open_order
  • Fixed check_date_rules overnight issue
  • Changed to the code related to error messages and terminate the code when needed.
  • Added “show sizes” to the function of show_real_time_price
  • handle_data is not required anymore. It is optional.
  • Changed the default exchange of stock to SMART. The problem related to XIV positions are solved because of the change.
  • Started to support order_percent ( ) .
  • The bug related to schedule_function is fixed.
  • The bug related to handle_calendar is fixed.
  • Fixed the bug of print in quantopian.py in python 3.x version
  • Changed all_US_Stocks.csv to security_info.csv
  • Allowed users to add the security details to security_info.csvt
  • The issues related to order_target( ) and positions are fixed because of the above changes.
  • Added versionNumber for IBridgePy. The current versionNumber is 1.20170905
  • Fixed a bug related to positions[symbol(‘xxx’)].amount, which has impacts on order_target ( )