SendFTP()関数|FTPを使用してファイルを送信

2024年10月1日

執筆者

佐川直弘(株式会社トリロジー取締役)

MetaTrader4(MT4)を利用して自動売買EAを開発する際、取引結果やログファイルなどをFTPを使ってサーバに送信することがあります。この記事では、FTPを使用してファイルをサーバに送信する方法と、その使用例について解説します。初心者でも理解しやすいように、各ステップを詳しく説明します。

SendFTP()関数|FTPを使用してファイルを送信する方法

MT4でFTPを使用してファイルをサーバに送信するには、SendFTP()関数を使用します。なお、FTPの利用には事前にMetaTrader4でFTP先のサーバを登録しておく必要があります。

SendFTP()関数の仕様
bool SendFTP(string filename, string ftp_path=NULL)
– filename:送信ファイル名
– ftp_path:FTPサーバ上に格納するパス(未指定の場合、Publisherタブで設定した「FTP path:」の値が利用される)
この関数は、送信に成功した場合はtrueを、失敗した場合はfalseを返します。詳細なエラー情報を得るには、GetLastError()関数を使用します。
注意点
送信したいファイルは、次のフォルダに格納しておく必要があります。
– [MetaTrader4]\experts\files
※[MetaTrader4]は、MetaTraderのインストールフォルダ
テストモードでは実行されません。
カスタムインディケータから呼び出すことはできません。

以下に、具体的なサンプルコードを示します。

サンプルコード
int start() {
    // ファイルをFTPサーバに送信する
    if(!SendFTP(“report.txt")) {
        // 送信に失敗した場合、エラーコードを取得して表示する
        int ftp_error_code = GetLastError();
        Print(“FTP送信エラー: “, ftp_error_code);
    } else {
        Print(“FTP送信成功");
    }
}

実際の利用例

取引が終了した後、トレードレポートをFTPサーバに送信することで、リモートで結果を確認することができます。

トレードレポートの送信
void OnTrade() {
    // トレードが終了したときに、トレードレポートを生成して送信する
    GenerateTradeReport();
    if(!SendFTP(“trade_report.txt")) {
        int ftp_error_code = GetLastError();
        Print(“トレードレポートのFTP送信エラー: “, ftp_error_code);
    } else {
        Print(“トレードレポートのFTP送信成功");
    }
}
void GenerateTradeReport() {
    // ここでトレードレポートを生成する処理を実装
    // 例えば、ファイルに書き込むなど
}

まとめ

MT4でのFTPを使用してファイルを送信する方法について解説しました。FTPを活用することで、取引結果やログファイルをリモートで管理することが可能です。サンプルコードを参考に、自動売買EAの機能をさらに拡張してください。

MQL4

Posted by 佐川直弘