两个期货之间的价差

 

大家下午好!

我写了一个指标,画出两个期货之间的价差。我有两个问题。

1)指标是疯狂的故障,有时显示,有时不显示,然后显示一些乱七八糟的东西(我必须按刷新,然后它似乎落到实处)。

2)作者对两个期货的价格进行同步的算法:因为期货可能经常缺乏一些或其他的条子(由于流动性低),那么就存在一个问题,使他们的条子同步,以获得他们之间的真实价差。我在论坛上搜索了一下,没有发现关于这个问题的任何信息。最后,我想到了以下方法:我们取4个时间序列--1号工具的条形时间,1号工具的条形收盘价,2号工具的条形时间,2号工具的条形收盘价如果我们在时间序列中指定相同的条数,它们对一个工具来说是相同的,对另一个工具来说也是相同的(绑定时间和收盘价)。只剩下使一个仪器的时间相对于另一个仪器同步。下面是一个根据1号工具的数据建立价差的例子:我们取1号工具的第i个收盘价,并从中减去2号工具的价格,其指数等于2号工具的时间阵列指数,其时间值与1号工具的阵列相吻合。

   if(Flag==SincForIn1)									// Синхронизируем по первому инструменту.
      {
       while(i>=0)                                                			// Цикл перебора для расчета спреда для всех непосчитанных баров, от самого последнего i до нулевого.
         {
          SpreadBuffer[i]=closeIn1[i]-closeIn2[ArrayBsearch(timeIn2,timeIn1[i])]; 	// Расчет спреда (существуют различия в количесве баров двух инструментов, за основу берутся бары Инструмента №1)
          i--;                                                    			// Снижение индекса бара для перехода расчетов к следующему бару и так до нулевого включительно.
         }

我想不出有什么更好的办法。我想听听你的建议,也许有一个更简单、更清晰、更有效的方法来建立两个期货的同步价差图。也许那时它就不会再出现故障了,或者我写的是 "酷 "的指标......。

我把指标附在帖子上。

提前感谢。

附加的文件:
Spread.mq5  24 kb
 
iiivasyaiii:

大家下午好!

我写了一个指标,画出两个期货之间的价差。我有两个问题。

1)指标是疯狂的故障,有时显示,有时不显示,然后显示一些乱七八糟的东西(我必须按刷新,然后它似乎落到实处)。

2)作者对两个期货的价格进行同步的算法:因为期货可能经常缺乏一些或其他的条子(由于流动性低),那么就存在一个问题,使他们的条子同步,以获得他们之间的真实价差。我在论坛上搜索了一下,没有发现关于这个问题的任何信息。最后,我想出了以下方法:我们采取4个时间序列--乐器#1的条形时间,乐器#1的条形收盘价,乐器#2的条形时间,乐器#2的条形收盘价如果我们在时间序列中指定相同的条数,它们对一个工具来说是相同的,对另一个工具来说也是相同的(绑定时间和收盘价)。只剩下使一个仪器的时间相对于另一个仪器同步。下面是一个根据1号工具的数据建立价差的例子:我们取1号工具的第i个收盘价,并从中减去2号工具的价格,其指数等于2号工具的时间阵列指数,其时间值与1号工具的阵列相吻合。

我想不出有什么更好的办法。我想听听你的建议,也许有一个更简单、更清晰、更有效的方法来建立两个期货的同步价差图。也许那时它就不会再出现故障了,或者我写的是 "酷 "的指标。

我把指标附在帖子上。

提前感谢。

你必须采取买入和卖出价格来建立价差。该图表是由flipper绘制的,这将是不正确的。
 
Maxim Romanov:
我需要采取买入价和卖出价来建立价差。图表是由翻页器绘制的,这将是不正确的。

马克西姆,感谢你对我的问题的关注。

我对你的回答有几点意见。

1)已经发生(最后一次)的交易价格没有被画出来,这不是外汇。如果你的意思是别的,请更详细地解释。

2)出价和要价当然好,但它的复杂程度要高一个数量级。试图在上面为主要价差写上两条附加线,如买入价差和卖出价差。我试过一次(顺便说一下,它被这样画了很久),但后来我改变了代码中的一些东西,它就消失了,再也没有重新出现)),如果我需要,我可以把他的代码发给你。而bid和ax的主要缺点是:如果我记得,bid和ax的数据是存储在最近的2000个点上的,所以不能对它进行长时间的分析。

因此,请让我们 先在收盘价 上建立两个工具之间的价差。我使用ArrayBsearch()来同步两个工具的价格的方法是否正确,还是有更简单的方法?

 
iiivasyaiii:

马克西姆,感谢你对我的问题的关注。

我对你的回答有几点意见。

1)发生 (最后) 的交易价格 没有被画出来,这不是外汇

有了这样的知识,你再写这样的指标还为时过早。

 
iiivasyaiii:

大家下午好!

我写了一个指标,画出两个期货之间的价差。我有两个问题。

1)指标是疯狂的故障,有时显示,有时不显示,然后显示一些乱七八糟的东西(我必须按刷新,然后它似乎落到实处)。

2)作者对两个期货的价格进行同步的算法:因为期货可能经常缺少一些或其他的条子(由于流动性低),那么就存在一个问题,即同步它们的条子以获得它们之间的真实价差。我在论坛上搜索了一下,没有发现关于这个问题的任何信息。最后,我想到了以下方法:我们取4个时间序列--1号工具的条形时间,1号工具的条形收盘价,2号工具的条形时间,2号工具的条形收盘价如果我们在时间序列中指定相同的条数,它们对一个工具来说是相同的,对另一个工具来说也是相同的(绑定时间和收盘价)。只剩下使一个仪器的时间相对于另一个仪器同步。下面是一个基于1号工具数据的价差形成的例子:我们取1号工具的第i个收盘价,并从其中减去2号工具的价格,其指数等于2号工具的时间阵列指数,其时间值与1号工具的阵列相吻合。

我想不出有什么更好的办法。我想听听你的建议,也许有一个更简单、更清晰、更有效的方法来建立两个期货的同步价差图。也许那时它就不会再出现故障了,或者我写的是 "酷 "的指标......。

我把指标附在帖子上。

我已经把它附在帖子里了。 先谢谢你。

日安!

1.你必须写在 "股票交易 "部分。

2.你不能通过条形来同步2个期货。

你应该把其中一个期货的条形图作为基础(流动性最好的SBRF 9.20)。

3.为了全面了解价差,你应该采取的不是收盘,而是点位,并将其与选定的一个主要期货的条形图同步。

4.为了快速重新计算,你应该记住最后计算的位置。

与酒吧时间同步的价差重新计算的代码示例

int pr_pos = 0;
            int sec_pos = 0;
            bool is_found;
            int pr_mem = 0;
            int sec_mem = 0;
            for(int i = 0; i < a_bars; i++)
            {
              is_found = false;
              while(pr_pos < pr_cnt) 
              {
                if((ulong(data_time[i].time) <= ulong(pr_ticks[pr_pos].time)) &&
                   (ulong(data_time[i].time) + 60 > ulong(pr_ticks[pr_pos].time)))
                {
                  pr_mem = pr_pos;
                  while(sec_pos < sec_cnt) 
                  {
                    if((ulong(data_time[i].time) <= ulong(sec_ticks[sec_pos].time)) &&
                       (ulong(data_time[i].time) + 60 > ulong(sec_ticks[sec_pos].time)))
                    {
                      is_found = true;
                      sec_mem = sec_pos;
                      if((sec_ticks[sec_pos].bid > 0.0) && (pr_ticks[pr_pos].ask > 0.0) &&
                         (sec_ticks[sec_pos].ask > 0.0) && (pr_ticks[pr_pos].bid > 0.0))
                      {
                        data_time[i].hi_value = sec_ticks[sec_pos].bid - pr_ticks[pr_pos].ask;
                        data_time[i].low_value = sec_ticks[sec_pos].ask - pr_ticks[pr_pos].bid;
                      }
                      break;
                    }
                    sec_pos++;
                  }
                  break;
                }
                pr_pos++;
              }
              if(is_found == false)
              {
                pr_pos = pr_mem;
                sec_pos = sec_mem;
              }
            }
 
Alexey Viktorov:

有了这样的知识,你再写这样的指标就有点早了。

既然你这么聪明,也许你可以告诉我如何通过收盘价 来同步两个价格系列;)

 
prostotrader:

下午好!

1.你需要写到 "交易所交易 "部分。

2.不可能通过条形来同步2个期货。

你应该把其中一个期货的条形图作为基础(流动性最好的SBRF 9.20)。

3.为了全面了解价差,你应该采取的不是收盘,而是点位,并将其与选定的一个主要期货的条形图同步。

4.为了快速重新计算,你应该记住最后计算的位置。

一个与酒吧时间同步的价差重新计算代码的例子

Prostotrader,非常感谢你的提示!有趣的解决方案,我现在就试试,以后再报告。

 
iiivasyaiii:

既然你这么聪明,也许你可以告诉我如何通过收盘价 来同步两个价格系列;)

你已经被告知问题的实质。你不能通过交易价格建立价差(更不用说收盘价了!),因为慢速段可能在很长一段时间内没有任何交易,即使有,也会与快速段的交易价格不同步。也就是说,这种信息的价值是零。市场上总是(或几乎总是)有当前的买价和卖价,应该分析的是它们。

 
iiivasyaiii:

马克西姆,感谢你对我的问题的关注。

我对你的回答有几点意见。

1)已经发生(最后一次)的交易价格没有被画出来,这不是外汇。如果你的意思是别的,请更详细地解释。

2)出价和要价当然好,但它的复杂程度要高一个数量级。试图在上面为主要价差写上两条附加线,如买入价差和卖出价差。我试过一次(顺便说一下,它被这样画了很久),但后来我改变了代码中的一些东西,它就消失了,再也没有重新出现)),如果我需要,我可以把他的代码发给你。而bid和ax的主要缺点是:如果我记得,bid和ax的数据是存储在最近的2000个点上的,所以不能对它进行长时间的分析。

因此,请让我们 先在收盘价 上建立两个工具之间的价差。我使用ArrayBsearch()来同步两个工具的价格的方法是否正确,还是有更简单的方法?

我不是一个程序员,我不需要代码,我不能用代码来帮助。但我将在本质上给你一个提示。所以,交易所的工具是由终端的价格建立的,正如prostotrader所写的,通过接近的价格来同步它们是不正确的。按刻度,是的,它将是正确的。立即寻找正确的方法,为什么要犯错误。)
 
prostotrader:

下午好!

1.你需要写到 "交易所交易 "部分。

2.不可能通过条形来同步2个期货。

你应该把其中一个期货的条形图作为基础(流动性最好的SBRF 9.20)。

3.为了全面了解价差,你应该采取的不是收盘,而是点位,并将其与选定的一个主要期货的条形图同步。

4.为了快速重新计算,你应该记住最后计算的位置。

一个与酒吧时间同步的价差重新计算代码的例子

Prostotrader,你好!请告诉我,我不太理解你的代码。

1) 你是使用CopyTicksRange还是CopyTicks函数?

2)这些函数的描述说,它们可以复制不超过2000点,这意味着这个指标不能分析更长的历史?

 
Dmi3:

你已经被告知问题的实质。价差不能以交易价格为基础(更不用说收盘价了!),因为慢速段可能在很长一段时间内没有任何交易,即使有,也会与快速段的交易价格不同步。也就是说,这种信息的价值是零。市场上总是(或几乎总是)有实际的买价和卖价,我们必须分析的正是这些价格。

我并不质疑出价更准确(尽管当我有一个短时间的指标显示三种价差:翻牌、要价-珠子和出价-要价,翻牌大部分时间都在后两者之间,这表明一般来说流动性工具的翻牌价是足够的)。

然后让我们想想如何以最不耗费资源的方式进行升/降价同步,而且最好是有深厚的历史。

例如,Prostatrader提供了一个有趣的选项(上文)。