初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1141

 
Vladimir Karputov:

是的,现在试着从图表的顶部开始,向下拖动十字准线......

(1250,761-1193,590)/1250,761*100 = 4,570897237762


 
Igor Zakharov:

(1250,761-1193,590)/1250,761*100 = 4,570897237762

只是现在有一个细微的差别:因为我们开始拉高,最后拉低--图上的百分比用"-"号表示。对我来说,它的信息量更大。

 
Vladimir Karputov:

好吧,我想你还没有忘记有一个计算器,是吗?你就不能至少自己计算一下吗?


补充:如果计算器太重,我可以再次报价。

终端:Crosshair工具现在不仅以点数显示价格水平之间的距离,而且还以百分比 显示。

计算器没有问题,也从来没有问题。

然而,"百分比 "是相对于整个预设值而言的一个分数=100%。

那么,价格水平之间的距离 ,作为一个百分比,相对于什么?

https://ru.wikipedia.org/wiki/Процент

 
Anzhela Sityaeva:

那么,价格水平之间的距离 ,占什么比例

相对于初始价格(你拖动十字准线的地方)。

 
Igor Zakharov:

相对于起始价格(你拖动十字线的地方)。这对我来说是可行的,见上文。

如果你拖动的地方=100%,你停止的地方为0%,那么结果=100%。
 
Anzhela Sityaeva:
如果你拖动的地方=100%,你停止的地方为0%,那么结果=100%。

我希望你的客户没有看到这篇文章...

0%,其中0是绝对的
 
Igor Zakharov:

我希望你的客户没有看到这篇文章...

0%是指0是绝对的。

是的...星期五,好在我不是一个人。虽然有什么更简单的说法是说100%被当作价格值,从那里开始测量。

 

请帮助敲定MT5上的EA))))

增加了对固定地段和风险地段的选择...在测试器中,一切工作正常,但在终端,当你选择一个风险手数时,它使EA脱离了图表。

   double dfg, ifg;
   dfg = AccountInfoDouble(ACCOUNT_MARGIN_FREE);
   ifg = InpVolumeLotOrRisk;
   switch(IntLotOrRisk)
     {
      case MY_FIXLOT:
         InpLots= InpLotsfix;
         break;

      case MY_RISKLOT:
         InpLots= dfg*ifg/25000;    // FreeMargin * %риска) / 100 * 250(средняя цена лота)
         break;

     }

这段代码有什么问题吗?))

P.S.只是不要开始批评几页的风险公式--我对这样的变体相当满意)最主要的是地段本身的平衡上升)

 
Vlad Svetlov:

请帮助敲定MT5上的EA))))

增加了对固定地段和风险地段的选择...在测试器中,一切工作正常,但在终端,当你选择一个风险手数时,它使EA脱离了图表。

这段代码有什么问题吗?))

P.S.只是不要开始批评几页的风险公式--我对这样的变体相当满意)主要的是,地段本身的平衡背后上升了)

对通过数学计算 得到的地段,应进行检查,必要时进行四舍五入。

我使用一个函数。

//+------------------------------------------------------------------+
//| Lot Check                                                        |
//+------------------------------------------------------------------+
double LotCheck(double lots,CSymbolInfo &symbol)
  {
//--- calculate maximum volume
   double volume=NormalizeDouble(lots,2);
   double stepvol=symbol.LotsStep();
   if(stepvol>0.0)
      volume=stepvol*MathFloor(volume/stepvol);
//---
   double minvol=symbol.LotsMin();
   if(volume<minvol)
      volume=0.0;
//---
   double maxvol=symbol.LotsMax();
   if(volume>maxvol)
      volume=maxvol;
   return(volume);
  }

调用后,你应该检查它的返回结果 - 如果是 "0.0" -> 这意味着计算的手数非常小。

 

向所有人致敬。

在绘制范例文件夹中的标准人字形时,注意到了这种异常情况。

唯一的区别是测试的开始日期。也许有人知道这种扭曲的原因,以及如何修复它?