[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 86

 
BeerGod:

把要映射到打印或注释的变量翻译成字符串DoubleToStr( double value, int digits),并设置所需的精度。

https://docs.mql4.com/ru/convert/DoubleToStr

https://docs.mql4.com/ru/common/comment


好的,谢谢。我也在考虑这样做,或者通过ObjecCreate()来构建。
 
okvseok:

请建议一个函数,计算从最后一个亏损订单到最后一个获利订单的数量...

谢谢你!

你可以这样试一试。
//+----------------------------------------------------------------------------+
// Убыточно ли закрылся последний ордер, и подсчет количества
int fHistory(){
  int loss = 0;
  for(int i=OrdersHistoryTotal()-1; i >= 0; i--){               // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){    // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;                // Ордера не нашего эксперта

        if(OrderProfit() < 0 ) loss = loss++;                 // Если убыток по посл.ордеру - считаем
        
        if(OrderProfit() > 0 ) return(loss);                  // Если прибыль, вернем количество убыточных
     }
  }
  return(-1);
}
 

在使用OrderProfit()、OrderType()等之前,我需要调用OrderSelect 多少次? 在Start里面调用一次就够了,还是在使用OrderProfit、OrderType等之前,每次都需要调用OrderSelect?

OrderSelect是否必须在OrderProfit之前立即调用,还是可以在开始的任何地方调用,只要是OrderProfit即可?

 
hoz:

我写了这个问题,但似乎没有人注意到。我不想在这里写这么长的问题,以免让大家感到困惑。请注意...

https://www.mql5.com/ru/forum/142983

这样试试吧。

int OrderCloseCount(double ordOpPrice, datetime ordOpTime)
{
  // slippage= Взять из OrderSend
  int timePlusMinus=20; // Пусть будет 20 сек.
  int count = 0;
  
  for (int i = OrdersHistoryTotal() - 1; i >= 0 ; i--)
  {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
      if (OrderSymbol() != Symbol()) continue;
          if (MathAbs(OrderOpenPrice()-ordOpPrice) <= slippage*Point && MathAbs(OrderOpenTime()-ordOpTime))< timePlusMinus)
              count++;
  }
  
   return (count);
}

因为不能保证你们的订单以完全相同的价格和完全相同的时间开盘。

 
hoz:

我写了这个问题,但似乎没有人注意到。我不想在这里写这么长的问题,以免让大家感到困惑。请注意...

https://www.mql5.com/ru/forum/142983

我已经在那条线上给了你一个粗略的算法(为了更好地理解一些细微的差别,在这里稍作修正),没有必要开始一个菜园。


该算法就像百吉饼一样简单。

部分关闭并没有改变 "魔术"。门票变了,但 "魔术 "没有变。

有一个开放的姿势和水平,这个姿势应该是部分封闭的。

假设Level1、Level2和Level3。

1.

2)如果在Bid>=Level3的水平上第三次平仓后仍有头寸,则在Level4过后用拖网对剩余的头寸进行伴随,或者一次性平仓。

这就是全部。

对于卖出,我们看Ask: Ask<=Level1 && Ask>Level2 ...等......。

在我们所有的头寸上做一个循环,按指数选择每一个头寸,计算它的水平和所选头寸的收盘手数,享受工作算法......:)

同时,不需要在EA的内存中(在变量中)存储这些水平的值,这非常方便--如果EA由于某种原因结束了工作,那么在恢复工作后,它不会丢失水平的数据--它将为每个位置重新计算它们。

还有一件事:在部分收盘后,不要忘记回调保护性止损。在1级收盘后--停在收支平衡点,在2级收盘后--停在1级,在3级收盘后--停在2级,等等。


 
大家好,有没有人有一个使用自定义指标 的专家顾问的例子?
 
dimarik0000:
大家好!有没有人有一个使用自定义指标的EA的例子?
问题是什么?
 
artmedia70:
问题是什么?


我读了关于将自定义指标 转移到专家顾问代码的文章,感到很困惑。 我应该这样做还是在代码中指定某些指标参数就可以了?
 
dimarik0000:

我读了关于将自定义指标移植到专家顾问代码中的文章,我很困惑,我应该这样做还是只在代码中指定一些特定的指标参数就可以了?
如果你没有太多的经验,你最好使用iCustom(),或者在将指标的逻辑添加到专家顾问中之前,彻底研究和了解其工作原理。
 

713
borilunad 15.01.2013 12:10

能否请你解开一个谜团:为什么当我插入这个函数|| isCloseLastPosByTake() == True |||测试器中的专家开始变得非常慢,10倍!这是4个互斥条件中的一个,所以我不能像求和条件那样使用if链来使代码运行得更快。你能给我什么建议?提前感谢您的建议!

原因: