新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 787

 

在MT5图表上绘图时发现一个奇怪的故障:箭头而不是低位蜡烛被放置在任意位置,就像移到了图表上一样




#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

#property strict

#property indicator_buffers 1 
#property indicator_plots   1
 
#property indicator_label1  "Arrows" 
#property indicator_type1   DRAW_ARROW 
#property indicator_color1  clrGreen 
#property indicator_width1  1

double Buf_0[];

int OnInit()
  {

   SetIndexBuffer(0,Buf_0,INDICATOR_DATA);
   PlotIndexSetInteger(0,PLOT_ARROW,233);
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   
   for (int i=0; i<rates_total; i++)
      {
   
      Buf_0[i]=iLow(_Symbol, _Period,i);
      }
   return(rates_total);
  }

 
psyman:

在MT5图表上绘图时发现一个奇怪的故障:箭头而不是低位蜡烛被放置在任意位置,就像移到了图表上一样




1.该指标已经有一个低位数组。它必须被应用。

2.没有必要以最大速度运行可视化。

3.这段代码有很大的缺陷--因为每次打勾 都会有一个通过所有BAR的过程。

 
Vladimir Karputov:

1.该指标已经有一个低位数组。应用它。

2.没有必要以最大速度运行可视化。

3.这段代码有很大的缺陷--因为每次打勾 都会有一个通过所有BAR的过程。

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[])
  {
   ArrayInitialize(Buf_0,EMPTY_VALUE);

   for (int i=0; i<rates_total; i++)
      {
   
      Buf_0[i]=iLow(_Symbol, _Period,i);
      }
   return(rates_total);
  }
 
Vladimir Karputov:

1.该指标已经有一个低位数组。应用它。

2.没有必要以最大速度运行可视化。

3.这段代码有很大的缺陷--因为在每一个刻度 上,都有一个通过所有条形的过程。

我没有把代码贴在这里,而是写了一个最简单的代码来简化解析。

告诉我更多关于什么是错的,关于最大的速度是不清楚的。

 
Vitaly Muzichenko:

维塔利,由于某些原因,初始化不工作。我试着写PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);它也不工作 :(

 
psyman:

我没有把代码贴在这里,而是写了一个最简单的代码来简化解析。

告诉我更多的问题,最大的速度是不清楚的。

开始一步一步地纠正它。例如,先修好它。

该指标已经有一个低的阵列。你需要应用它。

 
Buf_0[i]=iLow(_Symbol, _Period,i);

iLow作为系列的真,Buf_0为假,low[]也为假。也就是说,在你的案例中,第0个元素得到rate_total-1(镜像的)。

例如,你需要翻转其中一个。

Buf_0[i]=iLow(_Symbol, _Period,rates_total-1-i);
 
psyman:

在MT5图表上绘图时发现一个奇怪的故障:箭头而不是低位蜡烛被放置在任意位置,就像移到了图表上一样



知道关于皮诺曹的苹果的谜语肯定会有助于解决这个问题。我不记得它的细节,我们将等待有人没有错误地复述它。

 
Igor Zakharov:

iLow作为系列的真,Buf_0为假,low[]也为假。也就是说,在你的案例中,第0个元素得到rate_total-1(镜像的)。

例如,你需要翻转其中一个。

这是个指标!在OnCalculate 中已经有了数组。

                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[]

为什么要把iXXXX函数塞进一个指标中?

 
Vladimir Karputov:

这是个指标!OnCalculate已经有了数组

为什么要把iXXXXXX函数放到一个指标中?

我应该如何知道?提问者使用了iLow(),这意味着他需要它。也许它更容易被感知,也许他打算通过一个输入变量来解决另一个符号或时间框架(我不记得了,有一个以四为单位的版权 吗?)

补充:关于五人的问题是在四合院的主题中提出的。我忽略了它,我忏悔。但是,答案仍然是一样的。