К разработчикам: Ошибка MarketInfo !!! - страница 2

 
Valmars:

2. Неправильное значение для демо-Альпари, а также Alpari-Contest касается не только золота, посмотрите, к примеру спред по GBPJPY, для этого даже не нужна функция, можно помотреть в свойствах символа: -3,07 для длинных и -4,14 для коротких.

Что касается конкурсных счетов, то там всё верно. Своп для длинных позиций со знаком минус, при том, что идёт переоткрытие позиций, эквивалентен начислению этого свопа на демо или реал счетах.

Стоимость пункта золота, помоему, не зависит от настроек сервера. Так как даже при отсутсвии золота в обзоре рынка функция MarketInfo упорно продолжает выдавать "десятку".
Скрипт во вложении это иллюстрирует - если в обзоре нет инструмента, функция вернёт ноль. Кроме золота.

Файлы:
marginfx.mq4  2 kb
 
Xupypr:
Valmars:

2. Неправильное значение для демо-Альпари, а также Alpari-Contest касается не только золота, посмотрите, к примеру спред по GBPJPY, для этого даже не нужна функция, можно помотреть в свойствах символа: -3,07 для длинных и -4,14 для коротких.

Что касается конкурсных счетов, то там всё верно. Своп для длинных позиций со знаком минус, при том, что идёт переоткрытие позиций, эквивалентен начислению этого свопа на демо или реал счетах.

Стоимость пункта золота, помоему, не зависит от настроек сервера. Так как даже при отсутсвии золота в обзоре рынка функция MarketInfo упорно продолжает выдавать "десятку".
Скрипт во вложении это иллюстрирует - если в обзоре нет инструмента, функция вернёт ноль. Кроме золота.


1. Похоже, Вы правы, для начисления свопа методом ролловера так и должно быть.

2. Вот для Alpari-Contest, где Gold в принципе отсутствует, Ваш скрипт даёт 0.

3. На реале и демо Alpari - везде Gold 10, видимо у них так принято, наверное Gold скрыто присутствует всегда.

 
Valmars писал (а):
Xupypr:

Стоимость пункта золота, помоему, не зависит от настроек сервера. Так как даже при отсутсвии золота в обзоре рынка функция MarketInfo упорно продолжает выдавать "десятку".
Скрипт во вложении это иллюстрирует - если в обзоре нет инструмента, функция вернёт ноль. Кроме золота.

Отсутствие символа в окне обзора рынка лишь означает, что по нему не приходят тики. Но информация о настройках даже скрытых символов всегда доступна. Все настройки символов задаются на торговом сервере.
 
MetaQuotes:
Xupypr:

Стоимость пункта золота, помоему, не зависит от настроек сервера. Так как даже при отсутсвии золота в обзоре рынка функция MarketInfo упорно продолжает выдавать "десятку".
Скрипт во вложении это иллюстрирует - если в обзоре нет инструмента, функция вернёт ноль. Кроме золота.

Отсутствие символа в окне обзора рынка лишь означает, что по нему не приходят тики. Но информация о настройках даже скрытых символов всегда доступна. Все настройки символов задаются на торговом сервере.

Цитата из справки MetaEditor:

double MarketInfo( string symbol, int type)
Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка". Часть информации о текущем финансовом инструменте хранится в предопределенных переменных.

- противоречие.

Так что же со стоимостью пункта у золота?

 
Xupypr:
MetaQuotes:
Xupypr:

Стоимость пункта золота, помоему, не зависит от настроек сервера. Так как даже при отсутсвии золота в обзоре рынка функция MarketInfo упорно продолжает выдавать "десятку".
Скрипт во вложении это иллюстрирует - если в обзоре нет инструмента, функция вернёт ноль. Кроме золота.

Отсутствие символа в окне обзора рынка лишь означает, что по нему не приходят тики. Но информация о настройках даже скрытых символов всегда доступна. Все настройки символов задаются на торговом сервере.

Цитата из справки MetaEditor:

double MarketInfo( string symbol, int type)
Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка". Часть информации о текущем финансовом инструменте хранится в предопределенных переменных.


- противоречие.

Никакого противоречия. Нажмите на Market Watch - Символы и оцените список символов для окна Market Watch.
 

Я хотел лишь заметить, что функция MarketInfo возвращает информацию о финансовых инструментах, перечисленных в окне "Обзор рынка". Предыдущий рисунок это доказывает. Он получен с помощью скрипта MarginFX.mq4. Разве я не прав или есть другие способы о которых я не знаю?

В названии темы стоит утверждение. Вы его опровергаете?

Я не хочу больше ни чего доказывать. Один раз я попался на этот трюк с золотом. Нашел другое решение - исключил запрос стоимости пункта. (см. вложение)

Файлы:
tickvalue.mq4  3 kb
 
Xupypr:

... Нашел другое решение - исключил запрос стоимости пункта. (см. вложение)

Вот-вот. Мне пришлось сделать то же самое (и не один раз).

Я вообще могу много интересного рассказать про эту "замечательную" функцию, MarketInfo(...).
Основные чудеса наблюдаются при тестировании на истории экспертов, в составе которых есть обращение к этой функции (или экспертов, которые обращаются к индикаторам, использующим эту функцию).
Особенно интересно наблюдать за ценой пункта. Она при тестировании выдается всегда одна - текущая, т.е. та, что есть на настоящий момент, независимо от промежутка тестирования. И это - только на тестируемой паре! Если же эксперт, не дай бог, обращается к другой паре, то (держитесь за стул!) функция всегда выдает НОЛЬ! То же касается и значения Point: на тестируемой паре - выдается правильно, на остальных MarketInfo(...) выдает НОЛЬ!
В общем, "засада" для "мультивалютчиков"... :)

И это не только при тестировании. Например, если в индикаторе при расчете используется цена пункта, запрашиваемая через MarketInfo(. ..), то на истории индикатор врет! (За исключением, конечно, тех пар, на которых цена пункта не меняется.)

Короче, в итоге приходится писать собственные функции, подменяющие MarketInfo(...)...

 

Я вообще могу много интересного рассказать про эту "замечательную" функцию, MarketInfo(...).
Основные чудеса наблюдаются при тестировании на истории экспертов, в составе которых есть обращение к этой функции (или экспертов, которые обращаются к индикаторам, использующим эту функцию).
Особенно интересно наблюдать за ценой пункта. Она при тестировании выдается всегда одна - текущая, т.е. та, что есть на настоящий момент, независимо от промежутка тестирования. И это - только на тестируемой паре! Если же эксперт, не дай бог, обращается к другой паре, то (держитесь за стул!) функция всегда выдает НОЛЬ! То же касается и значения Point: на тестируемой паре - выдается правильно, на остальных MarketInfo(...) выдает НОЛЬ!
В общем, "засада" для "мультивалютчиков"... :)

И это не только при тестировании. Например, если в индикаторе при расчете используется цена пункта, запрашиваемая через MarketInfo(. ..), то на истории индикатор врет! (За исключением, конечно, тех пар, на которых цена пункта не меняется.)

Короче, в итоге приходится писать собственные функции, подменяющие MarketInfo(...)...


Вообще то этот вопрос уже неоднократно обсуждался:

'Тест сразу с несколькими парами валют'

'Тестирование на разных вал-х парах.'

и даже описан в статьях:

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

'Основы создания хеджирующего эксперта'

 
xeon:
Вообще то этот вопрос уже неоднократно обсуждался...

Извините, не знал...

Спасибо за ссылки!

 

Всем привет.Помогите и мне с этой переменной.При компиляции сова пишет:

'Market_Info' - function not defined АТС.mq4 1561 11

'0.1' - constant expression is not integral АТС.mq4 1563 12

'0.01' - constant expression is not integral АТС.mq4 1564 12

'0.001' - constant expression is not integral АТС.mq4 1565 12

 Вот строки кода:

switch(MarketInfo(Pairs[0],MODE_LOTSTEP))

      {

      case 0.1: int  digit=1; break;

      case 0.01:     digit=2; break;

      case 0.001:    digit=3; break;

      default:       digit=3 ;

      } 

if (buys!=0) {Object_field("l_pips2"," Покупок: "+buys+", Лотов: "+DoubleToStr(buy_lots,digit)+", "+DoubleToStr(BuyValProfit,0)+"/"+DoubleToStr(BuyPipsProfit,0)

      +" пп.", 180, 360, 10, "Consolas Bold", CLR_NONE, DeepSkyBlue);}

      else ObjectDelete("l_pips2");

      if (sells!=0) {Object_field("s_pips2"," Продаж:  "+sells+", Лотов: "+DoubleToStr(sell_lots,digit)+", "+DoubleToStr(SellValProfit,0)+"/"+DoubleToStr(SellPipsProfit,0)

      +" пп.", 180, 380, 10, "Consolas Bold", CLR_NONE, Orange);}

      else ObjectDelete("s_pips2");