ENUM_COPY_TICKS とは
ENUM_COPY_TICKSは、ティックデータを行列またはベクトルに渡す際に、取得するデータの種類や形式を指定するための列挙型です。この列挙型を利用することで、特定の価格情報や取引量など、必要なデータのみを効率的に取得することが可能です。
ティックデータとは、金融市場における価格や取引量などの細かい情報を指します。例えば、買い気配値(Bid値)、売り気配値(Ask値)、直近約定価格(Last値)などの変化を記録したもので、トレードのタイミングを見極めたり、詳細な市場分析に活用されます。
ENUM_COPY_TICKSを使えば、これらのデータをフラグで指定して柔軟に取得でき、分析や戦略構築に役立てることができます。以下に、各識別子の詳細を説明します。
COPY_TICKS_INFO
COPY_TICKS_INFO は、買い気配値(Bid値)および売り気配値(Ask値)の変化を含むデータを取得する際に使用されます。この識別子を利用することで、価格変動の基礎的な情報を把握することができます。
値
COPY_TICKS_INFOの値は「1」です。
COPY_TICKS_TRADE
COPY_TICKS_TRADEは、直近約定価格(Last値)および取引量(Volume)の変化を含むデータを取得する際に使用されます。この識別子を利用することで、実際の取引に基づく価格や取引量の情報を取得できます。
値
COPY_TICKS_TRADEの値は「2」です。
COPY_TICKS_ALL
COPY_TICKS_ALLは、すべてのティックデータを取得する際に使用されます。この識別子を利用すると、買い気配値(Bid値)、売り気配値(Ask値)、直近約定価格(Last値)など、すべての価格変動や取引に関する情報を取得することが可能です。
値
COPY_TICKS_ALLの値は「3」です。
COPY_TICKS_TIME_MS
COPY_TICKS_TIME_MSは、ティックデータの時刻をミリ秒単位で取得する際に使用されます。これにより、1秒間に複数のティックが発生する場合でも、正確な時間情報を記録することが可能です。
値
COPY_TICKS_TIME_MSの値は「1 << 8」、つまり「256」です。
この表記は、「1を左に8回シフトする」という意味です。2進数では「1 << 8」は「100000000」となり、これは10進数で256に相当します。
COPY_TICKS_BID
COPY_TICKS_BIDは、買い気配値(Bid値)のデータを取得する際に使用されます。この識別子を利用することで、ティックデータの中から買い手が提示する価格の変動情報を抽出することができます。
値
COPY_TICKS_BIDの値は「1 << 9」、つまり「512」です。
この表記は、「1を左に9回シフトする」という意味です。2進数では「1 << 9」は「1000000000」となり、これは10進数で512に相当します。
COPY_TICKS_ASK
COPY_TICKS_ASKは、売り気配値(Ask値)のデータを取得する際に使用されます。この識別子を利用することで、ティックデータの中から売り手が提示する価格の変動情報を抽出することができます。
値
COPY_TICKS_ASKの値は「1 << 10」、つまり「1024」です。
この表記は、「1を左に10回シフトする」という意味です。2進数では「1 << 10」は「10000000000」となり、これは10進数で1024に相当します。
COPY_TICKS_LAST
COPY_TICKS_LASTは、直近約定価格(Last値)のデータを取得する際に使用されます。この識別子を利用することで、実際に取引が成立した価格の変動情報を抽出することができます。
値
COPY_TICKS_LASTの値は「1 << 11」、つまり「2048」です。
この表記は、「1を左に11回シフトする」という意味です。2進数では「1 << 11」は「100000000000」となり、これは10進数で2048に相当します。
COPY_TICKS_VOLUME
COPY_TICKS_VOLUMEは、直近約定価格(Last値)に対応する取引量(Volume)のデータを取得する際に使用されます。この識別子を利用することで、各ティックでどれだけの取引が行われたかを把握することができます。
値
COPY_TICKS_VOLUMEの値は「1 << 12」、つまり「4096」です。
この表記は、「1を左に12回シフトする」という意味です。2進数では「1 << 12」は「1000000000000」となり、これは10進数で4096に相当します。
COPY_TICKS_FLAGS
COPY_TICKS_FLAGSは、ティックのフラグデータを取得する際に使用されます。ティックのフラグデータとは、価格や取引に関する変更点(例: Bid値やAsk値の変化、取引の方向など)を示す情報です。これにより、どのデータが更新されたのかを特定することが可能です。
値
COPY_TICKS_FLAGSの値は「1 << 13」、つまり「8192」です。
この表記は、「1を左に13回シフトする」という意味です。2進数では「1 << 13」は「10000000000000」となり、これは10進数で8192に相当します。
COPY_TICKS_VERTICAL
COPY_TICKS_VERTICALは、ティックデータを行列にコピーする際の配置方法を指定します。この識別子を利用すると、ティックデータを縦軸に沿って配置することが可能です。最も古いティックが行列の最初の行に配置され、最新のティックが最後の行に配置されます。
値
COPY_TICKS_VERTICALの値は「32768」です。
縦軸に沿った配置を指定することで、時間順にデータを整理して扱う場合に適しています。
ビットシフトと指数の関係
プログラミングで使われる「ビットシフト」は、数学の「指数(累乗)」と密接な関係があります。特に左ビットシフト演算(<<
)では、数値を2の累乗倍する効果があります。これは、2進数の世界で「ビット」を左に移動させることで、値が2倍、4倍、8倍と増えていくからです。
左ビットシフトの仕組み
「1 << n」という操作は、「1を左にn回移動させる」という意味です。このとき、結果として得られる値は次のようになります:
1 << n = 2^n(2のn乗)
つまり、ビットを左に移動する回数(n)が、数学の指数(n乗)と同じ役割を果たします。
具体例
- 1 << 1(1を左に1回シフト)
結果は 2。これは 2^1 = 2 に等しいです。 - 1 << 2(1を左に2回シフト)
結果は 4。これは 2^2 = 4 に等しいです。 - 1 << 5(1を左に5回シフト)
結果は 32。これは 2^5 = 32 に等しいです。
なぜビットシフトが指数になるのか?
これは2進数の仕組みによるものです。2進数では、桁を左に移動するたびに値が2倍になります。以下は2進数で「1」を左に移動する例です:
- 初期状態:0001
10進数の1に相当します。 - 左に1回シフト:0010
10進数の 2(1*2)になります。 - 左に2回シフト:0100
10進数の 4(1*2*2)になります。 - 左にn回シフト:10進数で 1*(2^n)
結論
ビットシフト演算「1 << n」は、数学的には「2^n」を求めることと同じです。この操作は、プログラムの中で効率的に指数計算を行うためによく使われます。指数計算がビット操作に置き換わる理由は、コンピュータが2進数を基本として動作しているからです。