mql4 события
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;
}
}
Нужна Ваша помощь. Есть советник на 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;
}
//+------------------------------------------------------------------+