MT5 MT5 実行時エラー
4756
- 定数名
ERR_TRADE_SEND_FAILED- 意味
- 注文リクエストの送信に失敗した
MT5エラー4756とは
OrderSend() が失敗したことを示すエラーです。これ自体は「失敗した」という意味しか持たず、本当の原因は MqlTradeResult.retcode(CTrade なら ResultRetcode())に入っています。まず retcode を確認してください。
ログの表示例
OrderSend error 4756 retcode=10030
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT5エラー4756の主な原因
- 注文リクエストがサーバーに拒否された(原因は retcode に入る)
- よくある retcode は 10030(執行タイプ)、10016(ストップ)、10014(ロット)、10019(証拠金)、10027(自動売買オフ)
MT5エラー4756の対処法
- OrderSend() の後で result.retcode と result.comment を Print() する
- CTrade なら trade.ResultRetcode() と trade.ResultRetcodeDescription() を出力する
- retcode の番号をこの辞典で調べて対処する
コード例(MQL5)
// OrderSend が失敗したら retcode を必ず記録する(4756 対策)(MQL5)
#include <Trade\Trade.mqh>
CTrade trade;
bool BuyAndLog(double lots)
{
if(trade.Buy(lots, _Symbol))
{
uint rc = trade.ResultRetcode();
if(rc == TRADE_RETCODE_DONE || rc == TRADE_RETCODE_PLACED) return true;
}
// 4756 は「送信に失敗した」という意味だけ。本当の原因は retcode にある
PrintFormat("注文失敗 error=%d retcode=%u (%s) comment=%s",
GetLastError(), trade.ResultRetcode(),
trade.ResultRetcodeDescription(), trade.ResultComment());
return false;
}
// CTrade を使わない場合
bool SendRaw(MqlTradeRequest &req)
{
MqlTradeResult res;
ZeroMemory(res);
if(!OrderSend(req, res))
{
PrintFormat("OrderSend error %d, retcode=%u, comment=%s", GetLastError(), res.retcode, res.comment);
return false;
}
return true;
}MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。
このエラーが出やすい関数
関連するエラー
MT5 実行時エラーの解説一覧
- 4003
- 4005
- 4006
- 4007
- 4014
- 4022
- 4103
- 4105
- 4106
- 4108
- 4110
- 4112
- 4113
- 4201
- 4202
- 4203
- 4204
- 4205
- 4301
- 4302
- 4303
- 4304
- 4305
- 4401
- 4402
- 4403
- 4404
- 4407
- 4501
- 4502
- 4515
- 4516
- 4517
- 4518
- 4601
- 4602
- 4603
- 4701
- 4751
- 4752
- 4753
- 4754
- 4755
- 4756
- 4758
- 4801
- 4802
- 4804
- 4805
- 4806
- 4807
- 4808
- 4809
- 4810
- 4811
- 4812
- 5001
- 5002
- 5004
- 5007
- 5009
- 5010
- 5019
- 5020
- 5027
- 5035
- 5037
- 5038
- 5039
- 5050
- 5052
- 5053
- 5056
- 5200
- 5201
- 5202
- 5203












