Das Plugin eröffnet Bridgetown im Server Site Rendering-Modus den Zugang zur TWS-API von Interactive Brokers.
Über die TWS-Api lassen sich Kontostände abfragen, Historische Kurse und Fundamentaldaten von börsengelisteten Unternehmen einlesen, Währungen, Rohstoffe, Optionen und Aktien handeln.
Bridgetown kann als Frontend zur Ausgabe der Daten dienen oder auch Formulare zur Abfrage der Finanzdaten bereitstellen.
Die Umsetzung des Plugins
Beim Start liest Bridgetown die Datei config/initializers
ein und führt die
dort verzeichneten Befehle aus. Das ib-ruby
Plugin wird mit dem Befehl
init :"bridgetown-ib-ruby"
eingebunden. Das Ruby-Symbol :"bridgetown-ib-ruby"
zieht den Aufruf von Bridgetown.initializer
mit dem
Argument :bridgtown-ib-ruby
nach sich. Das Plugin ist im Kern das Ergebnis der Ausführung dieser
Methode.
Bridgetown.initializer :"bridgetown-ib-ruby" do | config |
IB::Gateway.new **BridgetownIbRuby.gateway_configuration(config) do |gw|
gw.tws.subscribe( :Alert, :ManagedAccounts ){ | msg | gw.tws.logger.info msg.to_human }
gw.logger.level = Logger::INFO
end
end
Der IB::Gateway
wird mit den Parametern der Methode BridgetownIbRuby.gateway_configuration
initialisiert. Diese Methode liest die Parameter aus config/tws.yml
. Diese werden 1:1 an
IB::Gateway.initialize
übergeben.
Mögliche Parameter und deren Defaults sind in der Initialise Methode von IB::Gateway
verzeichnet:
def initialize port: 4002
host: '127.0.0.1', # 'localhost:4001' is also accepted
client_id: random_id,
subscribe_managed_accounts: true,
subscribe_alerts: true,
subscribe_order_messages: true,
connect: true,
get_account_data: false,
serial_array: false,
logger: default_logger,
watchlists: []
Nur abweichende Parameter müssen in der config/tws.yml
gesetzt werden.
Dies wäre eine Beispielkonfiguration für einen laufenden IbGateway mit einem Papertrade-Account.
--- #/config/tws.yml
get_account_data: true
port: 4002
watchlists:
- :Spreads
- :Stillhalter
- :BuyAndHold
:client_id: 2001
Die Festlegung einer client_id
garantiert, dass stets nur eine Bridgetown-Server-Instanz
gestartet ist. Damit kann das Plugin entweder im Static- oder im SSR-Modus von Bridgetown
benutzt werden. Dies kann in config/initalizers.rb
eingestellt werden
only server, console do
init :"bridgetown-ib-ruby"
end
oder
only static, console do
init :"bridgetown-ib-ruby"
end
Wenn universell auf Daten der TWS-API zugegriffen werden soll, darf client_id
nicht in der
Konfigurationsdatei tws.yml
eingetragen werden. Dann initialisiert Bridgetown zwei Instanzen des
IB::Gateways
.