Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 666

 
Vitaly Muzichenko:
Для того что-бы переделать, нужно знать что решает ваша функция, и для каких задач используется
Добрый день, Виталий.

С определённого билда МТ4 начала появляться ошибки при компилировании  (the size of local variables is too large (more than 512kb)) различных кодов которая ранее не появлялась, пытаюсь понять, как с ней бороться и для примера вставил, как мне показалось простой фрагмент кода из индикатора WmiFor30. Можете на этом примере показать, как исправлять эту ошибку?

Файлы:
WmiFor30.mq4  25 kb
 
Craft:
Добрый день, Виталий.

С определённого билда МТ4 начала появляться ошибки при компилировании  (the size of local variables is too large (more than 512kb)) различных кодов которая ранее не появлялась, пытаюсь понять, как с ней бороться и для примера вставил, как мне показалось простой фрагмент кода из индикатора WmiFor30. Можете на этом примере показать, как исправлять эту ошибку?

Не знаю что в нём за принцип работы, попробуйте. Исправление увидите
Файлы:
WmiFor30.mq4  25 kb
 
Vitaly Muzichenko:
Не знаю что в нём за принцип работы, попробуйте. Исправление увидите
Спасибо, интересно.
 

Вопрос по графику:

Есть вот такая конструкция

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

Как выяснить, что график не основной, а открытый в режиме тестера и его пропустить?

 
Здравствуйте!
Сегодня воскресение:
TimeCurrent()=1478300399, что соответствует 2016.11.04 22:59 - пятница
DayOfWeek()=5, что вполне естественно ))

Вопрос: Подскажите пожалуйста, как программно в init(); определить, что сейчас, в момент прикрепления эксперта на чарт, выходной день - воскресение ?
            Без обращения к TimeLocal():
 
Leo59:
Здравствуйте!
Сегодня воскресение:
TimeCurrent()=1478300399, что соответствует 2016.11.04 22:59 - пятница
DayOfWeek()=5, что вполне естественно ))

Вопрос: Подскажите пожалуйста, как программно в init(); определить, что сейчас, в момент прикрепления эксперта на чарт, выходной день - воскресение ?
            Без обращения к TimeLocal():
поможет?
 
Vitaly Muzichenko:
поможет?
Спасибо за подсказку. Но, :

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) может возвращать false в следующих случаях:

  • нет соединения с торговым сервером. Можно проверить с помощью TerminalInfoInteger(TERMINAL_CONNECTED));
  • торговый счет переведен в режим read-only (отправлен в архив);
  • торговля на счете запрещена на стороне торгового сервера;
  • подключение к торговому счете произведено в режиме инвестора.

Вот если бы просто : торговля запрещена на стороне торгового сервера;

А то, не совсем корректно получается ))


Хотя, в принципе, bool  IsTradeAllowed(); можно попробовать.

Большое спасибо Виталий!!!!

 
К сожалению, не помогает.

init();
 if(IsTradeAllowed()) Print("Торговля разрешена");
 if(!IsTradeAllowed()) Print("Торговля НЕ разрешена");


Выводит : "Торговля разрешена"

Надо как-то по другому. А вот как ?

 
Leo59:
К сожалению, не помогает.

init();
 if(IsTradeAllowed()) Print("Торговля разрешена");
 if(!IsTradeAllowed()) Print("Торговля НЕ разрешена");


Выводит : "Торговля разрешена"

Надо как-то по другому. А вот как ?

Попробуйте так:

starttime=(int)TimeCurrent()+sec; // например +5 секунд. Эту строку в OnInit

if(TimeCurrent()>starttime) {
...
}

Я думаю принцип понятен, и пока нет тика, то TimeCurrent не изменится

 
Vitaly Muzichenko:

Попробуйте так:

starttime=(int)TimeCurrent()+sec; // например +5 секунд

if(TimeCurrent()>starttime) {
...
}

Я думаю принцип понятен, и пока нет тика, то TimeCurrent не изменится

Да, для Форекса это годится, потому что тики приходят часто. А если не для Форекса ?