externint LotPercentage=10; // use 10% of balance as lot sizeint start()
{
double LotInBalance=(LotPercentage/100)*AccountBalance(); // find the amount that is 10% of balance lets assume its $1000double LotUnits=LotBalance*AccountLeverage(); // multiply this 10% balance($100) by leverage to get lot unitsdouble 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()*/
...
return0;
}
同时这也会返回同样的错误,而它甚至更简单
double lots;
double Balance=AccountBalance();
if(Balance<=500){lots=0.1;} // If my account has $500 or less the lot will be 0.1if(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;} // If account balance if over 10000 lot is 2if(/*opening criteria met*/){
OrderSend(Symbol(),OP_BUY,lots,...)
}
double lots; // <<== value is zerodouble Balance=AccountBalance();
if(Balance<=500){lots=0.1;} // What the lots if Balance > 500 && <= 1000 ?if(Balance<1500&&Balance>1000){lots=0.3;} // read this carefully : if balance bigger than but not equal with 1000// AND balance also smaller but not equal than 1500.// Question : what's the lot if balance equal with 1000 and 1500 ?
不要用真钱做这个。
你想损失10%还是用10%开仓?(答案:第一个!)
我想用10%开仓,就像有人在账户中存入1000美元,用0.1手开仓一样(如果杠杆是1:100,则10%)。
onewithzachy 你是对的,我确实把它修改成了下面这个样子,而且它也起作用了,但是策略测试 结果比较差,我想最好还是使用固定手数。
如果我设置一个固定的手数,一切都很好,但我想要一个动态手数。所以我想出了上面的脚本,但它不工作,我不知道问题在哪里。@raptor 我想用1000美元余额中的100美元,我知道这是0.1手,因为我的杠杆是1:100,但我希望它是动态的,这样如果系统盈利,余额变高,比如新的余额变成2000美元,我希望它现在用200美元(0.2手)开交易,尊重我设置的百分比,即10%、20%或我设置的任何余额/保证金。@ onewithzachyordersend是好的,因为如果我设置固定的手数,它可以工作,但当我试图像下面那样动态化它,它说错误的手数。我的账户是微型账户,支持最小0.01手。 同样,这也会返回同样的错误,而它甚至更简单。请阅读我在代码中的评论,以便更好地理解。
不,等等,它确实增加了一些涡轮,我的测试是错误的。如果我可以用一个公式来计算,而不是用大量的if语句来计算,那就太好了。 有可能推导出一个公式吗?
哪种方式最安全?