void funStart()
{
Stop=false;
for(int i=0; i<10; i++)
{
Sleep(200);
Alert(i);
if(Stop==true) {break;}
}
}
Stop=false; for(int i=0; i<10; i++) { Alert(i); for(int k=0; k<40; k++) // уменьшил задержку срабатывания в 40 раз { if(Stop) {break;} Sleep(5); } if(Stop) {break;} }
Нужна Ваша помощь. Есть советник на mql4. Кнопкой Start запускается цыкл. Подскажите, пожалуйста, как выйти из цыкла при нажатии на кнопку "Stop"? Функция funStop() срабатывает
только после завершения цыкла, а мне надо что бы сразу при нажатии на кнопку выйти из цыкла.
В тело цикла поставьте проверку нажатия кнопки
if(ObjectSetInteger(0,name,OBJPROP_STATE,true)) break;
и не забудьте вернуть значение
ObjectSetInteger(0,name,OBJPROP_STATE,false);
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
STARIJ, 2018.03.14 17:41
Stop=false; for(int i=0; i<10; i++) { Alert(i); for(int k=0; k<40; k++) // уменьшил задержку срабатывания в 40 раз { if(Stop) {break;} Sleep(5); } if(Stop) {break;} }
В тело цикла поставьте проверку нажатия кнопки
и не забудьте вернуть значение
Thank you very much!!! Без Вашей помощи не разобрался бы, все работает)
for(int i=0; i<20; i++)
{
Sleep(200);
Alert(i);
if( ObjectGetInteger(0,gl_nameObButtStop,OBJPROP_STATE,true))
{
ObjectSetInteger(0,gl_nameObButtStop,OBJPROP_STATE,false);
break;
}
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нужна Ваша помощь. Есть советник на mql4. Кнопкой Start запускается цыкл. Подскажите, пожалуйста, как выйти из цыкла при нажатии на кнопку "Stop"? Функция funStop() срабатывает
только после завершения цыкла, а мне надо что бы сразу при нажатии на кнопку выйти из цыкла.
//+----------------- Button
void PutButton(string name,int x,int y,string text,int fontsize,color colortext,color colorfon,int width,int heigh)
{
ObjectCreate(0,name,OBJ_BUTTON,ChartWindowFind(),0,0);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,name,OBJPROP_XSIZE,width);
ObjectSetInteger(0,name,OBJPROP_YSIZE,heigh);
ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);
ObjectSetString(0,name,OBJPROP_TEXT,text);
ObjectSetString(0,name,OBJPROP_FONT,"Arial");
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);
ObjectSetInteger(0,name,OBJPROP_COLOR,colortext);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,colorfon);
ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
ObjectSetInteger(0,name,OBJPROP_BACK,false);
ObjectSetInteger(0,name,OBJPROP_STATE,false);
}
//-------< flags >------------------------------------
bool gl_flStop=false;
//-------< названия графических обектов >-------------
string gl_nameObButtStart="Start";
string gl_nameObButtStop="Stop";
//+------------------------------------------------------------------+
int OnInit()
{
PutButton(gl_nameObButtStart,10,75,"Start",14,clrBlue,clrKhaki,60,60);
PutButton(gl_nameObButtStop,100,75,"Stop",14,clrBlue,clrKhaki,60,60);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- проверим событие на нажатие кнопки мышки
if(id==CHARTEVENT_OBJECT_CLICK)
{
string clickedChartObject=sparam;
//--- Start
if(clickedChartObject==gl_nameObButtStart)
{
funStart();
}
//--- Stop
if(clickedChartObject==gl_nameObButtStop)
{
funStop();
}
ChartRedraw();// принудительно перерисуем все объекты на графике
}
}
//+------------------------------------------------------------------+
void funStart()
{
gl_flStop=false;
for(int i=0; i<10; i++)
{
Sleep(200);
Alert(i);
if(gl_flStop==true) {break;}
}
}
//+------------------------------------------------------------------+
void funStop()
{
Alert("Stop");
gl_flStop=true;
}
//+------------------------------------------------------------------+