本人还是MQL方面的新人,现将自己的资金管理部分代码帖出来,望前辈指点。 double LotsOptimized() { double b,lot; int orders=HistoryTotal(); int losses=0,wins=0; int c,e,f,d; b=iATR(NULL,0,60,0); c=AccountLeverage(); d=AccountFreeMargin();//初始本金 不清楚如何表示初始本金,请前辈指点! if(orders>=1) {e=AccountFreeMargin(); } 交易后的保证金 //---- select lot size Print(MarketInfo(Symbol(), MODE_LOTSIZE)); Print(MarketInfo(Symbol(), MODE_LOTSTEP)); Print(MarketInfo(Symbol(), MODE_MAXLOT)); Print("this accountleverage is",c); if(b!=0&&d!=0) lot=NormalizeDouble((e*MaximumRisk/2000)*(1+3*(e/d-1)),2); if(lot<0.01) lot=0.01; return(lot); } /*我是想通过与初始本金大小比较下,来确实后面的仓位大小,如果盈利后,就放大仓位,亏损后就会加倍缩小。总体风险水平保持在总仓位0.02(maximumRisk)的上下浮动。但在这个情况下,e/d 似乎一直为1,主要是初始本金不知如何表述。分母可以为 10*b*100.00*c 这是另外一种思路,但在测试时总是显示分母太小 所得到的手数超出MM平台的上限。不知何故?*/ 这也是坛里前辈以前讨论过的问题:http://www.hylt.net/vb/showthread.php?t=18824