インジケーター作成への道

MQL独特の概念に戸惑いまくる・・の巻

トレーダーズマニュアル MQL

MQLを勉強し始めたのはいいのですが、MQL独特の概念的なモノや、MQLならでは(?)の表現方法に戸惑いまくってます(+_+)

この記事では、MQLのどんな概念に戸惑っているか?

他には、MQLだからこそ?な具体的な表現方法についてお伝えします☆

共感してくれる方・・・いらっしゃるかなぁ~(^ ^;

独特の概念

「プログラムの勉強はMQLが初めて」という方だと、もしかしたら感じないコトなのかもしれませんが、私はOL時代にC言語、フリーになってからはVBAでツールを作ったりしていたせいか、MQL独特の概念的なモノが想像しにくくて戸惑い中です(笑)

 

まぁ経験上、習得してしまえば

「ふっ・・・あの頃は若かったワ・・・」

トレーダーズマニュアル MQL

なーんて、遠い目をしながら思い返せる小さなコトなんだとは思うんです。

でも今はまだその感覚がつかめにゃい(*_*)

 

それが何かというと、表現方法が難しいんだけれど時間の概念とでも言ったらいいのか、チャート上には「今」と「過去」のデータがのっかってて、常に動いてる感じ?

トレーダーズマニュアル MQL

んとーーーー、すでにチャート上にあるデータ(自分で作ってないデータ)と、プログラムを組み合わせる感覚というべきなのか。

・・・いや、アタマの中で、まだイメージが上手くマッチングしてないだけなのかな?

 

VBAだとエクセル上のこれを弄ってるだとか、セルのこの部分を今こうしてるってイメージができるんだけれど

トレーダーズマニュアル MQL4

MQLは想像がついてこなくて「(。´・ω・)んんん?」となる。

他の方が書いたコードを読むと、結果的にものすごーーーく勉強になるし、if文やfor文なんかのロジックは理解している部分がある流れを読んで簡単に解読できる部分もあるんだけれど、今までなかった部分の概念的な部分が上手くマッチしない。

 

そしてわからない言葉を調べると、その調べてる中にまたわからない言葉が出てきて、それを調べてるとまた・・・∞

という、新しい世界に飛び込むと必ず陥る無限ループにハマってます(笑)

 

でもこれも、やり続けているとどこかでピコーーーン!!!といきなり脳のシナプスが繋がり始める感じで、目の前の霧がささーーーーっと晴れていくように理解できるようになるんですよネ~(●´ ω `●)

それが分かっているから、今は絶賛モドカシ中だけれど、諦めずにトライするのみ!

ピコーン!が来る時を信じてガンバリマス(p`・ω・´q)

関数について

これもVBAと比べて・・・なんだけれど、いわゆる関数の最初の文字を大文字にしないと関数として認識されないというアレ。

MQL 初心者 あるある

VBAは勝手に認識してくれるので、わざわざ大文字で入力するという概念がなく。。

 

少し前にお師匠様からmq4を読むお題をいただき、少しだけコードを書きかえたんだけれど、これがなっかなか上手くいかない!

大きな原因は2つあり、ひとつ目は関数の最初の文字を大文字にしてなかったせいで、関数と認識されてなかったということ。

 

ただこれは対策があって、キチンと関数と認識されれば関数名の色が紫に変わるので、一度経験すると忘れなくなる気がします。・・・気がするだけ?(笑)

↓最初の文字が小文字なので、認識されていません。

トレーダーズマニュアル 関数

↓大文字に変えたら、関数って認識されました♪

トレーダーズマニュアル 関数

こんなの初歩の初歩ってトコロで、知ってる方にとっては当たり前なんだろうけれど、私はいきなりここでつまずいてしばらく悩んだので備忘録としても書いておきます☆

 

そしてもうひとつの原因は、次に記載する【if文】の記載方法でした。

条件式(if文)

VBAに出てくるif文は

if ( a = b ) then

「もしaがbと同じなら」という意味なんですが、MQLでは【=】がヒトツだと「aにbを代入」的な意味になってしまうようで、if文が成り立ってない感じに・・

MQLでif文を書く時は

if ( a == b )

と書かないとダメ!

これは今も慣れなくて、勉強のために他の方が書いたmq4を読んでいても間違えそうになるので、早くアタマに認識させなくっちゃ!です☆

ちなみに条件式の書き方としては以下の通り。

1.(a == b) aとbが等しい

2.(a != b) aとbが違っている

3.(a > b) aがbより大きい

4.(a < b) aがbより小さい

5.(a >= b) aがb以上の時

6.(a <= b) aがb以下の時

 

数え方

C言語では配列の数え方がざっくり言うと0スタートなので、今読んでるMQLの教科書的な本を読んでる限りでは理解はできるんです。

ただ、ここ数年はほぼVBAだったので、どーーーーしても1スタートに(^ ^;

 

配列の数え方だけでなく、文字の数え方も0スタートなので、例えば

*StringSubstr()関数

この関数、指定した文字列の中から、指定した位置・指定した数の文字列を抽出できる関数なんだけれど、1文字目から3文字抜き出したかったのに

StringSubstr(Symbol(),1,3)

と書いてしまい、2文字目から3文字を抜き出してしまいました(笑)

正解は

StringSubstr(Symbol(),0,3)

 

今他のお仕事でVBAを使っているので、この辺りは「今はMQLやってる!」って認識してやらないと間違っちゃいますネ💧

気をつけます(●´ ω `●)ゞ

まとめ

っとまあ、初心者あるあるなのか、VBAと並行してやってるからならではの戸惑いなのかはわからないんだけれど、MQLにトライし始めたからこその戸惑いをビシビシ感じている今日この頃。

今、勉強のために他の方が書いているコードを解読しているんだけれど、数値的にどんなコトやってるか理解できても、なぜその式になってるのか?などが分からなかったりしてます(笑)

 

ただ、一つ一つ読み解いて、流れを読んでいけば理解できるかな?と。

少しずつは進んでいってるので、最後にアハ体験のように理解できることを信じて進めていきます(´∪`*)☆


友だち追加

LINE登録者限定でBO勝率インジや
便利系インジ配布していきます。
またFXのインジも今後作成していく予定です。
LINE登録者には利益になるよう考えていきます!!