FORTS 请帮助 - 页 7

 
继续隐藏代码?
 
barabashkakvn:
继续隐藏代码?

你甚至读过这些帖子吗?

Mikalas2015.03.26 18:56儒家

你大喊大叫,说我是楚河汉界,但问题并没有解决!

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//
bool is_failed = false;
datetime start_time;
datetime end_time;
int mix_bars, rts_bars, si_bars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
    start_time = StringToTime( "2015.03.17" );
    end_time = TimeCurrent();
//--- indicator buffers mapping
  mix_bars = GetBars( "MIX-6.15" , PERIOD_CURRENT, start_time, end_time ); 
  if ( mix_bars < 1 )
  {
    is_failed = true;
    Print( "Init failed. MIX-6.15 ");
  }
  rts_bars = GetBars( "RTS-6.15" , PERIOD_CURRENT, start_time, end_time ); 
  if ( rts_bars < 1 )
  {
    is_failed = true;
    Print( "Init failed. RTS-6.15 ");
  }
  si_bars = GetBars( "Si-6.15" , PERIOD_CURRENT, start_time, end_time ); 
  if ( si_bars < 1 )
  {
    is_failed = true;
    Print( "Init failed. Si-6.15 ");
  }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator Get bars function                               |
//+------------------------------------------------------------------+
int GetBars( string symbol, ENUM_TIMEFRAMES period, const datetime start_date, const datetime end_date )
{
  if ( !SymbolInfoInteger( symbol, SYMBOL_SELECT ) )
  {
    ResetLastError();
//---    
    if ( GetLastError() != ERR_MARKET_UNKNOWN_SYMBOL )
    {
      SymbolSelect( symbol, true );
    }
    else
    {
      Print( "GetBars: Неизвестный символ - ", symbol );
      return( 0 );
    }    
  }
//---  
  if ( MQL5InfoInteger( MQL5_PROGRAM_TYPE ) == PROGRAM_INDICATOR && Period() == period && Symbol() == symbol )
  {
    Print( "GetBars: Не пройдена проверка типа программы!" );
    return( 0 );
  }  
//---
  if ( SymbolIsSynchronized( symbol ) )
  {
    return( Bars( symbol, period, start_date, end_date ) );
  }
  else
  {
    long first_date = 0;
    datetime times[1];
//---    
    if ( SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) )
    {
      if ( first_date > 0 )
      {
//--- force timeseries build
        CopyTime( symbol, period, datetime( first_date ) + PeriodSeconds( period ), 1, times );
//--- check date
        if ( SeriesInfoInteger( symbol, period, SERIES_FIRSTDATE, first_date ) )
//---        
        if ( first_date > 0 && first_date <= long( start_date ) )
        {
          return( Bars( symbol, period, start_date, end_date ) );
        } 
      }
    }
    Print( "Необходима загрузка истории с сервера!");
  }       
//---  
  return( 0 );
}  
//+------------------------------------------------------------------+
//| 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 ( is_failed )
   {
     Print( "Sorry! Get Bars failed." );
   }
   else Print( "Bingo! We done.");
//--- return value of prev_calculated for next call
   return(rates_total);
  }

我还没有写历史下载,但数据在终端中,而且第一次没有从终端中出来!

2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Необходима загрузка истории с сервера!
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Init failed. RTS-6.15 
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Необходима загрузка истории с сервера!
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Init failed. Si-6.15 
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Sorry! Get Bars failed. 

纳入囊中|编辑|删除

 

谁能解释一下。

当有数据 时,为什么要用SERIES_TERMINAL_FIRSTDATE 标识符的函数?

在终端返回FALSE?

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date )
 
Mikalas:

谁能解释一下。

当有数据 时,为什么要用SERIES_TERMINAL_FIRSTDATE 标识符的函数?

在终端返回FALSE?

5秒。我将扔在一些链接...
 
MigVRN:
5秒。我将扔在一些链接...

从帮助组织数据访问-->下载历史记录的示例脚本。

Если мы успешно прошли все проверки, то сделаем последнюю попытку обойтись без обращения к торговому серверу. Сначала узнаем начальную дату, для которой доступны минутные данные в формате HCC.
Запросим это значение функцией SeriesInfoInteger() с модификатором SERIES_TERMINAL_FIRSTDATE и опять сравним со значением параметра start_date.

   if(SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date))
     {
      //--- there is loaded data to build timeseries
      if(first_date>0)
        {
         //--- force timeseries build
         CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times);
         //--- check date
         if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
            if(first_date>0 && first_date<=start_date) return(2);
        }
     }
 
 
MigVRN:

一切都像文件中说的那样发生。:)

勾画了一个指标和一个专家顾问,用于检查+视频上的结果。

1) 首先,我在图表上抛出一个专家顾问,它在OnTick里面有一个函数,工作时间为20秒。

其结果是,图表继续工作,并按其应有的方式显示一切。该图表也如预期的那样工作。

2) 然后我们在图表上应用具有OnCalculate 功能的指标,持续20秒。

结果是--聊天挂起。同时,下一个具有相同符号的聊天窗口也会挂起,其中设置了不同的周期。玻璃继续像它应该的那样工作。在该功能发挥作用后,一切都会恢复正常。

3) 视频中没有显示 - 但如果你在一个聊天室中投下一个指标(设置为60秒),而在另一个聊天室中投下一个EA - EA不会开始工作,直到指标在另一个聊天室中出现故障!这是不可能的。

另外附上视频--在我的浏览器中速度变慢了。

不妙,多线程在哪里?

在指标工作之前,刻度线不会到达EA!

 
Serj_Che:

多线程到底去哪儿了?

在指标工作之前,刻度线不会到达EA!

滴答声并没有进入滴答器,它们只是没有在图表上显示出来。
 
Serj_Che:

多线程到底去哪儿了?

在指标工作之前,刻度线不会到达EA!

一直以来都是这样的。

米卡拉斯
竞价已经到了杯子里,只是没有在图表上显示出来。

EA的刻度线不起作用。还有聊天记录上的其他内容。我没有检查定时器和自定义事件

米卡拉斯

帮助 数据访问组织 --> 载入历史的脚本实例。

也来自帮助

...HCC格式的服务文件作为数据源,为所要求的 时间范围建立HC格式的价格数据。HC格式的数据是时间序列,它为快速访问做了最大的准备。它们只在图表或mql5程序的要求下创建,数量不超过 "图表中的最大条数 "参数,并被保存在扩展名为hc的文件中供进一步使用。

为了节省资源,时间框架上的数据只有在需要时才会被加载并存储在RAM中。 如果长时间没有请求,数据就会从RAM中卸载,并保存到一个文件中。每个时间段的数据都是独立于其他时间段的现成数据 准备的。数据准备和可用性的规则对所有的时间框架都是一样的。也就是说,尽管HCC格式的数据存储单位是分钟条,但HCC格式的数据的可用性并不意味着M1时间段的HC格式数据在同一卷中的可用性和可及性。

 
Mikalas:

谁能解释一下。

当有数据 时,为什么要用SERIES_TERMINAL_FIRSTDATE 标识符的函数?

在终端返回FALSE?

因为这是它第一次访问这个特定系列。
 
Mikalas:

从数据访问组织的帮助-->下载历史记录的示例脚本。

你去吧。你是在正确的轨道上。为了检查终端到底是如何工作的,而不是你想象的那样,一个简单的检查算法。

  • 在终端打开一个 "MIX-6.15 M1 "图表。图表上是第一个帖子中的指标。
  • 从终端打开 "开放数据目录"。
  • 以这种方式寻找 "MIX-6.15 "这个符号的历史...\Terminal\D0*******CF37AD**55**0E51F**75\bases\Open-Demo\history
  • 卸载终端。
  • 删除文件夹"MIX-6.15"。
  • 启动终端。我们看到了错误。在图表上开个小玩笑--改变几次时间框架。例如,多次改变M1和M5。该错误消失了。这意味着另一个时间框架的数据(与代码中要求的不同)已经准备好了。如果你不想手动改变时间框架 - 你必须自己准备数据。
  • 重新加载终端 - 没有错误。
  • 如果不清楚,那就重复实验。