熙熙攘攘!熙熙攘攘!。 - 页 4

 
RaptorUK:
要做什么......你实际上还没有解释你想做什么......尽管有人问你具体问题。......如果你无视别人提出的问题,以便帮助你,那么你将很快被忽视。

涡轮增压或不涡轮增压
 
jameslarry:

涡轮增压或不涡轮增压
好吧,好好享受吧......你不需要帮助。
 
我得到了一个系统,可以像我想要的那样做,我很快就会把它发布给你们。
 

既然你看起来想让它尽可能的简单,因为你是个新手,我就找了一个最容易理解的方法。

extern double LotPerThousand=0.1;  // If you had 1000 balance what lot size would you use

int 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,...)
...

return 0;
}
 
tonny:
既然你看起来想要最简单的,因为你是个新手,我找了一个最容易理解的。
对不起,tonny的手数必须在minlot和maxlot之间,并且是lotStep的倍数。
double NormalizeLots(double lots, string pair=""){
    if (pair == "") pair = Symbol();
    double  lotStep     = MarketInfo(pair, MODE_LOTSTEP),
            minLot      = MarketInfo(pair, MODE_MINLOT);
    lots            = MathRound(lots/ls) * ls;
    if (lots < minLot) lots = 0;    // or minLot
    return(lots);
}
 
tonny:

既然你看起来想让它尽可能的简单,因为你是个新手,我就找了一个最容易理解的方法。


中奖了!Tonny 这正是我想要的,它在策略测试器上 工作,自动增加手数,保持百分比。它比我以前的那个有无数个if语句的版本要好,谢谢大家!:-)
 
我只记得一个数学公式,如果a和b相加,那么c相加,这个公式就是(b/a)*c,在这种情况下c是你的账户余额。结果尊重a:d的比例,即让我们说结果是d,那么a:b与c:d相同,b:a与d:a相同。然后把公式放在normalize double中,得到一个小数点后两位的四舍五入的手数值,以防计算结果中的小数点超过两位,Ordersend会将其作为无效的手数拒绝。从那里检查这个值是否小于最低要求的手数,如果是,则使用最低要求的手数,如果高于最高要求的手数,则使用最高的手数值。
/* 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 returned
if(lots<MarketInfo(Symbol(),MODE_MINLOT)){ lots=MarketInfo(Symbol(),MODE_MINLOT); }        // if lower than minimum required use the minimum
if(lots>MarketInfo(Symbol(),MODE_MAXLOT)){ lots=MarketInfo(Symbol(),MODE_MAXLOT); }        // if higher than maximum required use the maximum
 
非常感谢您!
 
WHRoeder:
对不起,tonny的手数必须在minlot和maxlot之间,并且是lotStep的倍数。

亲爱的WHRoeder,请不要通过提供有很多错误的代码来误导人们,你没有在代码中定义ls对象,你把它交给别人使用,请停止你的恶作剧行为。

 
tonny:

既然你看起来想让它尽可能的简单,因为你是个新手,我就找了个最容易理解的。


tonny 谢谢你给的代码,它真的非常好用



我从两天前就发现了它,甚至和我的妻子争论过这个问题!


谢谢