熙熙攘攘!熙熙攘攘!。

 

我在这里尝试了一个我想到的脚本,但在策略测试 中却出现了错误的手数。我不知道是历史数据不支持某些功能还是什么。该脚本仅适用于欧元兑美元。我做错了什么,还是策略测试器的问题?

extern int LotPercentage=10; // use 10% of balance as lot size


double LotInBalance=(LotPercentage/100)*AccountBalance(); // find the amount that is 10% of balance lets assume its $1000
double LotUnits=LotBalance*AccountLeverage(); // multiply this 10% balance($100) by leverage to get lot units
double lots=NormalizeDouble((LotUnits/100000),2); // expected to return 0.1
/* divide this lot units by 100,000(standard lot size units) and normalize to 2 decimal places to get something like 0.1 if account balance is say $1000 for use in ordersend()*/

 
jameslarry:

我在这里尝试了一个我想到的脚本,但在策略测试中却出现了错误的手数大小。我不知道是历史数据不支持某些功能还是什么。该脚本仅适用于欧元兑美元。我做错了什么,还是策略测试器的问题?

extern int LotPercentage=10; // use 10% of balance as lot size


double LotInBalance=(LotPercentage/100)*AccountBalance(); // find the amount that is 10% of balance lets assume its $1000
double LotUnits=LotBalance*AccountLeverage(); // multiply this 10% balance($100) by leverage to get lot units
double lots=NormalizeDouble((LotUnits/100000),2); // expected to return 0.1
/* divide this lot units by 100,000(standard lot size units) and normalize to 2 decimal places to get something like 0.1 if account balance is say $1000*/

你不需要帮助,你已经有了一个(https://www.mql5.com/en/forum/140034)!。但你还是搞砸了!

 
你好,我得到的代码有一个"零除法"的错误,另一个是大的和未经测试的,只是想要一些简单的东西,像我的脚本。你能检查我的脚本并告诉我哪里出了问题吗?如果余额是1000美元,杠杆是1:100,我希望它能以0.1手交易,就这么简单,但它证明了一个令人头痛的问题。一旦我计算出(10/100)*AccountBalance(),得到100美元,我怎样才能把它变成0.1,以便于OrderSend。另外,我不想要一个为我管理止损的脚本,只想要手数部分。
 
jameslarry:
我得到的代码有一个 "零除法 "的错误,另一个是大的和未经测试 的。
那就测试一下吧 ......你想让别人帮你写代码 也测试一下吗?
 
是的,我只是在问我的代码中做错了什么。我也在测试onewitch给我的代码,但它似乎对SL做了一些我不希望脚本做的事情。
 
jameslarry:
是的,我只是问我在代码中做错了什么。我也在测试这段代码,但它似乎对SL做了一些我不希望脚本做的事情
在亏损的交易中,你想在什么时候经历你选择的最大损失?
 
 
嗨,我也试过这样做,但它给出了与上述相同的错误,也许AccountBalance()和AccountFreeMargin()在策略测试器上 不起作用,这里是代码,因为我在测试中以3000美元的余额开始,但它一直给出4051无效手数的错误。如果我可以问一下,如果我有3000美元,那么AccountBalance()的值是3000还是别的什么。对不起,如果我打扰了。
double Balance=AccountBalance();
if(Balance<=500){lots=0.1;}
if(Balance<1500&&Balance>1000){lots=0.3;}
if(Balance<2500&&Balance>2000){lots=0.5;}
if(Balance<3500&&Balance>3000){lots=0.7;}
if(Balance<4500&&Balance>4000){lots=0.9;}
if(Balance<5500&&Balance>5000){lots=1.1;}
if(Balance<6500&&Balance>6000){lots=1.3;}
if(Balance<7500&&Balance>7000){lots=1.5;}
if(Balance<8500&&Balance>8000){lots=1.7;}
if(Balance<9500&&Balance>9000){lots=1.9;}
if(Balance>10000){lots=2;}
 
jameslarry:
我也试过这样做,但它给出了和上面一样的错误,也许AccountBalance()和AccountFreeMargin()在策略测试器上不起作用,这里是代码,因为我在测试中以3000美元的余额开始,但它一直给出 4051无效手数的错误。如果我可以问一下,如果我有3000美元,那么AccountBalance()的值是3000还是别的什么。对不起,如果我打扰了。

哦,天哪。

你得到了这个错误,因为......你没有计算出打开这个手数的成本。 阅读你的其他主题https://www.mql5.com/en/forum/140034https://www.mql5.com/en/forum/140034/page2#649957

 
我如何纠正它,AccountBalance()返回什么是它的价值,是美元还是其他单位。
 
jameslarry:
我如何纠正它,AccountBalance()返回什么,是以美元还是其他单位。

它以你的账户货币返回。我在这里给你的附件https://www.mql5.com/en/forum/140034

你如何纠正它,像这样正确地使用手数计算https://www.mql5.com/en/forum/140034

原因: