Использование данных GPBUSD при тестировании стратегии на EURUSD.

 

Подскажите пожалуйста subj.
Например при тестировании эксперта на EURUSD
срока Price = MarketInfo("GBPUSD",MODE_BID);
выдаёт 0.
При установке на RealTime график выдаются нормальные данные.
Можно ли вообще при тестиронии стратегии на одном иструменте
брать данные другого инструмента?

 
Необходимо, чтобы была история по GBPUSD на заданном тайм-фрейме и диапазоне тестирования.

Особенности и ограничения тестирования торговых стратегий в MetaTrader 4

Если активно используются другие символы и периоды, то желательно их предварительно закачать на всю доступную глубину

 
История есть.
Обьясняю подробнее.
Есть следующий кусок кода:
int start()
{
//----
RefreshRates();
NextPrice = MarketInfo("GBPUSD",MODE_BID);
Print (NextPrice);
lot = NormalizeDouble(AccountFreeMargin()*Risk / 100, 1);
if (lot > 20) lot = 20; if (lot < 0.1) return(0);
int total;
total=OrdersTotal();
и т.д.

При тестирровании на GBPUSD выдаются определённые результаты,
т.е. команда Print выводит правильные данные о текущей цене.

Если включить тестирование на EURUSD, Print начинает выдавать 0.
 
Всё, я уидел ответ на свой вопрос.

  • Торговля разрешена только на тестируемом символе, портфельного тестирования нет

    Попытки совершить сделку на чужом символе вернут ошибку


  • Спасибо и очень жаль.

     

    Так, стоп.
    Перечитал Особенности и ограничения тестирования еще раз, перепроверил код.
    Всё-таки портфельное тестирование тут не при чём.
    При попытке совершить сделку на чужом символе действительно возвращается ошибка.
    Но вышеописаный код озвращает не ошибку, а ноль.
    Почему?

     
    При тестировании на одном символе полностью запрещен доступ к данным других символов. Именно поэтому дается ответ 0 на попытку запроса цены. Откуда тестер может знать что было по фунту в какой-то момент времени, если сейчас идет разбор евро?
     
    Еще раз. Какое моделирование? Сделайте распринтовку, чтобы
    а) можно было увидеть смоделированную дату и значение символа
    б) чтобы Вы смогли посмотреть в своей History наличие котировок на эту дату и по этому тайм-фрейму.

    Да, не вычисляется.

    Вот код:

    //+------------------------------------------------------------------+
    //|                                              CheckMarketInfo.mq4 |
    //|                      Copyright © 2007, MetaQuotes Software Corp. |
    //|                                    'Использование данных GPBUSD при тестировании стратегии на EURUSD.' |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2007, MetaQuotes Software Corp."
    #property link      "'Использование данных GPBUSD при тестировании стратегии на EURUSD.'"
     
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
      {
    //----
       Print(TimeToStr(Time[0]),"  Bid=",MarketInfo("GBPUSD",MODE_BID));
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
     

    to Maxor
    С другого символа в тестере Вы можете использовать только те данные, которые вернут функции iOpen(), iHigh(), iLow(), iClose(). А внутрь, например, часового бара другого символа Вы можете проникнуть только, запросив значения вышеуказанных функций с мЕньших ТФ.

     
    Ответ Renat-у:
    1. С уверенностью заявляю история есть.
    2. Цитата - "При тестировании на одном символе полностью запрещен доступ к данным других символов."

    Не уверен.
    Например следующий код при запуске тестирования на EURUSD совершенно нормальные результаты выдаёт.
    ....
    if (iClose("GBPUSD",0,0) > iOpen("GBPUSD", 0,0))
    {
    Print (iClose("GBPUSD", 0, 0));
    ....

    Т.е. Print выдаёт то, о чём его просят.

    Далее:
    Ответ Rosh-у:

    Да не важно какое моделирование, воткните в код то, что написано выше, запустите тестирование на EURUSD - работает.
    Воткните вот это:
    ...
    Print (MarketInfo("GBPUSD", MODE_BID);
    ...

    Выдаёт ноль.

    Повторяю - тестирование на EURUSD...
     
    Хм.... Долго как я ответ писал... ещё 2 ответа успели появиться.. .
     
    KimIV писал (а):

    to Maxor
    С другого символа в тестере Вы можете использовать только те данные, которые вернут функции iOpen(), iHigh(), iLow(), iClose(). А внутрь, например, часового бара другого символа Вы можете проникнуть только, запросив значения вышеуказанных функций с мЕньших ТФ.


    Спасибо. Дельный совет. Попробую.
    Причина обращения: