移動平均クロスオーバー戦略は、短期間の移動平均が長期間の移動平均を上回った(または下回った)ときに取引シグナルが発生するシンプルなトレーディング戦略です。このチュートリアルでは、この戦略をMQL4で実装します。
ステップ1:必要な変数の宣言
まず、使用する通貨ペア、ロットサイズ、移動平均の期間を設定する基本的な変数を宣言します。
string symbol = "EURUSD";
double lotSize = 0.1;
int shortTermPeriod = 10; // 短期間の移動平均の期間
int longTermPeriod = 50; // 長期間の移動平均の期間
ステップ2:移動平均値の取得
次に、組み込みのiMA関数を使用して、短期間と長期間の移動平均値を取得します。
void OnTick()
{
double shortTermMA = iMA(symbol, 0, shortTermPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
double longTermMA = iMA(symbol, 0, longTermPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
}
ステップ3:クロスオーバーの検出と取引ロジックの実装
移動平均のクロスオーバーを検出し、BUYまたはSELLオーダーを発行します。前のTickの移動平均値も取得し、短期間の移動平均が長期間の移動平均を上回った(または下回った)ときにシグナルが発生したかを確認します
※あくまで一例であり、使用した際の損害などについては責任を負いかねます。
void OnTick()
{
double shortTermMA = iMA(symbol, 0, shortTermPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
double longTermMA = iMA(symbol, 0, longTermPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
double previousShortTermMA = iMA(symbol, 0, shortTermPeriod, 0, MODE_SMA, PRICE_CLOSE, 2);
double previousLongTermMA = iMA(symbol, 0, longTermPeriod, 0, MODE_SMA, PRICE_CLOSE, 2);
if (shortTermMA > longTermMA && previousShortTermMA <= previousLongTermMA) {
OrderSend(symbol, OP_BUY, lotSize, Ask, 3, 0, 0);
}
if (shortTermMA < longTermMA && previousShortTermMA >= previousLongTermMA) {
OrderSend(symbol, OP_SELL, lotSize, Bid, 3, 0, 0);
}
}
この基本的な実装をベースに、さまざまな要素を追加して戦略を改善することが可能です。例えば、ストップロスやテイクプロフィットレベルを設定する、複数のオーダーを管理する、トレーディング時間を制限するなどが可能です。
このチュートリアルが、特定のトレーディング課題を解決するためのMQL4の実践的な応用例として役立つことを願っています。