请观看如何免费下载自动交易
请在Facebook上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
33
等级:
(2)
已发布:
AutoLot.mqh (0.97 KB) 预览
AutoLot.mq5 (1.78 KB) 预览
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

计算手数(CalculateLot) 功能 旨在 根据风险管理原则自动计算交易手数。它允许交易者指定在交易中愿意承担的风险占账户余额的百分比,并据此确定最佳持仓量。

语法

double CalculateLot(double riskPercent, double stopLossPips);

参数

Параметр        Тип     Описание
riskPercent     double  Процент от текущего баланса счета, которым трейдер готов рискнуть. Указывается в абсолютном значении (например, 2.0 = 2% от баланса).
stopLossPips    double  Расстояние до уровня Stop Loss в пунктах. Для 5-значных котировок указывается количество стандартных пунктов (например, 1000 = 1000 пунктов = 100 пипсов).

返回值

函数返回归一化手数( 双倍),其中

  • 符合交易量步长 ( VOLUME_STEP) 的四舍五入规则

  • 不超过允许的最大交易量 ( VOLUME_MAX);

  • 不小于允许的最小交易量 ( VOLUME_MIN)。

如果计算值超出允许范围,函数将返回一个限制值(minLot 或 maxLot)。

操作算法

  1. 获取账户和符号参数

    • 当前余额 ( ACCOUNT_BALANCE)

    • 点值 ( SYMBOL_TRADE_TICK_VALUE)

    • 手数变化的最小值、最大值和步长

  2. 以存款货币计算风险金额

    riskAmount = баланс × (риск% / 100)

  3. 计算手数

    lotSize = riskAmount / (stopLossPips × tickValue)

  4. 归一化和验证

    • 四舍五入到最接近的步长 ( VOLUME_STEP)

    • 最小值和最大值验证

使用示例

示例 1.智能交易系统的基本使用

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
   //--- 设置风险为余额的 1.5%,止损 500 点
   double lot = CalculateLot(1.5, 500);
   
   //--- 检查批次计算是否正确
   if(lot > 0.0)
     {
      //--- 获取当前价格
      double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
      
      //--- 计算水平
      double sl = ask - 500 * _Point;
      double tp = ask + 1500 * _Point;
      
      //--- 开仓
      trade.Buy(lot, _Symbol, ask, sl, tp);
     }
}


例 2.在带有错误检查功能的脚本中使用

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnStart()
{
   double riskPercent  = 2.0;   // 风险为余额的 2
   double stopLossPips = 1000;  // 止损 1000 点
   
   double lot = CalculateLot(riskPercent, stopLossPips);
   
   //--- 输出计算信息
   Print("=== 批量计算结果 ===");
   Print("账户余额:", AccountInfoDouble(ACCOUNT_BALANCE));
   Print("风险,%:", riskPercent);
   Print("风险金额:", AccountInfoDouble(ACCOUNT_BALANCE) * riskPercent / 100.0);
   Print("止损,点数:", stopLossPips);
   Print("滴答成本:", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE));
   Print("计算批量:", lot);
   Print("================================");
   
   if(lot <= 0.0)
     {
      Alert("错误:手数计算失败。检查风险和止损参数。);
     }
}

由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/71010

ZigZag Support and Resistance Detection ZigZag Support and Resistance Detection

ZigZag SNR 检测使用 ZigZag 支点识别支撑位和阻力位。

To Close All Open Trades of Different Symbols To Close All Open Trades of Different Symbols

技术细节 使用带有 TRADE_ACTION_DEAL 的 MQL5 订单发送功能,以当前买入价/卖出价即时关闭市场。包括滑点容差(10 点)、适当的成交量匹配和神奇数字保存。通过仓位向后循环,防止执行过程中的指数移动。

加速震荡(AC) 加速震荡(AC)

加速/减速技术指标(AC)用于衡量当前驱动力的加速和减速。

离散 离散

离散技术指标由价格和交易量的变化决定。