單量計算設計有問題 單量要控制在交易品種最大跟最小之間 另外調整單量也要根據規格書的步進計算
這樣才能確保所交易的品種單量符合規格書的要求
double opLotSell=myLot;
if(true==booMMLot)
opLotSell=NormalizeDouble(MMper*AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,2);
if(opLotSell<SymbolInfoDouble(wMyHB,SYMBOL_VOLUME_MIN))
{
Print("sell min lot");
opLotSell=SymbolInfoDouble(wMyHB,SYMBOL_VOLUME_MIN);
}
if(opLotSell>SymbolInfoDouble(wMyHB,SYMBOL_VOLUME_MAX))
{
Print("Sell max lot");
opLotSell=SymbolInfoDouble(wMyHB,SYMBOL_VOLUME_MAX);
}
这个是单量代码,有问题吗?检验就是某天出错,其它大部分时间和品种都没有问题
我回测时也没有问题!
有技术人员能回答吗?
Xiao Hong Bian #:
有技术人员能回答吗?
交易机器人在市场发布前必须经过的检验 - MQL5文章
有技术人员能回答吗?

交易机器人在市场发布前必须经过的检验
- www.mql5.com
任何产品在市场发布之前,它必须通过强制的预先检验,以确保符合统一的质量标准。本文介绍了开发者们在他们的技术指标和交易机器人中最常犯下的错误,并且也展示了在把产品发送到市场之前如何进行自我测试。
二楼不是已经告诉你了么?
除了考虑最大手数,最小手数外,还必须考虑步进手数(step volume),即:
你计算出来的手数必须是step volume的整数倍。
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double CheckVolumeValue(string symbol,double volume,bool take_min_vol=true) { //--- 交易操作允许的最小交易量 double min_volume=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN); if(volume<min_volume) { if(take_min_vol)return(min_volume); return(0.0); } //--- 交易操作允许的最大交易量 double max_volume=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); if(volume>max_volume) { return(max_volume); } //--- 取得交易量变化的最小步长 double volume_step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); int ratio=(int)MathRound(volume/volume_step); if(MathAbs(ratio*volume_step-volume)>0.0000001) { volume=ratio*volume_step; return(volume); } return(volume); }
不要想当然的以为step volume就是0.01,可能是0.1
你用我给的代码试试,看看问题能不能解决。
文字意思開的單超過可開單的上限
單張單有最大單量 重複持單也不能超過的
用你上面的例子 用小單量試試看
我的EA准备在市场发布,已经进行到提交程序进行认证,但平台验证时总是报奇怪错误,我自己测试时从未发现,
是什么原因呢?