You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新MT4经纪商NSDQ/SPY品种手数计算放大10倍问题求助

问题描述

更换新MT4经纪商后,自动计算手数的代码在交易NSDQ和SPY品种时,开仓手数为预期的10倍(如计划风控500美元,实际风控5000美元),其余品种计算结果均正常。已确认Point value和Tick value与之前一致,相关代码片段如下:

riskticks=MathAbs(myEntry-mySL)/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE);
tickvalue=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE);
riskcash=currBet;
lotsize=riskcash/(riskticks*tickvalue);
lotsize_1=NormalizeDouble(lotsize*(input_takePartialsPercent*.01),2);

mySL = NormalizeDouble(mySL,digits);
myEntry = NormalizeDouble(myEntry,digits);
myTP = NormalizeDouble(myTP,digits);

排查分析

  • 检查品种报价精度(digits)差异:NSDQ和SPY在新经纪商下的digits参数可能与旧经纪商不同。比如旧经纪商是2位小数,新经纪商是1位,会导致myEntry和mySL的差值计算差10倍。可以在代码中添加打印语句:Print(Symbol(), " digits: ", digits);,对比新旧经纪商的数值。若确实存在差异,需调整点位差的计算逻辑,或者在计算riskticks前先完成myEntry和mySL的精度归一化。
  • 验证每手合约数量(SYMBOL_VOLUME_LOTSIZE):部分经纪商对美股类品种的手数定义不同,比如旧经纪商NSDQ每手对应100股,新经纪商每手对应1000股,这会导致相同手数下实际持仓量差10倍,风控金额随之放大。可打印SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LOTSIZE)查看该参数在新旧经纪商的差异。
  • 调整归一化代码的执行顺序:当前代码中,计算riskticks时使用的是未归一化的myEntry和mySL,若新经纪商返回的报价精度更高,可能导致计算出的riskticks比实际小10倍,进而让lotsize放大10倍。建议将归一化代码移到riskticks计算之前:
mySL = NormalizeDouble(mySL,digits);
myEntry = NormalizeDouble(myEntry,digits);
myTP = NormalizeDouble(myTP,digits);

riskticks=MathAbs(myEntry-mySL)/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE);
tickvalue=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE);
riskcash=currBet;
lotsize=riskcash/(riskticks*tickvalue);
lotsize_1=NormalizeDouble(lotsize*(input_takePartialsPercent*.01),2);

内容的提问来源于stack exchange,提问作者kashix9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:03:15