MQL4プログラムの書き方は、MetaTrader 4(MT4)プラットフォームで自動売買プログラム(EA)、カスタムインディケータ、スクリプトなどを開発するために使用されます。ここでは、基本的なMQL4プログラムの構造と書き方を説明します。
1. MQL4プログラムの基本構造
MQL4プログラムは、以下のような基本構造を持っています。
(1) ヘッダー部
- 必要な外部設定や変数の宣言を行います。
mql4著作権を所有する//+------------------------------------------------------------------+
//| サンプルEA |
//+------------------------------------------------------------------+
#property strict // 厳密なエラー検出モード
input double LotSize = 0.1; // ロットサイズ(外部変数)
(2) 初期化関数(OnInit())
- プログラムの初期化時に実行される部分です。
mql4著作権を所有するint OnInit() {
Print("EA initialized."); // 初期化メッセージを表示
return(INIT_SUCCEEDED); // 初期化成功を示す
}
(3) ティックイベント関数(OnTick())
- 市場データ(ティック)が更新されるたびに実行される部分です。
mql4著作権を所有するvoid OnTick() {
double ma = iMA(Symbol(), 0, 14, 0, MODE_SMA, PRICE_CLOSE, 0); // 移動平均を取得
double price = iClose(Symbol(), 0, 1); // 最新の終値を取得
if (price > ma) {
Print("価格が移動平均を上回っています。");
}
}
(4) 終了関数(OnDeinit())
- プログラムが終了する際にお呼びします。
mql4著作権を所有するvoid OnDeinit(const int reason) {
Print("EA terminated."); // 終了メッセージを表示
}
2. 簡単な自動売買プログラムの例
以下は、シンプルな「移動平均ブレイクアウト戦略」を使用した自動売買プログラムの例です。
mql4著作権を所有する//+------------------------------------------------------------------+
//| 移動平均ブレイクアウトEA |
//+------------------------------------------------------------------+
#property strict
// 外部入力パラメータ
input double LotSize = 0.1; // ロットサイズ
input int MA_Period = 14; // 移動平均の期間
// 初期化関数
int OnInit() {
Print("移動平均ブレイクアウトEAが初期化されました。");
return(INIT_SUCCEEDED);
}
// ティックイベント関数
void OnTick() {
double ma = iMA(Symbol(), 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 0); // 移動平均を取得
double price = iClose(Symbol(), 0, 1); // 最新の終値を取得
// 買い条件: 終値が移動平均を上回った場合
if (price > ma && OrdersTotal() == 0) {
OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, 0, 0, "Buy Order", 0, 0, Green);
Print("買いポジションを取りました。");
}
// 売り条件: 終値が移動平均を下回った場合
if (price < ma && OrdersTotal() == 0) {
OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, 0, 0, "Sell Order", 0, 0, Red);
Print("売りポジションを取りました。");
}
}
// 終了関数
void OnDeinit(const int reason) {
Print("EAが終了しました。");
}
3. インデックスのポイント
- 変数と外部入力パラメータの管理
input
修飾子を使って、外部から調整可能なパラメータを設定します。
- リスク管理
- 自動売買では、ロットサイズや損益管理をしっかり設定しましょう。
- 例: 損切り利益や確定のための価格を
OrderSend()
指定します。
- エラー処理
- MQL4は
GetLastError()
関数でエラーコードを取得できます。エラー処理を正しく行うことで、プログラムの理解性を高めます。
- MQL4は
- バックテスト
- 作成したEAはMT4の「戦略テスター」を使ってバックテストを行い、戦略の有効性を確認します。
4. MQL4プログラムをMT4に追加する方法
- コード保存
- MetaEditorを起動し、作成したプログラムをファイルとして
.mq4
保存します。 - 保存場所は
MQL4/Experts
フォルダ。
- MetaEditorを起動し、作成したプログラムをファイルとして
- コンパイル
- MetaEditorでコードをコンパイルし、
.ex4
ファイルを生成します。
- MetaEditorでコードをコンパイルし、
- EA 実行
- MT4プラットフォームを開き、ナビゲーターウィンドウからEAをチャートにスキップ&ドロップします。
MQL4でのプログラムの作成は、簡単なものから高度な自動売買戦略まで可能です。
コメント