错误、漏洞、问题 - 页 1803

 
Slawa:
或者,就像刚才在这里说的,问一下条数,也是几个周期。
如果在很长的空闲时间后有一次对Bars()函数的调用,启动指标--这是否类似于检查SymbolIsSynchronized()?
 
Slawa:
这也适用于指标。创建一个1分钟的定时器,并要求提供所有感兴趣的时间序列的条数

通过检查定时的事实,定时不被保持。
把这一点添加到文档中会很好...
 
如果你在Metaquotes-Demo的市场观察中只留下MOEX符号,TimeCurrent 将滞后15分钟。只要增加一个外汇符号,TimeCurrent就会一下子向前跳15分钟。
 

亲爱的开发者们!我再次要求尽快为情感值(SYMBOL_SESSION_...)和tumbler( OnBookEvent())添加时间,单位为ms。给一个机会,使所有可用的数据同步化!

 

Metaquotes-Demo,符号DIG-20170330

SymbolInfoDouble(Symb,::SYMBOL_ASK) = 29006.0
SymbolInfoDouble(Symb,SYMBOL_SESSION_PRICE_LIMIT_MIN) = 29528.0
(ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(Symb,SYMBOL_TRADE_MODE) = SYMBOL_TRADE_MODE_FULL (4)

SYMBOL_SESSION_PRICE_LIMIT_MIN 中的错误 高于Ask - 不能设置BuyLimit。

 
fxsaber:

请分享你的自行车:一个告诉你一个符号是否准备交易的bool函数。

ENUM_DAY_OF_WEEK GetDayOfWeek( const datetime time )
{
  MqlDateTime sTime = {0};

  TimeToStruct(time, sTime);
  
  return((ENUM_DAY_OF_WEEK)sTime.day_of_week);
}

// true - находимся в торговой сессии
bool SessionTrade( string Symb = NULL )
{  
  datetime TimeNow = TimeTradeServer();
  
  const ENUM_DAY_OF_WEEK DayOfWeek = GetDayOfWeek(TimeNow);
  
  TimeNow %= 24 * 60 * 60;
  
  if ((Symb == NULL) || (Symb == ""))
    Symb = Symbol();  
  
  bool Res = false;
  datetime From, To;    

  for (int i = 0; SymbolInfoSessionTrade(Symb, DayOfWeek, i, From, To) && (!Res); i++)
    Res = ((From <= TimeNow) && (TimeNow < To));
    
  return(Res);
}

// Возвращает true, если символ торгуемый. Иначе - false.
bool SymbolTrade( string Symb = NULL, const int Pause = -1 )
{
  MqlTick Tick;
  
  if ((Symb == NULL) || (Symb == ""))
    Symb = Symbol();
    
  if (Pause >= 0)
    Sleep(Pause); // Если только что произошло добавление символа в Обзор рынка, нужно дождаться поступления данных в Marketwatch.
  
  return(SymbolInfoTick(Symb, Tick) ? ((Tick.bid != 0) && (Tick.ask != 0) && SessionTrade(Symb) &&
         ((ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(Symb, SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_FULL)) : false);
}
 
fxsaber:
   
  if (Pause >= 0)
    Sleep(Pause); // Если только что произошло добавление символа в Обзор рынка, нужно дождаться поступления данных в Marketwatch.
   
如果它是在一个指标中呢?
 
Artyom Trishkin:
如果它是在一个指标中呢?
因此,腿部

关于交易、自动交易系统和交易策略测试的论坛

虫子,虫子,问题

fxsaber, 2017.02.14 12:31

在SymbolSelect(true)之后,我立即要求提供价格,结果是零。随着_LastError == 0,SymbolInfoTick == true。

我如何知道Marketwatch的新符号的价格已经送到了Marketwatch?

所以,如果没有做SymbolSelect(true),而且我们没有特别设置Pause,那么就不会有滑点。
 
fxsaber:
因此,腿。
因此,如果没有做SymbolSelect(true),而且你没有特别设置Pause,就不会有滑点。
说实话,我不明白。我想知道:你如何知道一个指标中的符号是否准备好了?Sleep() 在指标中不起作用。
如果指标在事先不知道的符号上绘制一些统计数据,当你从面板上选择下一个符号时,你往往不能一下子得到它的数据,表格中会包含错误的信息...我怎样才能确保从符号中收到的数据是正确的,而且数量足够多,以获得进一步的正确计算?
 
Artyom Trishkin:
说实话,我没有得到它。我想知道:你如何知道一个指标中的符号是否准备好了?Sleep()在指标中不起作用。如果指标在表中显示一些事先不知道的符号的统计数据,那么当你从面板上选择下一个符号时,你往往不能立即得到它的数据,而在表中显示错误的信息...对于进一步的计算,我怎样才能确定从符号中获得的数据是正确的,并且有足够的数量来获得进一步的正确计算?
只有当符号不在市场观察中时才需要睡眠。对于在指标开始之前(和期间)处于市场观察中的所有符号,不需要滑点。