MarketInfo( MODE_SPREAD ) от "чужого" символа в тестере МТ4

 

Помогите пожалуйста разобратся:

Тестую советника, который кроме Symbol() изпользует еще и другие 2 пары (base_home и home_base). Они нужны чтобы вычислять прибыль в валюте брокера если текущая пара не включает в себя валюту брокера. Например - советника сбросили на GBPUSD, а валюта брокера EUR [1] или CHF [2]. Вычисляются base_home и home_base путем MarketInfo(symb, MODE_SPREAD ), так как SPREAD мне и так и так нужен для других вычислений. Да я знаю про OrderProfit но специфика такова что я считаю прибыль так сказать "виртуалную" т.е. не ордеров у меня как тоаковых в етот момент нет.

Рассматриваю подробнее оба примера которые привел чтобы было понятнее:

----------

Пример [1]: Советник на GBPUSD, валюта брокера EUR:

base = Right( Symbol(), 3 ); // = "USD";

home = AccountCurrency(); // = "EUR";

base_home ="USDEUR"; // Invalid! MarketInfo will give ERR_UNKNOWN_SYMBOL.

home_base = "EURUSD"; // MarketInfo should not give error so we know we must use 'home_base' (EURUSD).

----------

Пример [2]: Советник на GBPUSD, валюта брокера CHF:

base = Right( Symbol(), 3 ); // = "USD";

home = AccountCurrency(); // = "CHF";

base_home ="USDCHF"; // OK. MarketInfo should not give error so we we must use 'base_home' (USDCHF).

home_base = "CHFUSD"; // Invalid! MarketInfo will give ERR_UNKNOWN_SYMBOL.

----------

Все бы хорошо но в тестере получется ошибка: ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059). Тоесть я так понимаю - в тестере MarketInfo( MODE_SPREAD ) на другие пары кроме Symbol не доступен?


Что же мне делать? Во первых - как проверить которая комбинация верна (base_home или home_base)? Во вторых, как сказал - мне нужен spread cross-a...

Я могу кое-как справится с обеими проблемами задав массив с именами всех пар/кроссов и их спредами но ето решение выглядит както не-елегантно и уж конечно не достоверно, ведь спред динамичен... Кто нибудь может подсказать что нибудь поуниверсальнее?

 
4x4ever:

Помогите пожалуйста разобратся:

Тестер позволяет получать данные с другого символа. Он не позволяет торговать на не тестируемом символе. Убедитесь, что в окне "Обзор рынка" есть нужные вам пары
 

Извините за дурацкий вопрос - "Обзор рынка" ето как будет в English версии МТ4? Просто у меня Windows не русский, наверное заметили - я изпользую 'Е' вместо 'Е-оборотное"...

Если речь идет о History Center то нужная пара там есть. Я тестера гонял на EURGBP, а в терминале MetaQuotes AccountCurrency() выдает "USD", т.e. нужная мне пара будет GBPUSD, и она там есть.

 
 
4x4ever:

 
4x4ever:

Извините за дурацкий вопрос - "Обзор рынка" ето как будет в English версии МТ4?


Market Watch
 

aaa.. ну да, да конечно... Обе там - и EURGBP и GBPUSD...


 

- Scriptong, artmedia70 если не трудно, могли бы вы подтвердить что у вас етот код в тестере (на EURGBP, H1, Control Points) работает без ошибки и дает правилный спред?


double spr = 100000;  
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
int start()
{
    if( spr == 100000 )
    {
        int ercode = 0;
        spr = MarketInfo( "GBPUSD", MODE_SPREAD );
        ercode = GetLastError();
        Print( " ========= SPR2 for GBPUSD is ", DoubleToStr( spr, 5 ), " | err=", ercode );
    }

    return( 0 );
}

У меня результат принта:

2013.12.05 15:09:30 2013.12.02 00:00 TestCalcProf-EA EURGBP,H1: ========= SPR2 for GBPUSD is 0.00000 | err=4059

Тоесть именно ERR_FUNC_NOT_ALLOWED_IN_TESTING...

 

Пробовал гонять тестера в режиме Every Tick, в результате чего в Journal (терминала а не тестера) появились около 30 сообщений:

2013.12.05 15:32:22 Memory handler: cannot allocate 218122564 bytes of memory

Несмотря на ето тестер тест довел до конца но результат тот же (ERR_FUNC_NOT_ALLOWED_IN_TESTING)

:(

 

В етой статье gordon тоже говорит что MaqrketInfo на другие символы в тестере на работает (см. его комментарий от 2010.04.08 06:42 ) :

Note that MODE_MARGINREQUIRED is 'static' in Tester and that both methods of calculation cannot be used in Tester (they rely on MarketInfo() of other symbols...).


artmedia70 - возможно ли что ты ошибаешся и MaqrketInfo на другие символы в тестере не работает?

Также возможно (поскольку та статья с 2010 года) что с тех пор ето исправлено.. в таком случае подскажите пожалуйста где у меня ошибка?




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