【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);
}

上のサンプルコードは、下記の記事で紹介した標準ライブラリのラッパークラスを参照していることに留意。

コメントを入力:
 

  • metatrader/mql/calc_lots_compound.txt
  • 最終更新: 2023/08/25 12:50
  • by 管理人