Include
require 'ib-api'in your scripts.
IB::Connection
IB::Connection.new instantiates the connection.
The Connection-instance provides
| connect | connected? | disconnect |
to manage the connection.
IB::Gateway
In the WAN-World many things can go terribly wrong.
Even a super stable cable connection can suddenly vanish. Then a reconnection may be necessary.
`ib-api’ implements the basics to connect to the TWS-Server.
This is performed in IB::Connection.connect, simply by opening a port
self.socket = IBSocket.open(@host, @port)
IBSocket is in fact a specialized TCPSocket. It inherits its complete error-handling repertoire.
If the connection cannot be established, Errno::ECONNREFUSED is fired. Its up to the user
to handle this error. IB-Gateway does handle most common failures.
Include
require 'ib-api' require 'ib/gateway'in your scripts.
IB::Gateway#Connect covers Errno::ECONNREFUSED, Errno::EHOSTUNREACH and the unspecified SocketError. It’s designed to manage uncertain and often interrupted connections via DSL, WLAN or even GSM.
If the Host is not reached, it tries to reconnect for at least one hour.
IB::Gateway.check_connection: Method to ensure a valid connection to the Interactive Brokers Data Centers.
If a Connection has been established, one cannot be sure, that its not interrupted by IB. Then an error-message is transmitted:
05:37:29 TWS System 1102: Connectivity between IB and Trader Workstation has been restored - data maintained.
The standard answer of the IB::Gateway is defined in the Alert-class
def IB::Alert.alert_2102
sleep 0.1 # no need to wait too long.
if IB::Gateway.current.check_connection
IB::Gateway.logger.debug { "Alert 2102: Connection stable" }
else
IB::Gateway.current.reconnect
end
end
Simple and efficient.
Its safe to call IB::Gateway#CheckConnection prior to every critical message, as order-placement or contract-verification. It delays the process by approx. 7 ms.