许多人感兴趣的话题:MetaTrader 4和MQL4的新内容 - 即将发生的重大变化 - 页 49

 
hrenfx:


你不能

一个在厨房里长大的人说的废话))。
 
Avals:
别废话了,继续公关厨房吧;)

杰克特,根据你的分类,不要玷污你在这里的 "小人物和公关人员 "的形象。转到你的QQ

P.S. 对于交易者来说,有一个扫盲的 机会,他们可以从平时的交流中补充对外汇市场现实的知识和它的各种特征。拓宽你的视野!

Poul Trade Forum: Два ку
  • forex.kbpauk.ru
Как ущербный, могу позволить себе написать правду. И паук и qq - для новичка полное дерьмо. Когда человек, вне зависимости от опыта, приходит на рынок, он сталкивается со сложной задачей: найди то, не знаю что. Но чтобы был профит. И самое сложное определиться, ГДЕ именно копать и КАК копать. На форумах этой информации практически нет. А если и...
 
hrenfx:
杰克特,根据你的分类,不要玷污你在这里的 "小人物和公关人员 "的形象。转到你的QQ
这里的人大多不是傻瓜,而你是唯一的公关人员dc)
 

当然,MetaQuotes对存储历史的格式(MqlRates)做得过多(过少)。 这是可以理解的。 在开发该格式时,固定点差在外汇市场占主导地位,而市场(浮动)点差仍是异类。尽管很明显,即使是固定的价差事实上也是浮动的,因为经纪公司 "在新闻和市场快速变化的时刻不保证其固定性"(这里的倒逗号代表的是那个时期几乎所有经纪公司的典型报价的引用)。

但时代变了,我们拥有的是--价差在每一个刻度上都在浮动,这没有关系。只是历史上的引文没有反映出来。 很遗憾。

在历史上,每个条形图只有一个点差值被存储。而且现在还不够,它导致了在历史上进行测试时的扭曲,因为实际交易历史和测试器中的交易没有重合,即使经纪人提供了绝对诚实的(对应于实际的tick-feed翻译)历史基础。 原因是MqlRates格式的描述能力不足。

struct MqlRates
  {
   datetime time;         // время начала периода     8 байт
   double   open;         // цена открытия             8 байт
   double   high;         // наивысшая цена за период  8 байт
   double   low;          // наименьшая цена за период 8 байт
   double   close;        // цена закрытия           8 байт   
   long     tick_volume;  // тиковый объем           8 байт  
   int      spread;       // спред                  4 байта
   long     real_volume;  // биржевой объем            8 байт
  };
// итого: size_of(MqlRates) = 52 байта 

这种结构假设了一个条形图内价差的不变性,这与当前的交易现实不相符。

我们进一步讨论 "完整 "的格式可能是什么,我有条件地把它称为 "Mql_6_Rates",以表明它目前不被支持。

下面是两种变体。 第一种是包装结构(用于磁盘),没有通过特殊算法进行压缩。它可以被压缩得小很多倍(2-3,大概),以减少传输流量。 这里不讨论压缩的格式。

struct Mql_6_PackedRates  
  {
   time_t time;            // время начала периода  4 байта  // восьмибайтный time64_t неактуален до 2038 года
   float    average_price; // средняя цена бара грубо (на три значащих цифры меньше точности _digits) 4 байта
   float    d_open;        // поправка к цене открытия 4 байта
   float    d_high;        // поправка к наивысшей цене за период 4 байта
   float    d_low;         // поправка к наименьшей цене за период 4 байта
   float    d_close;       // поправка к цене закрытия 4 байта
   ushort   spread;        // средний спред 2 байта
   char     d_open_spread; // поправка к спреду открытия 1 байт
   char     d_high_spread; // поправка к спреду high 1 байт
   char     d_low_spread;  // поправка к спреду low 1 байт
   char     d_close_spread;// поправка к спреду close 1 байт
   uint     tick_volume;   // тиковый объем 4 байт
   uint     real_volume;   // биржевой объем  4 байт
   double   OpenBid() {return (average_price+d_open); } // функции на лету вычисляющие точные значения
   double   OpenAsk() {return (average_price+d_open+OpenSpread()); }
   double   HighBid() {return (average_price+d_high); }
   и т.д...... // функции на лету вычисляющие точные значения
   ...
   ...
   double OpenSpread() { return ((spread+d_open_spread) * _digits); }
   ...
   и т.п ......
   Mql_6_Rates UnpackRates() { Mql_6_Rates Rates; ..../*заполняем*/.....  return (Rates);}
  };
// Итого у меня получилось 38 байт, всё правильно? Вся информация об 4 точках bid-ask упакована без искажений

包装 "格式应该是在交易者的磁盘上存储时的最佳状态。 当从磁盘加载到内存时,它可以被即时解包,解包功能被 "附加 "到结构中。

解压后的历史(用于从MQL访问)可以是,比如说,这个。

struct Mql_6_Rates
  {
   datetime time;         // время начала периода     8 байт
   double   open_bid;     // цена открытия             8 байт
   double   open_ask;     // цена открытия             8 байт
   double   high_bid;     // наивысшая цена за период  8 байт
   double   high_ask;     // наивысшая цена за период  8 байт
   double   low_bid;      // наименьшая цена за период 8 байт
   double   low_ask;      // наименьшая цена за период 8 байт
   double   close_bid;    // цена закрытия           8 байт   
   double   close_ask;    // цена закрытия           8 байт   
   long     tick_volume;  // тиковый объем           8 байт  
   long     real_volume;  // биржевой объем            8 байт
  };

//итого = 88 байт

它比现在要大,但价差是在酒吧的所有固定点计算的。也就是说,如果我们必须按照传统的方案{开盘+高点+低点+收盘}以分钟为单位来写信息,那么我们应该 "完整地 "写。

在我看来,这些信息是多余的,它往往会在开盘 点上造成最大的错觉。 不同符号的开盘时刻并不一致,而恰恰在分钟开始的时刻(天文数字),符号上的买卖价格与最后的交易出价相对应,即收盘价。 因此,测试分钟的最合适格式(传统和常识之间最健康的妥协)可以是如下的

struct Mql_6_Rates
  {
   datetime time;         // время начала периода     8 байт
   double   high_bid;     // наивысшая цена за период  8 байт
   double   high_ask;     // наивысшая цена за период  8 байт
   double   low_bid;      // наименьшая цена за период 8 байт
   double   low_ask;      // наименьшая цена за период 8 байт
   double   close_bid;    // цена закрытия           8 байт   
   double   close_ask;    // цена закрытия           8 байт   
   long     tick_volume;  // тиковый объем           8 байт  
   long     real_volume;  // биржевой объем            8 байт
  };

//итого = 72 байта

//在打包磁盘格式中,相应的节省将是另外7个字节,即SizeOf(Mql_6_PackedRates)将减少到31字节。

对于生态(最合理的)测试 "通过开盘价",应采取一分钟的天文开始时间,即上一栏的收盘价。在这种情况下,将实现精确的多币种价格同步。这种同步性对于调试交易市场订单的多币种EA至关重要。 对于限价和止损订单交易,每个条形上的极值信息至关重要。 它也完全可以用我们正在讨论的格式。

--

实际上,我现在正在为自己的目的开发这些格式。 在这里公布它们只是我开发的一个副产品。 也许有人会发现它们很有用。

 
MetaDriver:


在一个环保的(最合理的)"开盘价 "测试中,应该采取分钟的天文开始时间,即前一个条形图的收盘价。

忽视差距在某些情况下将是至关重要的

p.s. 如果你需要节省流量,你可以存储偏移量,而不是绝对 价格值,对于这一点,double是非常重要的。

Документация по MQL5: Математические функции / MathAbs
Документация по MQL5: Математические функции / MathAbs
  • www.mql5.com
Математические функции / MathAbs - Документация по MQL5
 
MetaDriver:

当然,MetaQuotes对存储历史的格式(MqlRates)做得过多(过少)。 这是可以理解的。 在外汇市场上开发这种格式时,固定点差占上风,市场(浮动)点差 仍是异类。尽管很明显,即使是固定的点差事实上也是浮动的,因为经纪公司 "在市场出现新闻和快速变化的时候不保证其固定性"(这里的倒逗号代表引用了那个时期几乎所有经纪公司的一个典型报价)。

MT5最初被定位为一个交易所终端。交易所的ECN定价法已经实施了很长时间。也就是说,业绩不佳的借口是站不住脚的。他们的团队中没有(现在也没有)一个强大的自动交易商,可以听取他们的意见。显然,只有 "成功的平台开发年限 "比健全的逻辑规则。
 
hrenfx:
MT5最初被定位为一个交易所终端。而在交易所的ECN-价格形成法则是很久之前的事。所以,缺陷的借口是站不住脚的。他 们的团队中没有(现在也没有)一个强大的自动交易商,可以听取他们的意见。显然,只有 "成功的平台开发年限 "比健全的逻辑规则。

我不是要找借口。要找借口,你必须先指责。我真的没有时间....。:)

 

那么它就是一种放纵(应该对这种事情保持警惕--它比赤裸裸的批评更糟糕)。

MetaDriver:

当存储历史数据的格式(MqlRates)被开发出来时,MetaQuotes当然是做得过头了(underdid)。这是可以理解 的。 当该格式在外汇市场被开发出来时,固定点差占上风,市场(浮动)点差仍然是异类。尽管很明显,即使是固定的点差事实上也是浮动的,因为经纪公司 "在市场出现新闻和快速变化的时候不保证其固定性"(这里的倒逗号代表引用了那个时期几乎所有经纪公司的一个典型报价)。

 
Avals:

忽视差距在某些情况下将是至关重要的

有这样一封信。但是差距(报价的不连续跳动)可能在任何时候发生,而不仅仅是在条形图的开头。 因此,任何 "变薄 "的格式,从定义上讲都不是没有罪过的。 只有在ticks中才是完整的,而且在历史中可能更完整。 我正试图为自己制定一个分钟格式,而我已经找到了这样一个折衷办法。我可能会像上面描述的那样(没有Open,只有{Hi-Lo-Close}),我理解所有的缺点,这只是我为我的测试员所做的一个版本的编码。 我也预见到用原始的ticks,或用任何方法的人工稀释(用保存ticks格式{bid-ask-time})来测试。
 
hrenfx:

然后就是居高临下(小心这种东西--比赤裸裸的批评更糟糕)。

:-)

对我来说,现在喝borjomi或者弥补已经有点晚了。地狱里早已为我保留了一个位置。

我不认为试图不加判断地理解是我最严重的罪过。;)