测试 "CopyTicks"。

 

让我们从一个简单的问题开始--体积。下面是检测到的故障的图片。偶尔会有 "替身 "出现在卷中。


Win7-64

MT5-1085

经纪人 "Otkritie",真实服务器。

主要的指标周期看起来如下。

//---------------------------------------------------------------------
//      Внешние задаваемые параметры:
//---------------------------------------------------------------------
input int                               TickCount = 2000;
input ENUM_TICK_TYPE                    TickType = ENUM_COPY_TICKS_ALL;
//---------------------------------------------------------------------
//---------------------------------------------------------------------
MqlTick         ticks_Arr[ ];
int             copied;
//---------------------------------------------------------------------
int
OnCalculate( const int _rates_total, const int _prev_calculated, const int _begin, const double& _price[ ] )
{
        if( _prev_calculated <= 0 )
        {
                ArrayInitialize( VolumeBuffer, 0 );
        }

        copied = CopyTicks( _Symbol, ticks_Arr, TickType, 0, TickCount );
        if( copied > 0 )
        {
                for( int i = copied - 1; i >= 0; i-- )
                {
                        MqlTick tick = ticks_Arr[ i ];

                        VolumeBuffer[ _rates_total - copied + i ] = ( double )tick.volume;
//                      Print( tick.volume );
                }
        }

        return( _rates_total );
}

我没有发现 "双胞胎 "的出现有任何规律性。我希望开发者能及时解决这个问题。

附上带tick volume的指标(在MT5-1100上编译)。

附加的文件:
 
Dima_S:

让我们从一个简单的问题开始--数量。下面是检测到的故障的图片。偶尔会有 "替身 "出现在卷中。


Win7-64

MT5-1085

经纪人 "Otkritie",真实服务器。

主要的指标周期看起来如下。

我没有发现 "双胞胎 "的出现有任何规律性。我希望开发者能及时解决这个问题。

附上带tick volume的指标(在MT5-1100上编译)。

我已经就CopyTicks()联系了服务台(该函数中存在错误)。

以下是SD的答复。

这一功能仍在开发中。许多平台组件正在被修改,以提供对Tick流的全面访问。我们将不得不再等待一些时间。

 
Mikalas:

我向servicedesk询问了CopyTicks()的情况(这个函数有一个错误)。

以下是SD公司的回应。

这一功能仍在开发中。许多平台组件正在被修改,以提供对tick流的完全访问。我们将不得不再等待一些时间。

你很幸运,我还没有从serviced那里得到关于这个功能的回复......
 
Mikalas:

我向servicedesk询问了CopyTicks()的情况(这个函数有一个错误)。

以下是SD公司的回应。

这一功能仍在开发中。许多平台组件正在被修改,以提供对tick流的完全访问。我们将不得不再等待一些时间。

我明白了。因此,它目前是一个半成品。我们会再等一等))

我不明白的另一件事是,他们为什么要破坏已经在工作的东西--扩展的 "翻滚机 "模式。

 

当开发者在挠头的时候,我将建议采用MqlTick结构的 变体。

struct MqlTick
{
  datetime   time;           // Время последнего обновления цен
  uint       time_count;     // микросекунды ( крайне желательно брать с биржи )
  double     bid;            // Текущая цена Bid
  double     ask;            // Текущая цена Ask
  double     last;           // Текущая цена последней сделки (Last)
  ulong      volume;         // Объем для текущей цены Last
  ulong      interest;       // Текущая величина ОИ, после исполнения последней сделки Last
  ulong      buy_orders;     // Текущее число ордеров покупателей, после исполнения последней сделки Last
  ulong      sell_orders;    // Текущее число ордеров продавцов, после исполнения последней сделки Last
  ulong      buy_orders_vol; // Текущий объем ордеров покупателей, после исполнения последней сделки Last
  ulong      sell_orders_vol;// Текущий объем ордеров продавцов, после исполнения последней сделки Last
  char       action;         // Действие ( 'B' - покупка, 'S' - продажа )
 };

函数中的其他一切都可以保持原样。

 
Dima_S:

当开发者在挠头的时候,我将建议采用MqlTick结构的 变体。

函数中的其他一切都可以保持原样。

酷!!同意!
 
Dima_S:

当开发者在挠头的时候,我将建议采用MqlTick结构的 变体。

函数中的其他一切都可以保持原样。

我想加上交易的方向。谁是发起人(卖方或买方)?
 
Prival-2:
我想加上交易的方向。谁是发起人(卖方或买方)?
是的,省略--添加。
 
而且最好不是最后一次更新价格。更准确的可能是数据变化的时间+加上坐便器上的音量和aska上的音量(可能一次就好)玻璃。
 
是的。而且能够通过https://www.mql5.com/ru/docs/series/copyticks,获得服务器为所有这些数据积累的最深的历史,并在测试器中使用这些数据测试策略。如果我们积累每个BookEvent 的数据--那么服务器上放不下的巨大的档案就会出来)
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTicks - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

为什么要把豌豆王的所有历史保留在服务器上。你可以把深度限制在一个合理的范围内,比如说一个星期。而且可以根据要求(从文件服务器)提供更深入的历史记录。谁想要2010年的玻璃历史,没问题,下载它,然后让他们测试,直到他们的脸完全变蓝。

同时,通过洪流技术使其(历史)可供他人使用。有许多解决方案。这只是其中一个选项。