externdouble LotPerThousand=0.1; // If you had 1000 balance what lot size would you useint start()
{
double lots;
lots=NormalizeDouble((LotPerThousand/1000)*AccountBalance(),2);
if(lots<MarketInfo(Symbol(),MODE_MINLOT)){ lots=MarketInfo(Symbol(),MODE_MINLOT); }
if(lots>MarketInfo(Symbol(),MODE_MAXLOT)){ lots=MarketInfo(Symbol(),MODE_MAXLOT); }
...
OrderSend(Symbol(),OP_BUY,lots,...)
...
return0;
}
/* new value of lot would be (old lot/old balance)*new balance in this case we fix old balance at 1000 and new balance is the current balance i.e. (LotPerThousand/1000)*AccountBalance() */
lots=NormalizeDouble((LotPerThousand/1000)*AccountBalance(),2); // round two 2 decimal places incase more than 2 decimal places is returnedif(lots<MarketInfo(Symbol(),MODE_MINLOT)){ lots=MarketInfo(Symbol(),MODE_MINLOT); } // if lower than minimum required use the minimumif(lots>MarketInfo(Symbol(),MODE_MAXLOT)){ lots=MarketInfo(Symbol(),MODE_MAXLOT); } // if higher than maximum required use the maximum
要做什么......你实际上还没有解释你想做什么......尽管有人问你具体问题。......如果你无视别人提出的问题,以便帮助你,那么你将很快被忽视。
涡轮增压或不涡轮增压
涡轮增压或不涡轮增压
既然你看起来想让它尽可能的简单,因为你是个新手,我就找了一个最容易理解的方法。
既然你看起来想要最简单的,因为你是个新手,我找了一个最容易理解的。
既然你看起来想让它尽可能的简单,因为你是个新手,我就找了一个最容易理解的方法。
中奖了!Tonny 这正是我想要的,它在策略测试器上 工作,自动增加手数,保持百分比。它比我以前的那个有无数个if语句的版本要好,谢谢大家!:-)
对不起,tonny的手数必须在minlot和maxlot之间,并且是lotStep的倍数。
亲爱的WHRoeder,请不要通过提供有很多错误的代码来误导人们,你没有在代码中定义ls对象,你把它交给别人使用,请停止你的恶作剧行为。
既然你看起来想让它尽可能的简单,因为你是个新手,我就找了个最容易理解的。
tonny 谢谢你给的代码,它真的非常好用
我从两天前就发现了它,甚至和我的妻子争论过这个问题!
谢谢