読者です 読者をやめる 読者になる 読者になる

コバのシステムトレード構築日記(IB証券、トレステ、Dukascopy他)

IB証券/DukascopyとのAPI接続ナレッジや、トレステなど

IB証券:API接続検証その2「必要な前提知識と資料など」

IB証券接続プログラムを作成するにあたって、前提となる知識を箇条書き。

足りない場合には学習して取得するしかないと思います。

Java or C# or VB or C++ or Pythonのプログラミング能力

オブジェクト指向の理解

・英語の読解力

 

 1つ目はサンプルコードが上記のいずれかであるため。それ以外に Swiftやらpythonやらで対応したい場合は自力でクラスライブラリなりを作る労力が必要ですが不可能ではないと思います。2つ目は Javaのサンプルコードを読む限り、3階層ぐらいのオブジェクトの継承と Interface実装を伴うので解っていないとコード読むことができないと思います。3つ目は、まぁ資料が英語しかないので仕方ないです。

(追記)驚きです。この記事を書いていたらオンラインヘルプに Pythonが追加されていました。たぶん昨日までなかったと思う。。

 

資料のリンクなど:

 これらは、特に口座開設していなくてもアクセスできると思うので、とりあえず見てみて手に負えそうであればトライしてみる判断になると思います。

・オンラインヘルプ:各言語ごとにヘルプが別れているのでGoodです

TWS API v9.72: Trader Workstation API

APIガイド(言語別):Getting Started Guidesの列の下のほうに言語ごとのPDF。

Traders University | Interactive Brokers オンラインヘルプだけではなくこちらも目を通さないと、たぶんプログラム動かないと思います。ちょっと嵌まりました。

 

・サンプルプログラムソースコード:上記のオンラインヘルプの introductionにリンクがありますが、各言語ごとのデモプログラムとソースが入手できます。

Interactive Brokers - API Software

IB証券:API接続検証その1「サンプルと仮検証」

3連休、いかがお過ごしでしょうか。

急なドル安で、初めてFXにポジション持ってみました。

なんぴんダブルを2回繰り返してちょろっと微益を稼いで、小心者なので金曜夜中は決済したので117円までの戻しでリターンはとれませんでしたが、まぁいい感じでした。

 

IB証券、サンプルソースがダウンロード出来るので、自前の Javaプログラムに組み込むべく、検証開始しました。とりあえずどんな感じでデータがとれるのか、C#向けにコンパイル済みの exeが含まれていたのでちょろっと動かしたところ、

・Forexは92通貨ペアでBid/Ask + 中間値Midpointが、最も高頻度な1secは無理ですが 30sec足で 2005/10/01頃までHigh/Lowを含めて取得出来そうです。(USD/JPYのみチェック)

日本株も同様で、Price, High, Low, Volume,VWAPの値が同じく30秒足で取れそうです。(7201日産/6758ソニーでのみチェック)

 

サンプルコードを解析しながら、データ取り込み出来るようになったらアウトライン概念からちゃんとまとめたいと思います。

IB証券に接続テストでお正月

とりあえず入金した。

ネイティブツールが使えるようにロックが外れた。

jarファイルが使われているのでフルJavaっぽいぬるっとした動きのUI。

微妙だけど、まぁこんなもんでしょうなあ。

 

30日の大納会相場が終われば、大発会と欧米市場が開くまでの短い正月休みというか、ふつうの週末期間しか無いけど、IB証券との接続してできれば簡単なアプリまで作ってみたいともくろみ中。

ここの更新が滞ってひと月近くあっという間、もう12月だ(汗)。

 

トランプ相場であれよあれよでうまく振舞えて2割ほど資産増。

バックエンドプログラム制御のHinemosジョブスケジューラ環境を仮想マシンから物理マシンに移行。

仮想マシン廃止したセカンダリDBサーバ4コアフル使用でバックアップ日次作業を短縮。

バックエンドプログラム処理用のサーバを追加し部屋が温くなり未だ暖房未使用。

スクレイピングプログラムのいくつかのバグとり。

自作システムのクライアントツールをC#で作成。

銘柄情報と日足の分析結果をいい感じで見られるようになった。

トレステとHyperSBIの両方を使うようになってきて画面不足。

トレーディング環境のディスプレイ支持ポール自作で2枚追加。

 

とまぁこんな感じで、シストレ的には書くようなネタでもないなあという感じでした。

今週は C#クライアント作っていて、それが終わったらトレステのロジック使った構成を再開するつもり。

 

 

特にネタなし:IB証券接続

TradeStationについてはELコーディングなど遠ざかってまして特にネタがない日々が1週間ほど続いています。

 

自作のJavaプログラムの不具合改修を続けています。

上場企業のHP丸ごととIR、TDNet、上場企業の財務情報、いくつかの通信社系ニュースのスクレイピング、日足の株価データ取得、日証金と信用残、そういったデータ取得プログラムを安定的に動かすための ジョブスケジューラ Hinemosの設定といった微調整を続けていました。

 現在のシステム構成の DBは、mariaDBを使っています。それ以外にもPDFなどの物理ファイルを自動で落としてきたIRデータ容量が 2TBで足りなくなってきたので、今週末は新しい6TB HDDへの移行作業になります。そのあとでまたトレステELの予定。平日ざら場中は毎分、引け後と寄り付き前は10分間隔でIR公開サイトのいくつかに自動アクセスしているので、ほぼ土日しか作業ができなかったりします。

 

  息抜き?に、InteractiveBrokers証券のアカウントで、ざっくり確認してみたところです。TSEからのマーケットデータ取得は月額300JPYで可能なようです。安いですなあ。どの程度の同時取得が可能なのかはこれから検証ですが、一番期待できそうな感じです。それ以外は Forexなどは口座維持者であれば無料、あとはなぜか韓国市場のマーケットデータが無料なようです。なんでしょう全く買う気になれないので、データ取得の検証用という感じかもしれません。UK, US市場などはそれぞれざっくり20$/月ぐらいかかるみたいなので、しばらくは見送りで、当面はTSEからの予定。

 

 まぁこんな感じの1週間です。

マルチチャートのレイアウトなど

EL使えば色々できますなあ。

先のお話の続きとして。

EL環境から MultiChartを開きます。

ツール、オプションでライン番号表示の前提で、

27行目にこんなのあります。(゜Д゜)
    int MAX_CHARTS(30),

数字変えてみましょう。掛布ファンだったので31は確認しました。

これ以上増やすとどうなるかは知りません。

32行目にこんなのあります。(^_^)

    int SPACE_BETWEEN_CHARTS(10),

8ぐらいにしとくとスクロールバーが出てきてもフルHDで横に9つ並びます。

37行目にこんなのあります。(^_^)

  string TIME_FORMAT_STRING( "%H:%M:%S" ),

1分足以上の表示だったら、:%Sを消しても良いかもしれません。

EasyLanguageの最初の作業:マルチチャートの色の変更

Easyと言われてさっぱり解らないという微妙なプレッシャーで日々悶々としています。

昨日の朝もいつものように起動不具合のトレステかと思ったら、昨晩終了時にマルチチャートを閉じた状態で終了させていたおかげか、何事も問題なく一発で起動しました。時間かかるけど。

今週はマルチチャートのワークスペースを閉じてからトレステ終了というのを続けてみます。

 

EL開発環境で、まずピンと来ないのが何を開いて何を保存してどうしておけばどうなるのかという基本的なところが見つけられず悶々としていたわけです。Javaで言えば、javaファイルでコード書いてclassファイル生成して、実行形式に応じてアーカイブして配布して動くようにシェルなりアプリケーションサーバでコンフィグかけるみたいな。VisualStudio系ならビルドしてコンパイルして配布みたいな。

 

 ELだと、EL環境起動してとりあえず、ファイル(F)、開く(O)、分析タイプを選択(A)、アプリケーションを選び、MultiChartを開いて、application colors and fontsとあるあたりをぐりぐりと適当に修正して、保存して、構築する(B)、検証(V)もしくは F3キーを押すと、マルチチャートの色合いが変更されてハッピーになれます。

ほぼ見えない濃い青のフォントをどう修正すれば良いのか謎のままですが、その他周辺の色合いを変えて見やすくできます。こんな感じ。//を入れればコメントになります。

f:id:koba_tradestation:20161025023910j:plain

//--------------------------------------------------------------------------------------------------------------
//    application colors and fonts
//--------------------------------------------------------------------------------------------------------------
method void InitColorsAndFonts()
begin
    //clrBackground = Color.FromArgb(71, 78, 87); --> チャートの背後のウィンドウ背景
    clrBackground = Color.FromArgb(71, 78, 87);
    //clrButtonsBackground = Color.FromArgb(22, 39, 53); --> 左上のボタンの背景
    clrButtonsBackground = Color.FromArgb(22, 39, 53);
    //clrButtonsText = Color.FromArgb(182, 190, 194); --> 銘柄名、時刻、出来高数量など
    clrButtonsText = Color.FromArgb(182, 190, 194);
    //clrTileBackground = Color.FromArgb(27, 32, 37); --> 背景
    clrTileBackground = Color.FromArgb(127, 132, 137);
    //clrSymbolText = Color.FromArgb(255, 255, 255); --> 銘柄コードの部分
    clrSymbolText = Color.FromArgb(255, 255, 255);
    //clrDarkGray = Color.FromArgb(182, 190, 194); -->出来高部分の色
    clrDarkGray = Color.FromArgb(82, 190, 194);
    
    fntButtons = Font.Create(FONT_FAMILY, 10);
    fntSymbol = Font.Create(FONT_FAMILY, 12, FontStyle.Bold);
end;

 

3原色指定を3つの数字で指定するので適当に好みで変更できます。チャート背景と出来高の棒グラフの色を変えてます。

 

ついでに、構築する(B)、すべてを検証(F)を実行したら、すべての既存EL関連がビルドされるので、なんとなくどういう構成でどう作っていけば良いかシステム系の人なら解るのでは無いかと感じました。これであと一〇年は戦えるかもしれない。