繁体   English   中英

如何在 MQL4 / MT4 中对很多指数进行分组?

[英]How to group a lot exponent in MQL4 / MT4?

我设法获得了正常的批次指数,但我需要通过对图片中的示例进行分组来对其进行一些更改。 有人可以指导我如何获得批量指数但使用分组技术 Group= 5 Exponent= 1.8吗?

double GroupExponent(int type)
{
   double lot=0,exponent=1.8,group=5,initialLot=0.01;
   if(type==OP_SELL)                         
   .............                            //<---- Do i need to loop this area ?
      lot= initialLot * MathPow(exponent,TotalSell());   
   return lot;
}

int TotalSell()
{
   int Sell=0;
   for(int trade=OrdersTotal()-1; trade>=0; trade--)
   {
      if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))continue;
      if(OrderSymbol()==Symbol() && OrderType()==OP_SELL))
         Sell++;
   }
   return Sell;
}

在此处输入图片说明

不,你不需要循环。 您可以像这样获得图层系统:

double GroupExponent(int type)
{
   double lot=0,exponent=1.8,initialLot=0.01;
   int group = 5;
   if(type==OP_SELL)                         
   {
      lot = NormalizeDouble(initialLot * MathPow(exponent, (TotalSell() - 1) / group), 2);
   }
   return lot;
}

int TotalSell()
{
   int Sell=0;
   for(int trade=OrdersTotal()-1; trade>=0; trade--)
   {
      if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))continue;
      if(OrderSymbol()==Symbol() && OrderType()==OP_SELL))
         Sell++;
   }
   return Sell;
}

注意:只有当Layer == 1等于TotalSell() == 1这才会按预期工作。 如果Layer == 1等于TotalSell() == 0 ,则不需要从TotalSell()内的MathPow()减去 1。

“如何在 MQL4 / MT4 中对大量指数进行分组?”

好吧,从技术上讲,指数 = 1.8本身并不是指数,而是一个缩放常数,它普通序数取幂

请参阅与上表匹配的批量大小的计算公式:

|
|>>> for                                   aLayerNUMBER in range( 1, 11 ):
...      aVolumeInLOTs = 0.01 * ( 1.8 ** ( aLayerNUMBER - 1 ) )
...      print "LAYER: {0: >2d} - {1: >5.2f} Lots".format( aLayerNUMBER,
...                                                        aVolumeInLOTs
...                                                        )
... 
LAYER:  1 -  0.01 Lots
LAYER:  2 -  0.02 Lots
LAYER:  3 -  0.03 Lots
LAYER:  4 -  0.06 Lots
LAYER:  5 -  0.10 Lots
LAYER:  6 -  0.19 Lots
LAYER:  7 -  0.34 Lots
LAYER:  8 -  0.61 Lots
LAYER:  9 -  1.10 Lots
LAYER: 10 -  1.98 Lots
+0:01:07.587141
13:31:06
|
|>>>

在 MQL4 中,最常见的是:
double aVolumeInLOTs = NormalizeDouble( 0.01 * MathPow( 1.8, aLayerNUMBER - 1 ), 2 );

分组是(此处)5 笔交易的组,每笔都具有相同的规模/交易量,
再次在 ( 0.01, 0.02, 0.03, 0.06, 0.10, 0.19, 0.34, 0.61, 1.10, 1.98, 3.57, 6.42, 11.56, 20.82, 0.06, 0.10, 0.19, 0.34, 0.61, 1.10, 1.98, 3.57, 6.42, 11.56, 20.82, 0.06, 36, 36, 36, 36, 39, 37, 36, 36

拼图的最后一部分是一个原因,从哪里停止生产 5 笔交易组(为什么在第四组 5 笔交易时停止,每个 0.06 手,而不是继续进行下去)。

该信息不存在于问题中,因此显然对我们来说仍然是不可确定的,除非添加更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM