学童的EOP。 - 页 9

 
Dmitry Fedoseev:

如果指标是由左至右计算的,那么如果有事情发生,比如说形成了分形,你必须用这个事件来存储条形的索引(以便用于其他方面)。如果索引是从右到左,我们应该计算n=Bars-i并记住n,然后做相反的事情:i=Bars-n。但如果你从左到右做索引,你应该只保存索引并使用它,它不会改变。由于在或多或少复杂的指标中总是需要这样做,从左到右的索引对指标开发者来说是一个很大的帮助。

是的,我曾经开始用mql4写一个指标,我写了1/3,另外1/3部分是基于第一个指标的结果,第三部分是基于第二个三分之一的值。在计算所需数值的条形图时,我面临一个大问题。但碰巧的是,客户已经消失了,我还没有写完。而当在右边索引时,酒吧号码是不变的,只需将酒吧号码写到辅助数组中,只有这个数组必须被运行以构建第二和第三部分......

 
Dmitry Fedoseev:

如果指标是由左至右计算的,那么如果有事情发生,比如说形成了分形,你必须用这个事件来存储条形的索引(以便用于其他方面)。如果索引是从右到左,我们应该计算n=Bars-i并记住n,然后做相反的事情:i=Bars-n。但如果你从左到右做索引,你应该只保存索引并使用它,它不会改变。 由于在或多或少复杂的指标中总是需要这样做,从左到右的索引对指标开发者来说是一个很大的帮助。

怎么样。然后终端下载历史记录,然后呢?
 
Ihor Herasko:

这里有一个例子

伊戈尔-马卡努

https://www.mql5.com/ru/code/25807

谢谢你,但

  1. 不幸的是,这都是四肢发达。
  2. 我希望有一个明确的例子,在没有iCustom的情况下连接这样一个指标)))
 
Vladimir Simakov:
哦,孩子。然后终端下载历史记录,然后呢?

这没什么大不了的。你只需要忘记四种方法就可以了

   int counted_bars=IndicatorCounted();
   int i,r,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = Bars-counted_bars;
         if (ArrayRange(working,0) != Bars) ArrayResize(working,Bars);

   //
   //
   //
   //
   //
        
   for(i=limit, r=Bars-i-1; i >= 0; i--,r++)

并像这样做。

if(rates_total-prev_calculated > 1)
 {
  // Если это первый запуск или подгрузилась история пересчитаем весь индикатор.
 }
if(rates_total-prev_calculated >= 0)
 {
  // Пересчитаем только последнее изменение.
 }
 
#include <Indicators/Indicators.mqh>

CiADX adx;

int OnInit()
  {

   if(!adx.Create(Symbol(),Period(),14)){
      return(INIT_FAILED);
   }

   OnTick(); // это только для этого примера, чтобы на выходных сработало

   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
   double buf[];
   
   if(adx.GetData(0,1,0,buf)==-1){
      return;
   }

   Comment(buf[0]);
   
  }
 
Vladimir Simakov:
哦,是的。然后终端下载了历史记录,然后呢?

你来自哪里,为什么在这里?你有没有为MT4或MT5写过一个指标?至少你应该知道为MetaTrader编写指标 的基本知识。

 
Dmitry Fedoseev:

因为他们从来没有写过复杂但快速的指标,否则从左到右的索引将是一个非常重要的解决方案。

如果你需要一个用于EA的快速指标,最好把计算部分直接放到EA中。

 
Alexey Volchanskiy:

如果你需要一个快速的EA指标,直接在EA中插入计算部分会更有利。

不可能...看在残酷的份上,告诉你的女朋友们吧。

 
Dmitry Fedoseev:

你来自哪里,为什么在这里?你有没有为MT4或MT5写过一个指标?你至少应该知道为MetaTrader编写指标 的基本知识。

迪米特里很生气,他还没有喝醉)))。

 
修正了一下。GetData()应检查是否有不等式-1。