0

背景: Interactive Brokers と Matlab の C# API を使用して、財務データを読み込み、それらの分析を行っています。私は Matlab でのコーディングには慣れていませんが、C# は初心者レベルです。市場データを取得するためのすべての関数を含む dll ファイルを作成し、ライブラリを Matlab に実装して、Matlab で関数を開始できるようにしました。

現在の問題: Matlab の使用インタラクティブ ブローカー API を介してリアルタイムの市場データを要求するメソッド(「トップ レベル メソッド」)を呼び出しています。他に、プロセス中に次のメソッドが呼び出されます。これは、単に tickSize をコンソールに書き込みます。

public virtual void tickSize(int tickerId, int field, int size)
    {
        Console.WriteLine("Tick Size. Ticker Id:" + tickerId + ", Field: " + field + ", Size: " + size + "\n");
    }

私の調査によると、このメソッドは「void」として宣言されています。これは、要求された情報が単にコンソールに書き込まれるため、直接出力変数が返されないためです。

問題は、このメソッドが「void」として宣言されている IB API 内の別のより複雑なメソッドを介して呼び出されることです。

目的: Matlab で最上位メソッドを呼び出すときに、このメソッド(tickSize)の情報を出力として取得したい。

制約: 'tickSize' を呼び出す IB API 内のメソッドも void メソッドとして宣言されており、多くの制約と if 句を含む複雑な C# メソッドです。

この問題を解決するための試み:この問題に対処するテキストブックの方法は、それぞれの出力タイプを定義するメソッドを記述することだと思います (この例では、tickerId のみを取得したい場合は「int」と言ってから、 IB API の複雑なメソッドを同じ出力タイプに変更し、最後に、変数がプロセスを介して渡されるように上記のメソッドを調整する. ただし、上記で概説したように、完全な取引を台無しにしたくありません. IB の技術サポートから、出力(int tickerId)を何らかの形で保存してメイン メソッドに直接渡すことができる別の 4 番目のメソッドを自分で作成するようにアドバイスされました. ここで私の C# の知識は確実に終わりました。 Google 検索では、この特定の問題について結果が得られなかったようです。

質問: C# に複数レベルのメソッドがある場合、1 つのメソッドが 'void' として宣言されていることを克服し、出力を最上位のメソッドに直接送信する方法はありますか?

それが役立つ場合は、私が話しているそれぞれのメソッドを提供することもできますが、API は静かで複雑であり、ここにあるすべてのコードをスパムしたくありませんでした。

4

1 に答える 1