首页 / 交易学院 / EA 资金管理:保证金与货币对分类算法
EA 资金管理:保证金与货币对分类算法
💰

EA 资金管理:保证金与货币对分类算法

从账户信息到三类货币对保证金算法,把风险控制写进 EA

EA 开发实战 难度 · 进阶 2026-07-15 10 分钟阅读
#EA#资金管理#保证金#货币对#风险控制

EA 开仓前必须知道账户能开多少、占用多少保证金、何时会暴仓。本文给出一套用账户/品种信息函数实现资金管理的完整方案,核心是分类货币对并算对保证金。

一、资金管理函数要解决什么

开仓前先算清占用与可用,避免手数过大瞬间暴仓。文章把这些逻辑封装成可复用的 EA 函数框架。

二、账户与品种信息从哪来

三、货币对的三种分类

四、保证金计算逻辑

反向盘 margin = lots × 合约 ÷ 杠杆 × 汇率;直接盘 margin = lots × 合约 ÷ 杠杆;交叉盘用 GetSymbolByCurrencies 找计算货币对再换算,最后 ÷ 杠杆。买入用 Ask、卖出用 Bid。

⚠ 交叉盘最易算错
交叉盘务必遍历市场报价窗口用 GetSymbolByCurrencies 定位计算货币对,并区分买入/卖出取价,否则保证金偏低会高估风险。

五、辅助函数与风险控制

✦ 封装成一句话
把保证金计算封装成 GetMarginForOpening(lot, symbol, direction),任何开仓前先调用,能挡掉大部分手数过大导致瞬间暴仓的坑。

常见问题

所有 AccountInfoDouble 返回的货币值都以入金货币计;跨货币对换算时,用计算货币对把保证金货币折算成入金货币。
看保证金货币和报价货币里有没有账户货币:有报价货币的是反向盘,有保证金货币的是直接盘,都没有的是交叉盘。
开仓瞬间买入按卖价(Ask)成交、卖出按买价(Bid)成交,用错了价格保证金就偏低,风险被低估。
保证金 = 名义价值 ÷ 杠杆;杠杆越高占用越少,但爆仓也越快,资金管理函数要配合止损距离一起算手数。
account_info 打印账户信息、symbol_info 打印品种属性、symbolinfo_advanced 实时显示 1 手所需预付款,可直接复用当脚手架。