| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

MT4

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

MT4

プログラムの種類

  • 種類によって保存される場所が異なる
  • 保存フォルダ一覧を開くには、ファイル-データフォルダを開く
  • プログラムファイルなどは、MQL4フォルダ以下に格納される
    • mac の場合、/Users/{ユーザー名}/Library/Application Support/MetaTrader 4/Bottles/metatrader4/drive_c/Program Files/MetaTrader 4/MQL4 が物理的な場所

Mt4 mac filelocation.png

スクリプト(Script)


  • Scriptsフォルダに保存される
  • 複数の処理をまとめて実行
  • チャートに挿入すると一度だけ実行
    • 口座情報や通貨ペア情報の取得
    • 過去のチャートデータの一斉処理

カスタム指標(Custom Indicator)

  • Indecatorsフォルダに保存される
  • MT4にすでに組み込まれているテクニカル指標と同様に、チャートに挿入することで独自に作成したテクニカル指標をチャートにプロットする

エキスパートアドバイザー(Expert Advisor,EA)

  • Expertsフォルダに保存される
  • チャートに挿入すると、価格の変化に応じて自動売買のできるプログラム
  • 過去のデータに対して仮想売買を実行し結果を表示するバックテストにも利用可能

コンパイル

  • ソースコードは拡張子、mq4
  • コンパイルすると、ex4

Mt4 programming compile.png

定義済変数


変数 意味 備考
Bid 売値
Ask 買値
Open 始値 配列
High 高値 配列
Low 安値 配列
Close 終値 配列
_Symbol 通貨ペア名
_Point 通貨ペアごとの異なる最小値幅
_Digit 小数点以下桁数
_Period 現在のチャートのタイムフレーム(分)換算

組込関数


定義済変数


取引関数


  • 自動売買を許可する必要がある
  • ツール-オプション -エキスパートアドバイザ タブ - 自動売買を許可する にチェック

Et4 ordersend.png

定義済関数 意味 備考
OrderSend 取引操作の実行に使用され、リクエストを取引サーバに送信

口座情報

定義済関数 意味 備考
AccountInfoString 口座のプロパティの値を返します プロパティ
AccountInfoInteger 口座のプロパティの値を返します プロパティ
AccountInfoDouble 口座のプロパティの値を返します プロパティ

スクリプト実行手順

  1. ファイル-新規作成 からウィザードでスクリプトを作成
  2. コーディングして、コンパイル
  3. ナビゲーターウィンドウに出現するので、チャートにドロップ
  4. ターミナルウィンドウ「エキスパート」に出力された

Mt4 dev proc.png

  • スクリプトをはじめ、MT4で作成するあらゆるプログラムは、チャートに挿入して実行される

カスタム指標プログラミング


  • カスタム指標は、チャート上にテクニカル指標データを順次プロットしていく
  • プログラムは、チャート上の価格が更新されるたびに繰り返し実行される

プロプロセッサ


プリプロセッサ定義 意味 備考
#property indicator_chart_window 指標をチャートと同じウインドウに表示
#property indicator_separate_window 指標をチャートと別のウインドウに表示
#property indicator_buffers N プロットさせる指標の数(N)
#propertyindicator_typeN 指標の種類を指定 Nの部分は、1 - 512 を指定
#propertyindicator_colorN 指標の色を指定 例:#propertyindicator_color1clrRed
#propertyindicator_styleN 指標の線種 STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT 例:#propertyindicator_style1STYLE_DOT
#propertyindicator_widthN 指標の太さ 例 #propertyindicator_width1 2

表示方法


  • 配列を指標バッファにSetIndexBuffer()関数を用いて関連づける
  • 新規作成-カスタムインディケーター
#property indicator_separate_window
#property indicator_buffers 1

double buf[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, buf);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   for(int i=0; i<5; i++) {
      buf[i] = close[i];
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Mt4 custom indicator.png

エキスパートアドバイザプログラミング


  • 一般にEAはインディケーターを使って売買シグナルを点灯させる

バックテスト


  • EAを過去のチャート上で仮想的に動作させること
  • MT4ではストラテジーテスターという機能が搭載されている
  • メニュー - 表示 - ストラテジーテスター で表示される

Mt4 storategy tester.png