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

 
kopeyka2:

这正是我所想的。误解的问题是 "参数 "这个词。所以我开始查看所有涉及到句柄 --> CopyBuffer的变量。

1) 我的问题从一开始就是要切换时间框架SCREEN来保存手柄数据。正如在MT4中一样。

而事实上,结果也是如此。

总是在所有的时间框架上 给出相同的数值10。

在这里一无所获后,我继续前进。

2)我引用一下。"将指定指标的指定缓冲区的数据以指定的数量获取到缓冲区阵列中"

也就是说,通过 手工 设置计数,我们应该有一个INTERVAL的数值 他们就在那里!BUT!!!!!!只有当处理周期对应于

监视器屏幕上的PERIOD_H1时间框架 所有的价值都被清晰地传送。但移到另一个时间框架,屏幕上没有数据。

它们不会以任何方式传播,!!!! 而我的问题正是如此。如果不是有!!!!,条数在这里并不那么重要。


我看了看提议的指标MTF_LRMA.mq5 ,但它有同样的东西 它在屏幕上切换到另一个时间框架,数据按屏幕上的时间框架进行。我需要它在手持设备上。

例如:iClose(NULL, PERIOD_H1, 5); 在所有的时间段都会给出相同的值--H1的10条。

到目前为止,所有的例子都是关于 CopyBuffer 计数的修正。 但数组是空的。


你错了。处理在任何时间范围内给出的数据。我将在大约10小时后给你一个例子。我在手机上做不到这一点。
 
Artyom Trishkin:
你错了。处理在任何时间范围内给出的数据。我将在大约10小时后给你一个例子。我将无法从我的手机上进行操作。

好的。谢谢你的答复。


自己纠正了。

Напррмер: iClose(NULL, PERIOD_H1, 5); на всех таймфреймах будут давать одно и тоже значение : Закрытие на 5 баре по Н1. 

我想它可能是这样的

MqlParam params[]; 
//--- create iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE); 
   ArrayResize(params,4); 
//--- set ma_period 
   params[0].type         =TYPE_INT; 
   params[0].integer_value=0; 
//--- set ma_shift 
   params[1].type         =TYPE_INT; 
   params[1].integer_value=0; 
//--- set ma_method 
   params[2].type         =TYPE_INT; 
   params[2].integer_value=MODE_EMA; 
//--- set applied_price 
   params[3].type         =TYPE_INT; 
   params[3].integer_value=PRICE_CLOSE; 
//--- create MA 
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params); 
//--- release indicators (first h_MACD) 
   
  if(h_MA==INVALID_HANDLE)
     {
      Print("The iMA (",string(PERIOD_M15),") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
//---
   return(INIT_SUCCEEDED);

但如果你改变主意,我将等待第一种方法来获得技术指标(iMA)的值。但我还是不明白。

 
kopeyka2:

好的。谢谢你的答复。


自己纠正了。

我想它可能是这样的

但如果你改变主意,我将等待第一种方法来获得技术指标(iMA)的值。但我现在不明白了......

我在上面表明,不同TF上的条数是不同的,因此要复制的条数也不同,这取决于应该计算指标的那个TF。你应该检查由BarsCalculated()计算的条数,并将其作为基础。

//+------------------------------------------------------------------+
//| 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[])
  {
   if(rates_total==prev_calculated) return(rates_total);
//---
   int    i;
   double diff;
//--- check for rates count
   if(rates_total<=ExtPeriodRSI)
      return(0);
//---
   if(TF!=PERIOD_CURRENT)
   {
      if(handle==INVALID_HANDLE)
        {
         handle=iCustom(Symbol(),TF,ind_name,Variant,RSIPeriod,Levl_Up,Levl_Down,PERIOD_CURRENT);
         return(0);
        }
      else
        {
         int bars_calculated=BarsCalculated(handle);
                  //Print("Начнем расчет - " , bars_calculated);
         if(bars_calculated<=0) return(0);
         if(Bars(Symbol(),TF)!=bars_calculated)
           {
            for(i=rates_total-prev_calculated-1;i>=0;i--)
              {
               Delta[i]=0.0;   
              }
            return(prev_calculated);
           } 
        }
 
Aleksey Vyazmikin:

我在上面表明,不同TF上的条数是不同的,因此你应该要求不同的条数来复制,这取决于TF,应该由指标来计算。你应该检查指标通过BarsCalculated()计算的条数,并将其作为基础,这里有一个MTF的例子。

谢谢你。我将尝试一下。但如前所述,该数组完全是空的。我一直在阵列上做手写的sdigs。这都是空的。
 
kopeyka2:
谢谢你。我会试一试的。但正如前面所指出的,这个数组完全是空的。我一直在阵列上做手写的sdigs。这都是空的。
你是否忽略了我们必须等待从另一个时间框架加载数据?我给了你例子。所示指标 中的数据仅取自较高的时间框架。如果我们设置为低于或等于当前的时间框架,则数据取自当前的时间框架。所有这些都在代码中,但你却没有费心去研究它。但你是在做一个声明。
 
Artyom Trishkin:
你是否忽略了你必须等待数据从不同的时间框架加载?我已经给你举了例子。所示指标中的数据仅取自较高的时间框架。如果我们设置为低于或等于当前的时间框架,则数据取自当前的时间框架。这一切都在代码中,但你还没有审查它。但你是在做一个声明。
我不只是看,我把你的指标拆成了碎片。我从一开始就有数据延迟的想法。而且,从第一次观看开始,我就立即看到了你的Timer。我会朝这个方向看的。
 
kopeyka2:
我不仅看了,而且还把你的指标一块一块地拆开。这里是关于数据延迟的想法,从一开始就有。而且,从第一次观看开始,我就立即看到了你的Timer。我会朝这个方向看的。
最后一个周期与数据转换 到当前的时间框架评论,并在任何图形缓冲区通过计算缓冲区的数据MAshek,你会在图表上看到你想要看到的东西。
 

暂时

其他(非本地)时间框架


 
kopeyka2:

暂时

其他(非本地)时间框架


你是否特意注释了返回字符串,以防止没有收到数据?为什么?如果你拧开车轮,说电机嗡嗡作响,方向盘转动,但车不走,因此它不在工作状态,这就有点苛刻了。
 
kopeyka2:
我试试。我将尝试一下。但正如我之前指出的,这个数组根本就是空的。我用我的手来做阵列的读数。这都是空的。

早些时候,我给了你一段带打印的指标代码,你是否试着复制它?日志中没有出现任何内容,没有错误或数字?