Обсуждение статьи "Функции для управления капиталом в экспертах" - страница 3

 
GODZILLA:

 Теперь снова запускаю этого же, одновалютного эксперта в тестере, но теперь уже на EURJPY. В журнале Тестера стратегий начинает мельтешить строка с текстом
GetMarginForOpening : Не удалось подобрать валюту расчета для комбинации символа EURJPY
и даже если в функции GetSymbolByCurrencies() поменять малость код на "symbolname = SymbolName(s, false);", то всё-равно инициализации структуры MqlTick по EURUSD не происходит! так что получается деление на ноль. Это глюк терминала или одного вызова функции GetMarginForOpening() для получения маржи недостаточно?

Есть ли в Market Watch валюта USDJPY?

Выражение

symbolname = SymbolName(s, false);

обеспечивает в тестере доступ только к тем символам, которые доступны в окне "Обзор рынка"


 
Rosh:

Есть ли в Market Watch валюта USDJPY?

Выражение

обеспечивает в тестере доступ только к тем символам, которые доступны в окне "Обзор рынка"


Да в том то и дело, что всё есть! Складывается впечатление, что у Тестера стратегий для одновалютного эксперта свой виртуальный "Обзор рынка" в котором только одна фишка, по которой открывается позиция!

 
GODZILLA:

Да в том то и дело, что всё есть! Складывается впечатление, что у Тестера стратегий для одновалютного эксперта свой виртуальный "Обзор рынка" в котором только одна фишка, по которой открывается позиция!

 

Дык в тестере действительно свой "Обзор рынка", который нужно заполнять при инициализации мультивалютника...

PS

И набор "Глобальных переменных" теперь в тестере тоже свой (насколько я в теме)...

 
Interesting:

Дык в тестере действительно свой "Обзор рынка", который нужно заполнять при инициализации мультивалютника...

PS

И набор "Глобальных переменных" теперь в тестере тоже свой (насколько я в теме)...

Тут как раз разговор встал то про одновалютник. Ладно, будем считать, что так задумано, но в такой ситуации сей факт было бы, конечно, лучше отразить в справке по Метаэдитору, он отнюдь не очевиден для неискушённого в программировании пользователя. И в общем случае для одновалютного эксперта всё-таки функции из этой статьи в одновалютных экспертах работать не будут, ежели упустить из виду предварительную инициализацию этого хозяйства.
 
GODZILLA:
Тут как раз разговор встал то про одновалютник. Ладно, будем считать, что так задумано, но в такой ситуации сей факт было бы, конечно, лучше отразить в справке по Метаэдитору, он отнюдь не очевиден для неискушённого в программировании пользователя. И в общем случае для одновалютного эксперта всё-таки функции из этой статьи в одновалютных экспертах работать не будут, ежели упустить из виду предварительную инициализацию этого хозяйства.
Насколько я в курсе с символами дело обстоит так: каждый эксперт имеет свой, виртуальный "обзор рыка". При тестировании в нем автоматом становится активным тот символ который выбран в параметрах тестера (как я понимаю для ТФ продуман такой же механизм). Если необходимо торговать или анализировать другие пары (мультивалютник) то необходимые символы нужно АКТИВИЗИРОВАТЬ (выбрав их с параметром true).
 
Interesting:
  Если необходимо торговать или анализировать другие пары (мультивалютник) то необходимые символы нужно АКТИВИЗИРОВАТЬ (выбрав их с параметром true).

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



 
Рош! Никак не могу взять в прок! Функция GetMarginForOpening() задумана как универсальная для любой фишки, из числа присутствующих  в терминале или только для форексных фишек? Я так понимаю, что эта функция возвращает размер маржи в валюте депозита. Но, дело в том, что для пары XAUUSD, например, для одного лота эта функция возвращает размер торгового контракта по золоту в унциях (то есть 100 унций), а не количество долларов в этих унциях! Это так задумано?
 
GODZILLA:
Но, дело в том, что для пары XAUUSD, например, для одного лота эта функция возвращает размер торгового контракта по золоту в унциях (то есть 100 унций), а не количество долларов в этих унциях! Это так задумано?
Да, по идее функция  SymbolInfoInteger(.., SYMBOL_TRADE_CONTRACT_SIZE)  возвращает размер торгового контракта по золоту в неких единицах. Для золота это может быть тройская унция, для нефти баррели и т.д. Как найти стоимость этого самого бареля или унции? Можно попробовать OrderCalcMargin(), кажется её еще не было на момент написания статьи.
 

Rosh:
Да, по идее функция  SymbolInfoInteger(.., SYMBOL_TRADE_CONTRACT_SIZE)  возвращает размер торгового контракта по золоту в неких единицах. Для золота это может быть тройская унция, для нефти баррели и т.д. Как найти стоимость этого самого бареля или унции? Можно попробовать OrderCalcMargin(), кажется её еще не было на момент написания статьи.

 

Рош! Я про саму функцию GetMarginForOpening()  речь веду. В статье утверждается, что эта функция возвращает размер маржи в валюте депозита, но в данной, конкретной ситуации эта функция работает, не так, как написано в статье и возврашает размер маржи в единицах контракта!

 

 

Николай, напишите свою. Да, эта статья писалась в предверие чемпионата и для чемпионата (для форексных инсструментов). Судя по вопросам, Вы и сами в этом разоюбрались.

Если есть вопросы по функционалу MQL5 для Ваших целей - тогда это уже другое дело, но это не касается статьи.

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
Причина обращения: