MT5/MQL5
問題発生(2026年2月2日) 2026年2月2日にMT5を起動したところ、アップデートが配信されていたのでアップデートを実行しました。すると、そのままMT5がフリーズしました。 フォントが原因 Winodws上にないフォントをコードの中で指定している場合、そのプロ…
同一の配列の中でデータの位置をずらす際にもMQL5のArrayCopy関数が使えることを最近知りました(私が知らなかっただけで、別に大した話ではないのですが、汗)。 以前は、別個の配列(たとえば、配列Aと配列B)の間でデータをコピーする時に使うものだと思…
口座情報を調べる関数には「AccountInfoDouble」「AccountInfoInteger」「AccountInfoString」があります。このうち「AccountInfoDouble」で取得する項目について、どれがどんな項目なのか忘れがちなのでここにまとめました。 AccountInfoDouble(ACCOUNT_BAL…
トレードでは、エントリーできる状況が訪れるまで待つ時間が長いですよね。この時間がもったいないので、節目となる価格や意識されているラインにアラートを仕掛けておいて、アラートが鳴るまでは他の作業をしています。 これ以外で「待つ」というと、ローソ…
目次 インジケーターバッファのデータの順序 受け側配列のデータの順序 CopyBufferによるコピーの様子 配列の並びを逆順にする 実験(具体例) データのコピー先は配列の「先頭から」 MQL5のCopyBuffer関数でインディケーターの値を配列にコピーした時に、デ…
MQL5のヘルプを見ながら試作した成行注文を出す関数です。 新規の成行注文を出す関数(試作) // [留意点] ・現在チャートを想定しているので、_Symbol を使用 // ・magicフィールドには #defineで定義する EXPERT_MAGICを使用 bool SendMarketOrder(ENUM_OR…
MqlTradeRequest構造体に「type_filling」というフィールドがあります。 これはFill policyを指定するフィールドです。 Fill policyとは何か? 注文を出しても「希望した価格」で「希望したロット数」の全てが約定するとは限りません。 たとえば、1000円で30…
目次 { }で初期化した直後の状態 Execution Modeを調べる Execution Modeごとの必須フィールド priceフィールドとdeviationフィールド slフィールド、tpフィールドの注意点 { }で初期化した直後の状態 MqlTradeRequest構造体のフィールドの中には4つのENUM項…
久しぶりにMqlTradeRequest構造体を使おうとしたら迷路に入り込んだので、改めて調べ直しました。 この記事は「フィールドの内容」と「初期化」に関するメモです。 なお、個人的には「メンバ」という言葉を使いたくなりますが、MQL5の文書では「フィールド」…
ボラティリティが無いとトレードしづらいので、トレード前にボリンジャーバンド(以下「BB」)の様子を見ています。しかし、手作業で主要通貨ペアのチャートを見るのは手間です。 そこで、BBの幅をエキスパートに出力するスクリプトを書いてみました。 なお…
この誤差は何? EAの中で平均足を計算するコードを作成し、動作チェックを行いました。具体的には、EAで計算した平均足の値と、MT5のHeiken_Ashiインディケーターがデータウィンドウに表示した値を比較しました。 (備考)MT5においては、Heikin_Ashiではな…
MT5でspreadの値を取得する方法はいくつかありますが、以下の記事によると、取得する方法によって値が異なる場合があるようです。 https://fmdsm.blog.fc2.com/blog-entry-94.html 上記記事の内容から「MqlRates.spread」「iSpread()」「spread[]」を使って…
MQL5のヘルプを眺めていたらArrayReverseという関数が目に留まりました。使ったことがなかったので、以下のコードで動作確認をしてみました。 void OnStart() { int hoge[4] = {3, 5, 7, 9}; for(int i = 0; i < 4; i++) printf("hoge[%d] = %d", i, hoge[i]…
ストップレベル(StopLevel)とは? MT5でバックテスト中、注文に失敗しました。「TRADE_RETCODE_INVALID_STOPS」というリターンコードが返ってきており、原因はストップレベル違反でした。 ストップレベル違反とは「TP(利確価格)やSL(損切価格)を指定す…
MT4からMT5へ移行して以降、MTFの移動平均線(以下「MA」)を使っていませんでしたが、5分足チャートや15分足チャートを見ている時に「1時間足のMAも表示されている方が便利だな」と思ったので、上位足のMAを表示するインディケーターを、MQL5の練習を兼ねて…
参考にした記事 この記事では、下記リンクの記事に記載されているPowerShellスクリプトを使わせていただいています。 How to Code & Compile MQL5 in Visual Studio - A Complete Guide - Other - 13 July 2018 - Traders' Blogs この記事を書いた理由 基本…
昨年MT4用に書いたコードをMT5で試してみたところ、LINEへの通知はできているものの、エキスパートに「6 leaked strings left」と表示されていることに気がつきました。 ネット情報によると、これはメモリリークを示唆する文言のようです。この表示が毎回出…
TradingView風味にできないかしら? トレードにはMT5を使っていますが、チャート分析ではTradingViewを使うことが多いので、MT5のチャートにオブジェクト(四角形、トレンドライン、水平線など)を配置する時、 TradingViewと同じような操作感にできないもの…
MT4では、チャートにインディケーターを挿入しても、OnInit関数の戻り値がINIT_FAILEDの場合は、インディケーターがチャートにセットされずに除去されていた気がします。しかし、MT5ではそういう風にならないようです。 MT5で、わざとおかしな初期値を指定し…
「MQL5/Files」ディレクトリにある不要なファイルを削除するために、当該ディレクトリにあるファイルやディレクトリを一覧したいなと思いました。 そこで以下の関数を用意したのですが、再び使うことがありそうなので、ブログ上に残しておくことにしました。…
インジ作成の背景 トレードをしていると、個別通貨(JPY、EUR、AUD等)の状況を確認したい場面がしばしばあります。このため、次のようにしている人をちらほら見かけます。 ・小さなウィンドウを沢山配置して各通貨ペアのチャートを表示 ・モニターを複数枚…
インジ作成の背景 MT5でトレードする時に買いライン(Ask価格を表すライン)を表示させることがあるのですが、そのたびに (1)チャート上で右クリック (2)プロパティを開く (3)「表示」タブの中にある『買いラインを表示』を選択 という風にして、買…
インジケーターを作成する場合などに使うCopyBufferという関数には、引数の1つとして buffer_num(バッファ番号)というものがあります。 CopyBufferの書式の1つを引用すると int CopyBuffer( int indicator_handle, // indicator handle int buffer_num, //…
指定した日時がサマータイム期間かどうか調べる関数を、昨年、このブログにMQL4で書きました。それを部分的に修正してMT5に移植したものが、この記事に登場するコードです。 関数の使用例 MQL4版との違いは、第3引数が無くなったことくらいで、それ以外の使…
AXIORYのサイトを見たら2021年5月14日付けでMT5対応の口座がリリースされていたので、MQL5を触ってみることにしました。 ■終値の違い 手始めにMAを表示させたみたのですが、MT4とMT5で値が違っていました。 この時表示したのは、GBPUSDの日足のMA(SMA、期間…