オフセットについて:はじめに
サイトのプロフィールに書いている通り、私はシステムトレードを始めたい一心で、四則演算さえおぼつかない状態から独学でプログラミングを身につけた訳ですが、そんな人間が勉強を始めるとちょくちょく、日常会話のように使われているけどピンとこない言葉に出くわします。
例えば過去に解説記事にした「静的」「動的」といった言葉もその中の一つです↓
そしてそのたびに、心が折れてプログラミング学習を投げだしてきた経験のある私は、MQL5やその他プログラミング言語の学習に励んでいる方が同じ気持ちに陥らないよう、たとえ野暮と言われようとも
一見プログラミングの領域では当たり前に使われているけど、未経験者が唐突に出くわすと、面食らいそうな言葉についての解説記事を書こうと決めました。
前置きが長くなりましたが、そんな訳で今回の記事では「オフセット」という言葉を取り上げたいと思います。
オフセットという概念は、プログラミング、特に配列やデータ構造における基本的な概念の一つです。MQL5や他のプログラミング言語を学ぶ初心者に向けて、この概念をわかりやすく説明するために、日常生活からの例えを交えた解説を行います。
オフセットって何?
オフセット(offset)とは、「ある決まった地点」からの距離やずれのことを指します。
プログラミングにおける「配列」では、オフセットは「配列の最初から数えて何番目か」という位置を指すために使います。
※配列についての詳細は↓の記事をご参照ください
オフセットを理解する:本棚の例
例えば本棚に本が並んでいると想像してみてください。
最初の本から数えて、3番目の本を取りたいとします。
このとき、3番目の本の位置は「最初の本から2つずれた位置」にあります。
ここで、「2」という数値がオフセットに相当します。プログラミングの世界では、この「最初の点からいくつずれているか?」というオフセット情報を用いて配列内の特定の要素にアクセスします。
オフセットの使い方
- 開始点は0です:多くのプログラミング言語では、配列の最初の要素を0としてカウントします。つまり、最初の要素のオフセットは0、2番目の要素のオフセットは1となります。
- 具体的な使い方:MQL5で配列の要素にアクセスするには、配列名の後に[]を使い、その中にオフセットを指定します。例えば、
prices[2]
は、prices
配列の3番目の要素を指します。
※要素というのは「配列の構成する各変数の中身の事」です。詳細は↓の記事リンクをご参照ください
※変数とは、データを入れておける箱のようなものです。詳細は↓の記事をご参照ください
オフセットの重要性と注意点
オフセットを理解することは、配列などのデータ構造を効率的に扱う上で非常に重要です。オフセットを使うことで、必要なデータに正確かつ迅速にアクセスすることが可能になります。
最後に注意点を挙げておきます。。
オフセットの範囲と範囲外エラーについて
配列のサイズを超えるオフセットを指定すると、エラーが発生します。配列の範囲内でオフセットを使うことが重要です。
オフセットの範囲を理解するために、「オフセットを理解する:本棚の例」セクションで例に出した本棚を再び想像してみましょう。
本棚には、左から右に向かって10冊の本が並んでいて、それぞれの本が1冊ずつ配列の要素に相当します。
配列をプログラムで表すと、この本棚は books[10]
という配列で表され、books[0]
から books[9]
までが各本に対応しています。
ここで、books[10]
は存在しない要素です。
実際の本棚で11番目の本を取ろうとすると、本はありませんよね? プログラミングでも同じで、このように配列の範囲を超えてアクセスしようとするとエラーが発生します。
このように、配列を始めとしてプログラミングの領域において、最初の要素が0であることに慣れる必要があります。
初学者の方にとっては少し混乱を招くかもしれませんが、慣れることでプログラミングの理解が深まります。
まとめ
オフセットの概念はシンプルですが、プログラミングにおけるデータアクセスの基礎を形成します。
日常生活での例えを思い出しながら、配列やその他のデータ構造でオフセットを使ってみてください。
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。