
MT4 MT4 実行時エラー
4013
- 定数名
ERR_ZERO_DIVIDE- メッセージ
zero divide- 意味
- 0で割り算した
MT4エラー4013とは
割り算の分母が 0 になったときのエラーです。#property strict のプログラムでは「zero divide」でEA・インジケーターが停止し、チャートから外れます。
ログの表示例
zero divide in 'MyEA.mq4' (120,25)
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT4エラー4013の主な原因
- 口座情報やシンボル情報(MODE_TICKVALUE、MODE_LOTSTEP など)が取得できず 0 のまま割り算した
- 高値 − 安値 が 0 の足(値動きのない足)で割り算した
- バックテスト開始直後など、まだ計算用のデータが揃っていない
- OrdersTotal() などの件数が 0 のときに平均を計算した
MT4エラー4013の対処法
- 割り算の前に分母が 0 でないか確認する
- MarketInfo() の値が 0 のときは、その計算をスキップして次のティックで再計算する
- ログに出る (行, 列) の位置で、どの変数が 0 になっているか Print() で確かめる
コード例(MQL4)
// 割り算の前に分母を確認する(zero divide / 4013 対策)(MQL4)
double LotsByRisk(double riskMoney, double slPips)
{
double tickValue = MarketInfo(Symbol(), MODE_TICKVALUE);
double pip = (Digits == 3 || Digits == 5) ? Point * 10 : Point;
double tickSize = MarketInfo(Symbol(), MODE_TICKSIZE);
if(tickValue <= 0 || tickSize <= 0 || slPips <= 0)
return 0; // 値が取れていないので計算しない
double moneyPerLot = slPips * pip / tickSize * tickValue;
if(moneyPerLot <= 0) return 0;
return riskMoney / moneyPerLot;
}MetaEditor(MT4)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












