文章 "使用若干中间指标缓存创建多货币指标"

 

新文章 使用若干中间指标缓存创建多货币指标已发布:

最近对 FOREX 市场进行群集分析的兴趣越来越高。MQL5 提供了研究货币对运动趋势的新可能。MQL5 不同于 MQL4 的一个新特点是能够使用数量不受限制的指标缓存。本文描述了一个创建多货币指标的例子。

图 4. 通过指数统计的 RSI 指标

作者:Alexey Klenov

 

如果这些指标也能根据其值对这一指标进行排序,将非常有用。

值进行排序。如果有这样的功能,请与大家分享,以免发明自行车。

 
Prival:

在这些指标中进行排序也很有用

根据其数值进行排序。如果有这样的功能,请与大家分享,以免发明自行车。

目前还没有现成的功能,但我认为绘制草图并不困难。

19.05.2010

已实现

附加的文件:
 

谢谢。

我唯一想指出的是,同步方法并不总是有效。下面是一张图片。引号中的洞 24 小时,但所有内容都是同步的 ((( 。

这太糟糕了。我不明白为什么会这样,最重要的是,该如何解决?

 
Prival:

谢谢。

我唯一想指出的是,同步方法并不总是有效。下面是一张图片。引号中的洞为 24 小时,但所有内容都是同步的 ((( 。

这太糟糕了。我不明白为什么会这样,最重要的是,该如何解决?


该指标使用 2 种同步方式

1 根据条数(图表上的条数应多于所需的历史条数,默认为 500 条),这一条件显然已满足。

2 根据每个货币对的零柱打开的时间 - 显然也满足了这一条件。

我认为值得增加第三种同步类型,以类比第二种同步类型,检查每个货币对的每个条形图的打开时间。

由于我现在比较空闲--我也将制作这种类型。

 
olyakish:

....

我认为值得添加第三种同步类型,以类比第二种同步类型,检查每对条形图的开盘时间。

根据您的图片和相似性,我创建了函数 bool init_tf(...)。

//+------------------------------------------------------------------+
//| 初始化相关货币对的图表
//| 和数据同步检查|
//+------------------------------------------------------------------+
//| in.|
//| mas[] 是所需字符名称的数组。
//| time_0 - 当前酒吧时间[0]|
//| count_Bars - 所需的条形图数量
//+------------------------------------------------------------------+
bool init_tf(string &mas[], datetime time_0, int count_Bars) { 
   bool     rez=false;              // 成功标志
   int      copied=0,               // 复制数据的数量
            counter=0,              // 错误计数器
            tmp_bars=0;             // 检查可用条数
   datetime tmp_time[1];            // 检查酒吧时间的数组
   
   f_comment("正在进行同步");
     
   for(int i=0; i<count_symbol; i++)  {
      //Print("i=",i," ",count_symbol," ",mas[i]);
      tmp_bars=Bars(mas[i],PERIOD_CURRENT);
      if(tmp_bars<count_Bars) { // 检查条数
         Print("i=",i," 酒吧不够(", mas[i],"-",fTimeFrameName(_Period),") MaxBars=",MaxBars," > Bars=",tmp_bars);
         counter++;
      }
      ResetLastError();
      copied = CopyTime(mas[i],PERIOD_CURRENT,0,1,tmp_time);
      if(copied < 1) { // 复制错误
         Print("i=",i,"复制错误(", mas[i],"-",fTimeFrameName(_Period),") №",_LastError," (",ErrorDescription(_LastError),")");
         counter++;
      }
      if(tmp_time[0]!=time_0) { // 时间不符
         Print("i=",i,"没有时间同步(", mas[i],"-",fTimeFrameName(_Period),") delta ="",(long)(time_0-tmp_time[0])/60," 最小");
         counter++;
      }
   }// 结束 for(int i=0; i<k; i++)
   
   if(counter==0) {  // 一切正常,没有错误
      rez=true;
      f_comment("一切都好");
   } 
   else f_comment("没有同步"+(string)counter);

   ChartRedraw( );
   return(rez);
}

我选择了 12 个将参加锦标赛的货币对。我制作了一个指标RVI_ALL ,仅用于研究同步。启动它。结果。

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 10 没有 时间同步 ( GBPJPY - M1 ) delta = 1 分钟

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 5 没有 时间同步 ( AUDUSD - M1 ) delta = 1 分钟

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 1 没有 时间同步 ( GBPUSD - M1 ) delta = 1 分钟

今天是周日,这些符号上没有条形图(最后一个条形图)。下一个刻度只在周一出现。然后我想起了这篇文章:无孔图表https://www.mql5.com/zh/articles/1407。

会有漏洞的。会有的。我们必须以某种方式对抗它们。原则上,你也可以像文章中描述的那样做。但我有一个问题。

该指标挂在一张图表上。如果这个符号发生了历史交换,我可以发现它,prev_calculated 将被重置为零。

但我怎么知道其他符号是否发生了历史交换,或者数据只是延迟了很长时间?

 
Prival:

会有漏洞的会有漏洞的必须想办法解决。原则上,你也可以像文章中描述的那样做。但我有一个问题

该指标挂在一张图表上。如果在这个符号上有历史交换,我就可以发现它,prev_calculated 将被重置为零。

但我怎么知道其他符号也发生了历史交换,或者数据只是延迟了很长时间?


1 要么在历史记录出现漏洞时不允许绘制指标,并在 "修补 "漏洞时定期轮询历史记录。(当前图表上的新刻度或计时器)。

2.或者在历史记录中的漏洞足够大的情况下,仅在漏洞前绘制指标。

并对该函数稍作修改

bool init_tf(string &mas[], datetime time_0, int count_Bars, int shift) 
и далее по тексту 
copied = CopyTime(mas[i],PERIOD_CURRENT,shift,1,tmp_time);


然后循环调用该函数(从 0 到 shiftbars)。

在这种情况下

shift

将是当前工具和 TF 上的条形图位置,我们将检查该位置是否与其他工具同步。

 

我不知道故事中是否有漏洞。

https://www.mql5.com/ru/forum/1111/8747#comment_8747

唯一的办法是复制时间并循环整个数组,但这又会让人很扫兴,因为这是一个恶性循环 ( (()

如果开发人员不改变https://www.mql5.com/zh/articles/1407 的概念来制作没有漏洞的图表,可能会发现不可能同步所有内容。

 
Prival:

我不知道故事中是否有漏洞。

https://www.mql5.com/ru/forum/1111/8747#comment_8747

唯一的办法是复制时间并循环整个数组,但这又会让人很扫兴,因为这是一个恶性循环 ( (()

如果开发人员不改变https://www.mql5.com/zh/articles/1407 的概念来制作没有漏洞的图表,可能会发现不可能同步所有内容。

使用时间[]缓冲区同步就不会出现混乱。

只需在调用报价的同时按时间进行预检查,然后一切就都同步了。

虽然我同意这种方法并不容易,而且可能会出现很多错误。

 

您好!

我对美元指数公式的正确性有疑问,也许它们是假的。

有人能详细解释一下这个公式吗?

 


"美元指数是使用 Neutron 慷慨提供给我的公式计算出来的double 类型 的值"。

为什么要引用公式和别人的名字?他脑袋里有七只眼吗?原来首先要看文章,然后问公式的作者?如果他是作者,那就给出他获得公式的链接。