将来が不安なサラリーマンの雑記

プライベートな日々の雑記とか

MQL5 リファレンス関連まとめ

API リファレンス

  • 公式
    • 組み込み関数など全て網羅してあります

参考になるサイト

  • BeHacker
    • MQL について、基礎的なことから非常にわかりやすく解説してくださっています。
  • Toyolab FX
    • MT4/MT5 に関する書籍を多数書かれている方のブログです。情報がたくさんあります。

MQL5 よく使う組み込み関数

MQL5 を見様見真似で学習中です。
当方、ぱっと見、MQL5 は C++ と似た言語なのかなと思ってます。
C言語自体は仕事で使うメイン言語の一つなので、個人的にはとっつきやすいのかなと思っているので、 C言語C++ と比較しつつ学んでいければと思ってます。

MQL5 では、あらかじめ用意された組み込み関数が存在するみたいです。
C言語でいう標準ライブラリ的なものでしょうか。

以下、よく使うと思われるものを列挙しておきます。

基本形

  • ArraySize(配列) :配列の大きさを取得する

Math 関数系

  • MathAbs(int):引数で与えた数値の絶対値を取得する。確かめてないけど、たぶん double とかでもいけると思う。
  • MathMax(int, int):引数で与えた数値を比較し、大きいほうを返す

OHLC(Open High Low Close)の取得

関数単体ではなく、定型的に以下の手法で取得できるみたいです。

// OHLC を格納するための構造体
MqlRates prices[]; 

// 配列の先頭から新しいデータを格納(第2引数を false にすると、配列の先頭から古いデータを格納するらしい)
ArraySetAsSeries(prices, true); 
   
// _Symbol は現在の通貨タイプが格納されたプリミティブ定数らしい
// 第2引数は時間足(0を指定すると現在のチャートの時間足)
// 第3引数は取得するデータの開始インデックス
// 第4引数は取得するデータの数
// 第5引数はデータの格納先ポインタ
int num =CopyRates(_Symbol,0,0,3,prices); 
   
printf("open:%lf, close:%lf", prices[0].open, prices[0].close);

参考:MQL5でOHLC値を取得する – noralog

追記

MQL4 と MQL5 で共通関数を使用する

MQL4 と MQL5 は組み込み関数に互換性がありません。
どうやらこれが MQL5 が普及していない原因の一つみたいです。既存の MQL4 のソースが使えなくなるならそりゃあ面倒くさいし嫌ですものね。

それを解決する方法として、 MQL5 の関数を MQL4 のインターフェイスにラップしてやる方法があるみたいです。
確かにこうすることで、MQL4 のソースがそのまま流用できますよね。
そのラップ関数のことを「MT4/MT5共通ライブラリ」と呼ばれているらしいです。
こちらのブログで、これらの共通ライブラリ化を行っているようです。)

この「MT4/MT5共通ライブラリ」について本が出版されているみたいなので、購入を検討中です。

「世界一やさしい株の教科書」を読んだ感想

買いタイミング

テクニカル

  • 75日線が上向き
  • 75日線を下から上へ抜けていく

上級的な考え?

75日線+1円で逆指値を入れておき、75日線を下から上へ抜けた瞬間に約定するようにしておく
→結構チャレンジな気がする  

売りタイミング

テクニカル

75日線を上から下へ抜けていくとき、つまり75日線-1円で逆指値を入れておく
ロスカット=利益確定となる

または、MACDデッドクロスが出たら売りもOK

ボリンジャーバンドを使用する方法

上昇1回目は、買い約定日の+2σで利益確定ロスカットを入れるのもあり
→トレンド発生前は、+2σでバンド内に戻る確率が高いから

上昇2回目以降のトレンド発生後であれば、+2σ内で株価が上昇する
そのため、株価の終値が+1σ内に入ったときに売ると効率が良い

約束

買ったらすぐ売り注文を入れる
→逆指値で、値幅注文をしておく→逆指値条件成立時に、指値でさらに5円幅をもたせる
(逆指値条件成立時に成行でもいいのでは?)

売買法則

グランビルの法則に従い、上昇3回を遵守する

  • 上昇1回目・・・様子見をするため、売買単位は小さく
  • 上昇2回目・・・利益をしっかり取りに行く
  • 上昇3回目・・・上昇期間は短く、ボラタリティも高くなりがちなので、警戒すべし。大きく変化したらすぐ手仕舞い

株の選定方法

75日線を使用したトレンド

  • 上昇開始時(または上昇中)
  • 2~3ヶ月以上下げ続いたものを選ぶ →下落途中を掴まないようにするため
  • 3段下げが完成しているか(3回以上安値更新しているか)
  • 安値を切り上げながら75日線に近づいているか

ファンダメンタルズ

  • 同業種と比較して、PERが低い
  • PBRは1以下が良い(そこまでどうでもいい?)
  • ROEは2桁以上あると良い(そこまでどうでもいい?)ただし、極端に高いのもおかしい
  • 同業種と比較して、予想増益率が高い(コンセンサス予想の使用を推奨)
  • 配当利回りが高い

その他

  • 200日移動平均線は、支持や抵抗になりやすい
  • 売り注文が約定したら、そのことに関する日記を書くべき →何故利益が出たのか?何故損失したのか?を1行でもメモに残しておき、振り返る習慣をつける
  • スタンス
    • 高くなったときに買い、安くなったときに売るという、順張り
    • 数撃ちゃ当たる戦法?
      →1000円ロスカットが複数あったとしても、トレンドに乗って大きく利益を得たのが1つでもあれば、トータルプラスになるだろうという考え

VIX指数連動のCFDにチャレンジ

はじめに

昨晩のトルコリラ円の暴落とその対応は疲れました・・・。
まあ過去にも一日で2円以上動いたこともあるみたいなので、トルコリラ円がそもそもこういうものなのかもしれませんね。
サヤ取り運用という性質上、両建てを維持するために資金移動をしっかりしないといけないんですが、週明けにどれくらい窓が開くのか見当もつかない=「どれくらい資金を用意しとけばいいのかわからない」ということで、もう疲れたのでトルコリラスワップサヤ取り運用を断念しました。
そもそも運用益も思った以上に出ていなかったのでメンタルコストに見合ってないなぁと思った次第です。
(夜寝るのも2時過ぎてしまったし・・・😌)

それに伴い、運用資金30万円が浮いたので、もっとメンタル的に優しいのはないものかとネタを探していると、VIX指数に連動するCFDが割と安定して運用できるのではないか?!という考えに至ったので、ここにチラ裏しておきます。

VIX指数とは

VIX指数がどういうものかというのはここでは割愛しますが、
チャートとかみてみるとなかなか面白そうで、以下の特徴があります。

  • 下限がある程度決まっており、過去最低値は 10.10(2006/12/11)
  • 反対に上限は青天井であり、過去最高値はリーマン・ショック時の 72.80(2008/11/17)
  • 一時的に上がったとしても、指数の性質上、最終的には 1015 の間に戻ってくる

指数の性質から下方向のみレンジ相場が強制されています。
なのでこの特徴を活かすと、リスクを低減しつつ、リターンを大きく取れる可能性があるので魅力的です。

VIX指数に連動するCFDとは

GMOクリック証券のCFDで米国VIというのがあります。

基本的には VXV と呼ばれる「VIX ボラティリティ指数3ヶ月」に連動する商品らしく、基本的なチャート上の性質はVIX指数と同じです。
(意味的には、よく言われる「VIX指数」は直近1ヶ月間のことらしく、「VIX指数3ヶ月」は3ヶ月後のことらしい?です。要はVIXの先物的な感じでしょうか)
CFDなので、買いと売りのどちらからでもポジション建てができるし、両建てもできるので、いろいろ戦略が広がります。

一応、米国VIの特徴をまとめると以下の感じです。

  • 単位はドルで、ドル建て商品となるので為替リスクが発生する
  • 月に一回(たぶん第2水曜日?)「価格調整」というものが発生する
    • VIX指数が低ければ買いポジションで価格調整額を支払う必要がある(逆に売りポジションでは同額がもらえる)
    • VIX指数が高ければ売りポジションで価格調整額を支払う必要がある(逆に買いポジションでは同額がもらえる)
    • 金額はおそらくその時のドル円為替相場に依存するっぽい
      円高になるほど買いポジションで支払うべき金額が上がり、売りポジションでもらえる金額も上がる
      • →基本的にVIX指数が上がるときは円高になるシチェーションが多いので、 20 以下だと買いポジションで支払が発生すると考えてたらいい(たぶん)
  • 取引単位は10枚ごとなので、最低証拠金は以下の通り
    • 現在のVIX指数 × 現在の1ドル円 × 10
    • 例えば現在のVIX指数が15で、1ドル円が110円だと、 15 * 110 * 10 = 16500 で、1取引あたり「16500円」ということになる
  • ただし、レバレッジを5倍までかけることができる

戦略

本題の戦略です。
これはまだ構想段階ので、今後更新する可能性が高いですが、とりあえず今の考えを書いときます。

基本戦略

上にも書いていますが、チャートを眺めているとVIX指数は以下の特徴があることがわかります。

  • 上方向に動くときはかなり大きく動く
  • 下方向ではレンジ相場のように動く

なので、上方向に動いているときはなるべく高値で決済をし、下方向で動いているときは手動トラリピをするというようにしたいと思います。

具体的に

これはなんとなくですが、過去のチャートを見ていると、18.5 を超えると上向きにドカンといくパターンが多いように見えます。
逆に18.5 以下の場合は上へ行ったり下に行ったりを繰り返すことが多いように見えます。

価格調整対策

両建てすることで価格調整額を相殺することができるので、18.5 以下になった場合は売りポジションも建てるようにします。
ただし、売りポジションをずっと持ち続けると、VIX指数が上がったときに死んでしまうので、 20 を超えると売りポジションを決済するようにしたいと思います。

この戦略のメリット

とりあえず上方向ではリターンを大きく取りに行くというのがあります。(うまくいくのか微妙ですが)
下方向に 10 という下限ロスカットがありますが、VIX指数が 10 なんてときは S&P500 がウハウハ状態なのでロスカットされてもそんなに痛くないのではないかなーと楽観視しています。

考えられる課題

まず手動トラリピによる時間的コストが発生しますね。
私はサラリーマンなので、日中に注文や決済の操作とかするのは難しいので、1日毎のメンテナンスになると思われます。
果たしてそれでうまくやっていけるのか・・・?というのが課題としてありそうです。

備考

上抜けしたとき、買いをどこで手仕舞いするか?

VIX指数は上限が青天井なので、どこで買い決済を確定するかの判断が難しそうです。
投資素人がぱっと考えると以下のものがありそうです。

  1. トレール機能を使って機械的に買い決済する
    • メリット
      • 何も考えなくていい。学習コストゼロ
    • デメリット
      • トレールの性質上、必ずしもうまく作用するかはわからない
  2. MACD などのテクニカル指標を使ってデッドラインが発生したときに買い決済する
    • メリット
      • 一般的に広く知られている手法だから安心感がある
      • たとえ失敗しても、テクニカル指標を責めることができるからメンタル的に良さそう?
    • デメリット
      • 学習コスト
  3. 自分で指値を決めて、そこに達したら潔く決済する
    • メリット
      • 浅めの指値にすることで利益を確保しやすい
    • デメリット
      • 浅めの指値にすると機会損失が膨らむ
      • 指値の根拠を考えるための学習コスト

ということで、個人的には「学習コストゼロ」のトレールがいいかなと思っています。
と言いつつ、「じゃあトレール値幅はどうするの?」という学習が必要ですが・・・

書きたいネタ