関数とプロシージャ・スクリプトとインジケータ

MQL4では、自分の取引や分析に特化したツールを作るために、スクリプトやカスタムインジケータを作成することができます。これらは特定の関数を基に動作し、取引の自動化やデータの視覚化に役立ちます。

1. スクリプト: スクリプトは特定のタスクを一度だけ実行するプログラムです。取引の開始や終了、特定の条件下での注文、データの分析と出力など、手動で行うのが難しいまたは時間がかかるタスクを自動化するのに役立ちます。

スクリプトは、特定の操作を実行するための関数(通常はOnStart関数)を含むMQL4のプログラムとして実装されます。例えば、全ての開いている取引をクローズするスクリプトは、以下のようになるでしょう。

void OnStart() {
    for(int i = OrdersTotal() - 1; i >= 0; i--) {
        if(OrderSelect(i, SELECT_BY_POS)) {
            OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage);
        }
    }
}

2. カスタムインジケータ: カスタムインジケータは、チャート上に特定の情報を表示するためのツールです。市場の動向を視覚的に理解するのに役立ちます。

カスタムインジケータは、チャート上にデータを描画するための関数(通常はOnCalculate関数)を含むMQL4のプログラムとして実装されます。例えば、シンプルな移動平均線を描画するカスタムインジケータは、以下のようになるでしょう。

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[]) {
    // Calculate Moving Average
    for(int i = 0; i < rates_total; i++) {
        ExtMapBuffer1[i] = iMA(NULL, 0, 14, 0, MODE_SMA, PRICE_CLOSE, i);
    }
    return(rates_total);
}

これらのスクリプトとインジケータは、特定の取引戦略をサポートするために役立つツールを作成するための基盤となります。スクリプトとインジケータを作成する能力は、MQL4プログラミングの重要な側面であり、取引や分析のプロセスを大幅に効率化することができます。