MT4 не может корректно завершить скрипт

 

Уважаемый суппорт,

вопрос насчет MT4-MQL4. Есть следующий скрипт:

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
while(true)
{
Print("TEST");
Sleep(5000);
}
//----
return(0);
}
//+------------------------------------------------------------------+
Почему после нажатия "Удалить скрипт" с графика МТ4 его не удаляет и начинает беспорядочно бесконечно (без задержки 5сек) выполнять команду Print("TEST");
Т.е. МТ4 не может корректно остановить скрипт.
 
test17 писал(а) >>

Уважаемый суппорт,

вопрос насчет MT4-MQL4. Есть следующий скрипт:

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
while(true)
{
Print("TEST");
Sleep(5000);
}
//----
return(0);
}
//+------------------------------------------------------------------+
Почему после нажатия "Удалить скрипт" с графика МТ4 его не удаляет и начинает беспорядочно бесконечно (без задержки 5сек) выполнять команду Print("TEST");
Т.е. МТ4 не может корректно остановить скрипт.

Наберите в поиске "остановить скрипт". Данный вопрос обсуждался. Удачи

 

Надо так:

while (!IsStopped())
 {

 }
 
IsStoped вам поможет завершится сразуже - в хелпе про это есть ;)
 

IsStopped() помогает.

А еще можно кинуть на экран какой-нибудь простой скрипт с пустой функцией старт start() {}.

В этом случае метатрейдер убивает скрипт.

Или закрыть окно инструмента. Будут тормоза, но скрипт убьется отлично.

Т.е. метатрейдер работает отлично - не может остановить скрипт только 

кнопка "остановить скрипт", но это вполне логично :-).

 
Чтобы остановить зацикленный скрипт с кнопки "остановить скрипт", эту самую кнопку нужно жать 2 раза. После первого раза взводится стоп-флаг (поэтому все слипы проскакивают без ожидания). После второго раза, если скрипт самостоятельно не завершился, его прибивают насильно.
Причина обращения: