通貨ペアのリスト
Symbolsインターフェース
チャートの通貨ペア以外を参照したいときはここからアクセスできます。ちなみにSymbolのことを通貨ペア通貨ペア言ってますが、FXだけではなく取扱いさえあればインデックスもメタルも全部含みます。
public interface Symbols : IEnumerable<string>
IEnumerableを継承してるのでこれ自身が配列の振舞いをしながら独自のプロパティやメソッドを持ってるタイプです。SymbolsなのでSymbolの配列かと思いきや、中の要素はstring(通貨ペア名)です。
ChartのSymbolsプロパティが唯一のオブジェクトです。
プロパティ
(string) this[int index]
index番目の通貨ペア名を取得します。繰り返しますがSymbolではなくstringの配列です。Symbols[0]とかで取得できるのは”EURUSD"とかのSymbol.Nameです。
(int) Count
配列のサイズを取得します。つまりはそのブローカーのcTraderでの取り扱い銘柄数が取得できます。
メソッド
(bool) Exists(string symbolName)
Symbolsの中にsymbolNameがあるかどうか調べます。あればtrueなければfalseが返ります。
(Symbol) GetSymbol(string symbolName)
通貨ペア名からSymbolを取得します。なければその旨ログが出力されてnullが返ります。
(SymbolInfo) GetSymbolInfo(string symbolName)
通貨ペア名からSymbolInfoを取得します。リアルタイムの情報が不要なときはこちらを。
(Symbol[]) GetSymbols(string[] symbolNames)
複数の通貨ペア名から複数のSymbolを配列で取得します。無効な文字列が含まれてるとnullを含んだ配列が返りますので注意してください。
(SymbolInfo[]) GetSymbolInfos(string[] symbolNames)
複数の通貨ペア名から複数のSymbolInfoを配列で取得します。同上。
サンプルコード
// 冒頭に using System.Linq が必要
// マイナー通貨同士のペアやFX以外の銘柄情報一覧を表示する
var minors = Symbols.Where(s => !s.Contains("USD"))
.Where(s => !s.Contains("EUR"))
.Where(s => !s.Contains("JPY"))
.Where(s => !s.Contains("GBP"))
.Where(s => !s.Contains("AUD"))
.Where(s => !s.Contains("CHF"))
.Where(s => !s.Contains("CAD"));
var infos = Symbols.GetSymbolInfos(minors.ToArray());
string displayText = " 銘柄名 " + " 説明 " + "rn";
foreach (var info in infos) {
displayText += info.Name.PadRight(20) + info.Description.PadRight(40) + "rn";
}
マイナークロスペアとFX以外のシンボルの一覧がチャート左下にずらっと表示されたと思います。
(書いてから気づきましたが、これだと"USD"を含むメタルや仮想通貨も除外されちゃいますね。まぁ参考程度に。)