Добрый день, собственно тема и есть вопрос. Нужно чтобы при нажатии на кнопку произошло действие и кнопка выключилась не сразу а через секунду/две
Sleep(2000);
Нет?
Добрый день, собственно тема и есть вопрос. Нужно чтобы при нажатии на кнопку произошло действие и кнопка выключилась не сразу а через секунду/две
нет. лучше так.
static datetime time = TimeCurrent(); if(ObjectGetInteger(0, "check", OBJPROP_STATE, true)) { if(time + 2 = TimeCurrent()) ObjectSetInteger(0, "check", OBJPROP_STATE, false); }
Наверное, для этого лучше использовать событие OnTimer().
if(ObjectGetInteger(0,"check",OBJPROP_STATE,true)) { .... Sleep(10000); ObjectSetInteger(0,"check",OBJPROP_STATE,false); } else { ObjectSetInteger(0,"check",OBJPROP_STATE,false); }
Не могу понять почему в индикаторе не работает? Может ли быть 2 слипа и более в разных местах кода, могут ли они работать параллельно?
нет. лучше так.
ошибка:
if(time + 2 = TimeCurrent()) ругается на + и на =
Не могу понять почему в индикаторе не работает? Может ли быть 2 слипа и более в разных местах кода, могут ли они работать параллельно?
Вы не написали, что это индикатор.
SleepФункцию Sleep() нельзя вызывать из пользовательских индикаторов
ошибка:
if(time + 2 = TimeCurrent()) ругается на + и на =
Опечатался, конечно надо ==
Опечатался, конечно надо ==
Спасибо но не работает:
static datetime time = TimeCurrent(); if(ObjectGetInteger(0, "check", OBJPROP_STATE, true)) { ... if(time + 2 == TimeCurrent()) ObjectSetInteger(0, "check", OBJPROP_STATE, false); }
т.е кнопка нажимается, но она не отжимается почему то? могли бы ответить почему?
Спасибо но не работает:
т.е кнопка нажимается, но она не отжимается почему то? могли бы ответить почему?
Код нужно видоизменить и к тому-же использовать TimeLocal();
TimeCurrent() меняет значение только на тике, а его может не быть более минуты
#property indicator_chart_window #property indicator_plots 0 #include <Controls\Button.mqh> //+------------------------------------------------------------------+ class CPauseButton: public CButton { private: const uint _pause; datetime _sec; public: CPauseButton(const string txt, const uint pause, const long chart, const string name, const int subwin, const int x1, const int y1, const int x2, const int y2) : _pause(pause), _sec(0) { Create(chart, name, subwin, x1, y1, x2, y2); Text(txt); } ~CPauseButton() { Destroy(); } void CheckPause(); }; //+------------------------------------------------------------------+ void CPauseButton::CheckPause(void) { if(_sec > 0) { if(TimeLocal() < _sec) return; _sec = 0; Pressed(false); printf(" Button %s unlocked", Name()); } if(Pressed()) { _sec = TimeLocal() + _pause; printf(" Button %s LOCK", Name()); return; } } //+------------------------------------------------------------------+ CPauseButton Button("MyButton", 3, 0, "button", 0, 10, 50, 110, 100); int OnInit() { EventSetMillisecondTimer(100); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { Button.CheckPause(); } //+------------------------------------------------------------------+
такой код должен работать, но нужно бы блокировку кнопки сделать или цвет поменять, но в логе правильно пишет состояние

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, собственно тема и есть вопрос. Нужно чтобы при нажатии на кнопку произошло действие и кнопка выключилась не сразу а через секунду/две