从保证金的百分比中正确计算出该批次的金额 - 页 4

 

感谢大家的帮助和参与...这是我 "痛苦 "的结果。

double lotSize(double deposSize=1000.0, string currName="USDCHF", double proc=2.0, int pipsLoss=1000)

{

double currMove=deposSize*proc/100;// расчет процента от величины, предположительно, депозита

double lotCount=currMove/(pipsLoss*MarketInfo(currName,MODE_TICKVALUE));//ну а тут и ведеться сам расчет лота

if(lotCount<MarketInfo(currName,MODE_MINLOT))

{

return MarketInfo(currName,MODE_MINLOT);

}

return NormalizeDouble(lotCount,2);

//return lotCount;

}

这看起来并不难,但如果没有建议,我是不可能做到的。

 

double lotCount=currMove/(pipsLoss*MarketInfo(currName,MODE_TICKVALUE));//然后进行批量计算本身。

这是最酷的,因为它得到了......而且现在正在计算

double currMove=deposSize*proc/100 = 1*100/100 = 1; 我们有1英镑

currName = "EURUSD"

MarketInfo(currName,MODE_TICKVALUE) = 0.1用于五位数报价

pipsLoss = 1000

总的来说,我们有

double lotCount=currMove/(pipsLoss*MarketInfo(currName,MODE_TICKVALUE))= 1 /(1000*0.1) = 0.01

一切似乎都很好(每手保证金为68.53),如果pipsLoss = 100,那么 lotCount = 0.1,但没有足够的保证金 - 对于0.1我们需要6.853,而我们有1英镑...

另一方面,在第一种情况下,有1英镑,以1000点的止损开盘,我们将有0.31英镑的剩余。

我想知道这些钱是否足够让一个有1000点止损的订单在999点的下跌中生存下来,我怀疑这是否会发生。

例如,0.01手的1个点的价格将是0.001,0.31/0.001=310点,也就是说,如果我们损失310点,订单将被止损关闭(这是在止损为0%的情况下,这是错误的,因为它总是更大,这意味着订单将提前关闭),因此所有的计算是没有价值的,因为它们不能帮助我们正确计算给定条件下的正确手数,所以订单将通过止损正确运作。

 
double CalcLotSize(double Lot,double lRisk,int lSL=0)
  {
   string lSymbol=Symbol();
   double dLotMin    = MarketInfo(lSymbol, MODE_MINLOT        );
   double dLotMax    = MarketInfo(lSymbol, MODE_MAXLOT        );
   double dLotStep   = MarketInfo(lSymbol, MODE_LOTSTEP       );


   double dLot=Lot;

   if(lRisk>0)
     {
      if(lSL>0)
        {
         double dLotCost=MarketInfo(lSymbol,MODE_TICKVALUE);
         dLot=MathRound(AccountFreeMargin()*lRisk*0.01/(lSL*dLotCost*dLotStep))*dLotStep;
        }
      else
        {
         double dLotMargin=MarketInfo(lSymbol,MODE_MARGINREQUIRED);
         dLot=MathRound(AccountFreeMargin()*lRisk *0.01/(dLotMargin*dLotStep))*dLotStep;

        }
     }

   if(dLot<dLotMin) dLot=dLotMin;

   if(dLot>dLotMax) dLot=dLotMax;

   return(dLot);
  }
 

似乎所有关于计数的想法都来自同一个地方,就像雨后的蘑菇一样相似......(我在批评我自己...)

你最好动动脑筋,想想地段计算功能应该算什么,应该考虑什么,因为提出的方案经不起推敲......。

 

让我为那些很有天赋的人解释一下......currMove - 这是通过pipLots点数时损失的百分比的货币价值(在1000点(5位)的行程中,1000英镑的存款的2%将是20美元) ...

这是它的优点......现在计算一下

double currMove=deposSize*proc/100 = 1*100/100 = 1; 我们有1英镑

也就是说,如果有人在这些条件下有1块钱的损失,那么我只能佩服交易员的极端--在这种情况下,他有价值50镑的存款......如果有人在亏损的情况下获得1美元,那么我只能佩服交易员的极端主义--在这种情况下,他有50美元的存款......

我认为以下对帖子文本的讨论是毫无意义的......因为与巨魔争论是不尊重人的行为,而且像他们那样不专心。

我很荣幸。

 
gochu:

让我为那些很有天赋的人解释一下......currMove - 这是通过pipLots点数时损失的百分比的货币价值(在1000点(5位)的行程中,1000英镑的存款的2%将是20美元) ...

这是它的优点......现在计算一下

double currMove=deposSize*proc/100 = 1*100/100 = 1; 我们有1英镑

也就是说,如果有人在这些条件下有1块钱的损失,那么我只能佩服交易员的极端--在这种情况下,他有价值50镑的存款......如果有人在亏损的情况下获得1美元,那么我只能佩服交易员的极端主义--在这种情况下,他有50美元的存款......

我认为以下对帖子文本的讨论是毫无意义的......因为与巨魔争论是不尊重人的行为,而且像他们那样不专心。

荣誉。

double currMove=deposSize*proc/100 = 1*100/100 = 1 一般来说,意味着存款是1美元,而不是50美元(并且有100%的 损失)。

:-)

 
EverAlex:
double currMove=deposSize*proc/100 = 1*100/100 = 1 一般来说,意味着存款是1美元,而不是50美元(而且有100%的 损失)。

well....有了这样的存款,祝你好运!

 

Vinin:

double CalcLotSize(double Lot,double lRisk,int lSL=0)


什么是地段?

iSL 是用什么来衡量的(我想上面说的是交易符号点)?

...(lsl*dLotCost*dLotStep))*dLotStep; 意味着它不是以交易符号的点数(MODE_POINT),而是以LOTSTEP?

还是什么?
 
EverAlex:

什么是地段?

iSL 是用什么来衡量的(我想上面说的是交易符号点)?

...(lsl*dLotCost*dLotStep))*dLotStep; 意味着它不是以交易符号的点数(MODE_POINT),而是以LOTSTEP?

还是什么?

这就是风险调整地段的计算。触发止损时,你将损失多少存款?
 
Vinin:

这是在考虑到风险的情况下对地段的计算。触发止损时,存款的哪一部分将被损失

因此lSL是指多少个点到SL

点=0.00001(在5位数的报价上)

dLotStep = 0.01


公式(LSL*dLotCost*dLotStep))*dLotStep是确定的

它应该是类似于(LSL*dLotCost*Point))*dLotStep 的东西。