{{tag>mql4 mql5 csymbolinfo caccountinfo}} ====== 【MQL4 / MQL5】エントリーする際のロット数を複利対応させる ====== 1 トレードの最大損失が、「有効証拠金額 × リスク率」になるようなロット数を計算で求めればよい。\\ 例えば、有効証拠金額 100 万円、リスク率 1% であれば、損切りにかかった時の金額が -1 万円 となるようなロット数を求める。\\ 1.0 ロットのポジションで損切り幅が ''range'' の時の想定損失額を ''ClAccountInfoHelper::OrderProfitCheck()'' で取得している。\\ 「有効証拠金額 × リスク率」をこの金額で割ることで必要なロット数を計算している。 === サンプルコード === double GetLotSize(double range, double risk) { double price = l_SymbolInfo.Bid(); double sl = l_SymbolInfo.Bid() + range; double loss = - l_AccountInfo.OrderProfitCheck(l_SymbolInfo.Name(), ORDER_TYPE_SELL, 1.0, price, sl); double stepvol = l_SymbolInfo.LotsStep(); double lot = MathFloor((l_AccountInfo.Equity() * (risk / 100.0)) / loss / stepvol) * stepvol; double minvol = l_SymbolInfo.LotsMin(); if(lot < minvol) { lot = minvol; } double maxvol = l_SymbolInfo.LotsMax(); if(lot > maxvol) { lot = maxvol; } return(lot); } 上のサンプルコードは、下記の記事で紹介した標準ライブラリのラッパークラスを参照していることに留意。 * 変数 l_SymbolInfo:[[:metatrader:mql:csymbolinfo_wrapper|]] * 変数 l_AccountInfo:[[:metatrader:mql:caccountinfo_wrapper|]]