Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 96

 

здравствуйте  хочу получить дату экспирации для фьючерсов 

EXPIRATION=(datetime)SymbolInfoInteger(Symbol(),SYMBOL_EXPIRATION_TIME);

А выдает 1970 01 01 00 00

 

Здравствуйте,


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


NormalizeDouble(STOP/MarketInfo( Symbol(),MODE_TICKVALUE)*10,0)*Point

Принт всех составляющих показывает НЕ нулевые значения.

В чем может быть причина ошибки? 

 

МТ4

Где взять актуальный и исчерпывающий перечень значений int OrderType() ?

Справка, я так понял, не обновлена.


AccountProfit() учитывает пополнения и снятия? 

В справке ничего толком не написано как считается, что учитывается...

Даже точное определение понятия помогло бы понять - что подразумевается разработчиками и как должно считаться.

Может где-то есть от разработчиков обзор подобных функций, результат которых является производным? По крупицам приходится собирать ...

 
Viatcheslav Pashkov:

Здравствуйте,


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


Принт всех составляющих показывает НЕ нулевые значения.

В чем может быть причина ошибки? 


Приведите более полный код. Типы переменных. Какой символ. Какие значения принимают перед подстановкой в выражение. Где используется далее результат вычисления этого выражения.

 
Kirill Belousov:

Приведите более полный код. Типы переменных. Какой символ. Какие значения принимают перед подстановкой в выражение. Где используется далее результат вычисления этого выражения.

Там были только предопределенные переменные Symbol() и MODE_TICKVALUE

не знаю в чем дело, но проблему решил следующим образом:

ввел проверку на ноль типа : если выражение не равно нолю то выполнять.


И все пошло! 

НЕ знаю, что это значит..но буду иметь в виду ...что автовалидатор указывает на ВОЗМОЖНОЕ деление на ноль в блоке INI, а не на явное. 

 
Viatcheslav Pashkov:

Здравствуйте,


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


Принт всех составляющих показывает НЕ нулевые значения.

В чем может быть причина ошибки? 

double TICK_VALUE = MarketInfo( Symbol(),MODE_TICKVALUE);
if(TICK_VALUE ==0) return;
NormalizeDouble(STOP/TICK_VALUE *10.0)*Point
 
Vitaly Muzichenko:

А как вообще TICK_VALUE может быть равен нолю ?   

 
Viatcheslav Pashkov:

А как вообще TICK_VALUE может быть равен нолю ?   


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

 
Taras Slobodyanik:

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


Спасибо, буду знать! 

 
Viatcheslav Pashkov:

Там были только предопределенные переменные Symbol() и MODE_TICKVALUE

не знаю в чем дело, но проблему решил следующим образом:

ввел проверку на ноль типа : если выражение не равно нолю то выполнять.


И все пошло! 

НЕ знаю, что это значит..но буду иметь в виду ...что автовалидатор указывает на ВОЗМОЖНОЕ деление на ноль в блоке INI, а не на явное. 

Сообщение о делении на ноль - не проблема, а следствие.

Зато теперь трудно будет найти проблему, так как вы просто убрали неудобное сообщение о делении на 0.

Что именно вы нормализуете? Куда подставляете результат?

Приведите Ваш код, где вы далее используете результат приведенного вами выражения. Думаю проблема возникает у вас там.