请观看如何免费下载自动交易
请在Facebook上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
程序库

计算地块百分比 - MetaTrader 5程序库

Maksim Novikov
Maksim Novikov
我叫马克西姆,我是MQL4和MQL5编程语言的交易员和开发者。
我专注于创建简化交易的程序。
| Chinese English Русский Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
显示:
214
等级:
(4)
已发布:
已更新:
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 OrderSend,以当前买入价/卖出价即时关闭市场。包括滑点容差(10 点)、适当的成交量匹配和神奇数字保存。通过仓位向后循环,防止执行过程中的指数移动。

ICT True Open and Power of 3 (PO3) Lines ICT True Open and Power of 3 (PO3) Lines

ICT 和 SMC 交易员必备的轻量级实用工具。它能自动绘制真实的每日、每周和每月开盘价,为 3 力量(积累、操纵、分配)概念奠定基础。

SMC Liquidity Sweep and Rejection Detector SMC Liquidity Sweep and Rejection Detector

高精度指标,旨在检测机构流动性扫荡(止损猎杀)。它能识别超出近期波动水平的价格阻力,在没有滞后指标的情况下标记出潜在的高概率反转区域。