错误、漏洞、问题 - 页 32

 
现在我也有了一个故障......在你重新编译之前,最后的小节是呈现的。
 
Interesting:

唯一正确的方法是非常简单。

你写了一个100%有效的指标,而且是在没有 "符号 "参数的情况下经典地完成的,也就是说,它是用当前的符号和周期计算的。

之后,这样的BASIC计算器在专家顾问(如果提供机械工作)或计算器(如果你想在非计算仪器的图形上显示信息)中被调用。

PS

否则,如果计算器或一个单独的函数必须做一个额外的计算,然后将结果与当前图形数据联系起来......

值得考虑的建议

但当然从普通逻辑的角度来看,这就像用右手抓左耳一样(但这不是为你,是为开发者)。

为什么我需要调用一个非本地仪器的数据?

如果你必须创建自定义指标,并从一个必要的符号中调用它们,无论如何,一般来说,结论是我要买它。

但是,我再次呼吁用日元的数据为欧元准备一个指标(例如,日元没有足够的历史数据)。

如果我寻找同样的指标,而它不包含这个长度的数据,它将告诉我什么?

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

这里有一个可行的方案。

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot LRma
#property indicator_label1  "LRma"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
input string             symbol      ="EURJPY";
input int                MA_Period   =25;          // период MA
input int                MA_shift    =0;           // сдвиг индикатора
input ENUM_APPLIED_PRICE price       =PRICE_OPEN;  // тип цены 
//--- indicator buffers
double  LRma[],L[],S[],iPoint,iiMA;

int Lwma,Sma;// Хендлы машек
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,LRma,INDICATOR_DATA);
   Lwma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_LWMA,price);
   Sma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_SMA,price);
   iPoint=1.0/SymbolInfoDouble(symbol,SYMBOL_POINT);
   iiMA=1.0/MA_Period;
   IndicatorSetString(INDICATOR_SHORTNAME,"LRma_symbol_"+symbol);
//---
   int count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   ArraySetAsSeries(L,true);
   ArraySetAsSeries(S,true);
   ArraySetAsSeries(LRma,true);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int count=rates_total-prev_calculated;
   if(count>1)count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   if(count==0)count=1;
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   if(CopyBuffer(Lwma,0,0,count,L)!=-1)
     {
      if(CopyBuffer(Sma,0,0,count,S)!=-1)
        {
         for(int i=0;i<MathMin(ArraySize(LRma),ArraySize(L));i++)
            LRma[i]=(L[i]-S[i])*6*iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

我可以再加一个头痛的问题。如果指标在一个图表上,但 是来自另一个图表,你必须考虑到条数可能不同。

  1. 那条的数量 可能是不同的。我认为 ,已经考虑到了。
  2. 考虑到仪器的历史可能有间隙,一个仪器的历史上有25个柱子,可能是星期一,而另一个是星期五......
  3. 即使你已经解决了前两个问题,仍然存在时间上的同步问题,对于一个仪器来说,新的条形图已经开始了,而对于另一个仪器来说,还没有开始......
  4. 该指标只有在新的刻度线到来时才工作 ,也就是说,如果它挂在图表上的刻度线很少,另一个图表的0条就有问题...
  5. 如果你停止计算0条,只计算完成的条数,那么还会有一些陷阱......
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Prival:

我可以再加一个头痛的问题。如果指标在一个图表上,但从另一个图表上显示出来,你必须把它考虑进去。

  1. 那条的数量 可能是不同的。我想我们已经考虑到了这一点。
  2. 考虑到仪器的历史可能有间隙,一个仪器的历史上有25个柱子,可能是星期一,而另一个是星期五......
  3. 即使你已经解决了前两个问题,仍然存在着时间上的同步问题,对于一个乐器来说,一个新的小节已经开始了,对于另一个乐器来说,还没有开始......。
  4. 该指标只在新的刻度线到来时工作,也就是说,如果它挂在一个刻度线很少的图表上,它在另一个图表的0条上会有问题......
  5. 如果你停止计算0条,只计算完成的条数,那么还会有一些陷阱......

谢谢你的好意 :o)
 

错误。描述。ATS总是在市场上(滚动的双手0.2)。

测试模式下,所有滴答声。一切都很正常。

测试模式,通过打开价格。同一片。

出于某种原因,它分成了两个行业。也许这只是它的显示方式,但这是不对的。它不应该是这样的。

 
Alexandr2385:

你好,我有一个关于MT5终端的严重问题。当我启动终端时,只有价格线(bid)在移动,而蜡烛图(bar)却没有绘制/变化。因此,价格的变动不会改变图表。我有一个问题:如何解决这个问题?事实上,在MT4中一切工作都很正常!我试着重新安装了终端,但没有用!我不知道该怎么办。我在几个经纪人那里遇到了这样的问题......你能告诉我在这种情况下该怎么做吗?
开发商中是否有人能回答这个问题?或者我应该在另一个主题中问吗?
附加的文件:
1.png  31 kb
 
Alexandr2385:
有哪位开发者能回答这个问题?或者我应该在另一个主题中问吗?
+1 我也看到了同样的情况,但现在似乎工作正常了,他们肯定已经修复了。
 
SHOOTER777:

+1 我也看到了同样的情况,但现在似乎工作正常了,他们肯定已经修复了。

是的,很奇怪,但它现在刚刚消失,不知道过了多久......

 
Prival:

我可以再加一个头痛的问题。如果指标在一个图表上,但从另一个图表上显示出来,你必须把它考虑进去。

  1. 那条的数量 可能是不同的。我想我们已经考虑到了这一点。
  2. 考虑到仪器的历史可能有间隙,一个仪器的历史上有25个柱子,可能是星期一,而另一个是星期五......
  3. 即使你已经解决了前两个问题,仍然存在着时间上的同步问题,对于一个乐器来说,一个新的小节已经开始了,对于另一个乐器来说,还没有开始......。
  4. 该指标只在新的刻度线到来时工作,也就是说,如果它挂在一个有少量刻度线的图表上,那么它在另一个图表的0条上就会出现问题......
  5. 如果你停止计算0条,见鬼去吧,只计算完成的条数,那么还会有几个陷阱......

我同意关于漏洞和历史问题的说法。

在正常操作和周期同步的情况下,新的条形图应该(逻辑上)在同一时间开始......。