「MT4」の版間の差分
ナビゲーションに移動
検索に移動
(→表示方法) |
(→表示方法) |
||
| 181行目: | 181行目: | ||
---- | ---- | ||
*配列を指標バッファにSetIndexBuffer()関数を用いて関連づける | *配列を指標バッファにSetIndexBuffer()関数を用いて関連づける | ||
| + | |||
| + | |||
| + | <pre> | ||
| + | #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); | ||
| + | } | ||
| + | //+------------------------------------------------------------------+ | ||
| + | </pre> | ||
2021年5月7日 (金) 12:21時点における版
目次
MT4
プログラムの種類
- 種類によって保存される場所が異なる
- 保存フォルダ一覧を開くには、ファイル-データフォルダを開く
- プログラムファイルなどは、MQL4フォルダ以下に格納される
- mac の場合、/Users/{ユーザー名}/Library/Application Support/MetaTrader 4/Bottles/metatrader4/drive_c/Program Files/MetaTrader 4/MQL4 が物理的な場所
スクリプト(Script)
- Scriptsフォルダに保存される
- 複数の処理をまとめて実行
- チャートに挿入すると一度だけ実行
- 口座情報や通貨ペア情報の取得
- 過去のチャートデータの一斉処理
カスタム指標(Custom Indicator)
- Indecatorsフォルダに保存される
- MT4にすでに組み込まれているテクニカル指標と同様に、チャートに挿入することで独自に作成したテクニカル指標をチャートにプロットする
エキスパートアドバイザー(Expert Advisor,EA)
- Expertsフォルダに保存される
- チャートに挿入すると、価格の変化に応じて自動売買のできるプログラム
- 過去のデータに対して仮想売買を実行し結果を表示するバックテストにも利用可能
コンパイル
- ソースコードは拡張子、mq4
- コンパイルすると、ex4
スクリプト実行手順
- ファイル-新規作成 からウィザードでスクリプトを作成
- コーディングして、コンパイル
- ナビゲーターウィンドウに出現するので、チャートにドロップ
- ターミナルウィンドウ「エキスパート」に出力された
- スクリプトをはじめ、MT4で作成するあらゆるプログラムは、チャートに挿入して実行される
定義済変数
| 変数 | 意味 | 備考 |
|---|---|---|
| Bid | 売値 | |
| Ask | 買値 | |
| Open | 始値 | 配列 |
| High | 高値 | 配列 |
| Low | 安値 | 配列 |
| Close | 終値 | 配列 |
| _Symbol | 通貨ペア名 | |
| _Point | 通貨ペアごとの異なる最小値幅 | |
| _Digit | 小数点以下桁数 | |
| _Period | 現在のチャートのタイムフレーム(分)換算 | |
組込関数
定義済変数
取引関数
- 自動売買を許可する必要がある
- ツール-オプション -エキスパートアドバイザ タブ - 自動売買を許可する にチェック
| 定義済関数 | 意味 | 備考 |
|---|---|---|
| OrderSend | 取引操作の実行に使用され、リクエストを取引サーバに送信 | |
口座情報
| 定義済関数 | 意味 | 備考 |
|---|---|---|
| AccountInfoString | 口座のプロパティの値を返します | プロパティ |
| AccountInfoInteger | 口座のプロパティの値を返します | プロパティ |
| AccountInfoDouble | 口座のプロパティの値を返します | プロパティ |
カスタム指標プログラミング
- カスタム指標は、チャート上にテクニカル指標データを順次プロットしていく
- プログラムは、チャート上の価格が更新されるたびに繰り返し実行される
プロプロセッサ
| プリプロセッサ定義 | 意味 | 備考 |
|---|---|---|
| #property indicator_chart_window | 指標をチャートと同じウインドウに表示 | |
| #property indicator_separate_window | 指標をチャートと別のウインドウに表示 | |
| #property indicator_buffers N | プロットさせる指標の数(N) |
表示方法
- 配列を指標バッファに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);
}
//+------------------------------------------------------------------+
© 2006 矢木浩人