资料库: GetLotForOpeningPos

 

GetLotForOpeningPos:

本函数计算手数大小,依据入金货币的资金余额。

作者: Nikolay Kositsin

 

错误!

//---- 将批量大小标准化为最接近的标准值 
lot = LOTSTEP*MathFloor(lot/LOTSTEP);

地段最小步长的计算是错误的!。

我们应该做的是

1.用最小手数减去(原始)手数,因为我们必须从经纪商规定的最小手数开始计算手数。如果结果小于 0,则没有手数。

lot -= MinLot;
if (lot < 0) lot = 0; //--- not even qualify for minimum lot

2.计算达到手数需要多少步。不要使用MathFloor() 函数,因为 MathFloor() 的返回类型是双,当最终手数不符合经纪商要求时有可能出错。使用一些整数类型的变量。

int the_step;

the_step = lot/LOTSTEP;

3.最后计算,将它们放在一起

lot = MinLot + the_step*STEPLOT;

4.完整计算

//---- 将批量大小标准化为最接近的标准值
lot -= MinLot;
if (lot < 0) lot = 0;

int the_step;
the_step = lot/LOTSTEP;

lot = MinLot + the_step*STEPLOT;

//---- 检查批次的最小允许值
if (lot < MinLot) lot=0;

//---- 检查批次的最大允许值 
if(lot>MaxLot) lot=MaxLot;

5.可怕 - 这个手数计算不包括资金管理,而任何有常识的交易者都应该而且必须有资金管理。资金管理计算 开仓风险,包括但不限于亏损到止损的成本。

避免亏损是游戏的一部分。

 

你好,尼古拉

我是 MT5 的新手,不知道您能否推荐一个指标,能像您建议的那样做得这么好?

感谢您提供的信息。

谢谢