Marco vd Heijden: Пожалуйста, опишите, что вы пытаетесь сделать.
Извините за путаницу.
Мне нужно установить 3'EventSetMillisecondTimer', как показано ниже (вы сказали, что это не работает...). Есть ли альтернативный способ, пожалуйста?
EventSetMillisecondTimer( 10 ); // 1st will read in 10 | if won't read try next EventSetMillisecondTimer( 250 ); // 2nd will read in 250 | if won't read try next EventSetMillisecondTimer( 1250 ); // 3rd will read in 1250 | if read then stop reading till next PERIOD_M5
Какой механизм вы хотите использовать, какой код вы хотите запускать на временных интервалах?
Чего вы пытаетесь достичь?
Спасибо за отличный комментарий, который гораздо более четко объясняет оператор 'switch' и временные интервалы.
Еще раз отличный комментарий, большое спасибо.
//---
Теперь мне нужно дать вам информацию о моем индикаторе.
Потому что, возможно, я не описал, что меня беспокоит, (но ваш последний комментарий все больше и больше помогает мне)...
...мой индикатор работает так, как я хотел (/ хочет).
Индикатор работает следующим образом:
автоматически перемещает / показывает вперед 'VLINE' (какой я хочу)
показывает прошлую неделю 'VLINE'(какую я хочу)
не пересекаются линии периодов (какие я хочу)
постоянное обновление (с интервалами)только один раз в каждый следующий ПЕРИОД_**'s(какой я хочу)
и многое другое...
еще раз СПЕЦИАЛЬНОЕ СПАСИБОMarco иwhroeder1(не только помогли мне, но и многому научили).
Я должен описать свою проблему на примере:
Я открываю графикEURUSD и прикрепляю свой индикатор к графику, и он работает идеально, как я и хотел, перемещает / показывает вперед (даже мимо) VLINE, я могу изменить ПЕРИОД ВРЕМЕНИ и автоматически интервалы адаптируются к этому ПЕРИОДУ (что я и хотел).
Где же проблема моего индикатора?// Может быть, это не проблема, но для обновления требуется немного больше "неактуального" времени.
Если я выбираю 'EventSetMillisecondTimer( 10 );' и затем меняю TIMEFRAME PERIODs на любой TIMEFRAME PERIODs и почти не вижу (когда это происходит) загрузки новых VLINE'ов на график (какой я хочу).
В это время, если я меняю EURUSD на "другие символы(например, GBPUSD и т.д.)", мой индикатор не загружает полные VLINE'ы. Это просто проблема(/ для меня).
Иначе: Если я выбираю 'EventSetMillisecondTimer( 1250 );', я не вижу никаких проблем с загрузкой. Все работает отлично.
Но вотпроблема(/ для меня) это занимает немного больше "нерелевантных" времен - когда я меняю TIMEFRAME PERIODs.
Так что если вы понимаете меня так ясно, пожалуйста, найдите время, чтобы прокомментировать (и помочь мне, как я могу решить эту проблему) или вы не понимаете меня так ясно, не тратьте свое время, пожалуйста.
Много и много ценю ваши комментарии - Marco & whroeder1
(ПРИМЕЧАНИЕ: Я не использую 'switch operator' - потому что ваш #18 комментарий лучше, чем все, что я обновляю его и работаю над ним - и он очень полезен для меня)
Не знаю, как другие, но меня отвлекает и раздражает ваше сочетание шрифта, цветов, жирного и курсивного начертания. На самом деле, я не мог потрудиться прочитать этот пост.
Max Enrik:
Спасибо за отличный комментарий, который гораздо более четко объясняет оператор 'switch' и временные интервалы.
Еще раз отличный комментарий, большое спасибо.
//---
Теперь мне нужно дать вам информацию о моем индикаторе.
Потому что, возможно, я не описал, что меня беспокоит, (но ваш последний комментарий все больше и больше помогает мне)...
...мой индикатор работает так, как я хотел (/ хочет).
Индикатор работает следующим образом:
автоматически перемещает / показывает вперед 'VLINE' (какой я хочу)
показывает прошлую неделю 'VLINE'(какую я хочу)
не пересекаются линии периодов (какие я хочу)
постоянное обновление (с интервалами)только один раз в каждый следующий ПЕРИОД_**'s(какой я хочу)
и многое другое...
еще раз СПЕЦИАЛЬНОЕ СПАСИБОMarco иwhroeder1(не только помогли мне, но и многому научили).
Я должен описать свою проблему на примере:
Я открываю график EURUSD и прикрепляю свой индикатор к графику, и он работает идеально, как я и хотел, перемещает / показывает вперед (даже мимо) VLINE, я могу изменить ПЕРИОД ВРЕМЕНИ и автоматически интервалы адаптируются к этому ПЕРИОДУ (что я и хотел).
Где же проблема моего индикатора?// Может быть, это не проблема, но для обновления требуется немного больше "неактуального" времени.
Если я выбираю 'EventSetMillisecondTimer( 10 );' и затем меняю TIMEFRAME PERIODs на любой TIMEFRAME PERIODs и почти не вижу (когда это происходит) загрузки новых VLINE'ов на график (какой я хочу).
В это время, если я меняю EURUSD на "другие символы(например, GBPUSD и т.д.)", мой индикатор не загружает полные VLINE'ы. Это просто проблема(/ для меня).
Иначе: Если я выбираю 'EventSetMillisecondTimer( 1250 );', я не вижу никаких проблем с загрузкой. Все работает отлично.
Но вотпроблема(/ для меня) это занимает немного больше "нерелевантных" времен - когда я меняю TIMEFRAME PERIODs.
Так что если вы понимаете меня так ясно, пожалуйста, найдите время, чтобы прокомментировать (и помочь мне, как я могу решить эту проблему) или вы не понимаете меня так ясно, не тратьте свое время, пожалуйста.
Много и много ценю ваши комментарии - Marco & whroeder1
(ПРИМЕЧАНИЕ: я не использую 'switch operator' - потому что ваш #18 комментарий лучше, чем все, что я обновляю его и работаю над ним - и он очень полезен для меня)
Также обратите внимание на ObjectsDeleteAll() в функции OnDeint(). Это позволит убедиться, что все удалено до того, как будет создано снова на новом кадре.
Кроме того, если вы хотите обновлять линии каждый раз, когда возникает новая свеча, вы можете объединить пример на предыдущей странице с последним, чтобы получить это:
datetime M1,M5,M15,M30,H1,H4,D1,W1,MN1; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- create timer EventSetTimer(60); //--- playsound PlaySound("alert2.wav"); //--- load open times M1=iTime(Symbol(),PERIOD_M1,0); M5=iTime(Symbol(),PERIOD_M5,0); M15=iTime(Symbol(),PERIOD_M15,0); M30=iTime(Symbol(),PERIOD_M30,0); H1=iTime(Symbol(),PERIOD_H1,0); H4=iTime(Symbol(),PERIOD_H4,0); D1=iTime(Symbol(),PERIOD_D1,0); W1=iTime(Symbol(),PERIOD_W1,0); MN1=iTime(Symbol(),PERIOD_MN1,0); //--- create moving timeline ObjectCreate(0,"Time",OBJ_VLINE,0,TimeCurrent(),0); //--- detect period switch(Period()) { casePERIOD_M1: MessageBox("Switched to 1 Minute Frame"); //Do Something... ObjectCreate(0,"1-Minute",OBJ_VLINE,0,Time[0],0); M1=Time[0];// store current time break; casePERIOD_M5: MessageBox("Switched to 5 Minutes Frame"); //Do Something... ObjectCreate(0,"5-Minutes",OBJ_VLINE,0,Time[0],0); M5=Time[0];// store current time break; casePERIOD_M15: MessageBox("Switched to 15 Minutes Frame"); //Do Something... ObjectCreate(0,"15-Minutes",OBJ_VLINE,0,Time[0],0); M15=Time[0];// store current time break; casePERIOD_M30: MessageBox("Switched to 30 Minutes Frame"); //Do Something... ObjectCreate(0,"30-Minutes",OBJ_VLINE,0,Time[0],0); M30=Time[0];// store current time break; casePERIOD_H1: MessageBox("Switched to 1 Hour Frame"); //Do Something... ObjectCreate(0,"1-Hour",OBJ_VLINE,0,Time[0],0); H1=Time[0];// store current time break; casePERIOD_H4: MessageBox("Switched to 4 Hour Frame"); //Do Something... ObjectCreate(0,"4-Hour",OBJ_VLINE,0,Time[0],0); H4=Time[0];// store current time break; casePERIOD_D1: MessageBox("Switched to Daily Frame"); //Do Something... ObjectCreate(0,"Daily",OBJ_VLINE,0,Time[0],0); D1=Time[0];// store current time break; casePERIOD_W1: MessageBox("Switched to Weekly Frame"); //Do Something... ObjectCreate(0,"Weekly",OBJ_VLINE,0,Time[0],0); W1=Time[0];// store current time break; casePERIOD_MN1: MessageBox("Switched to Monthly Frame"); //Do Something... ObjectCreate(0,"Monthly",OBJ_VLINE,0,Time[0],0); MN1=Time[0];// store current time break; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ voidOnDeinit(constint reason) { //--- destroy timer EventKillTimer(); //--- delete objects ObjectsDeleteAll(0,0,-1); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ voidOnTick() { //--- update timeline ObjectMove(0,"Time",0,TimeCurrent(),0); //--- check for new candles if(M1!=iTime(Symbol(),PERIOD_M1,0)) { Alert("New candle on M1"); ObjectMove(0,"1-Minute",0,iTime(Symbol(),PERIOD_M1,0),0); // Move line M1=iTime(Symbol(),PERIOD_M1,0);// Overwrite old with new value } if(M5!=iTime(Symbol(),PERIOD_M5,0)) { Alert("New candle on M5"); M1=iTime(Symbol(),PERIOD_M5,0);// Overwrite old with new value } if(M15!=iTime(Symbol(),PERIOD_M15,0)) { Alert("New candle on M15"); M15=iTime(Symbol(),PERIOD_M15,0);// Overwrite old with new value } if(M30!=iTime(Symbol(),PERIOD_M30,0)) { Alert("New candle on M30"); M30=iTime(Symbol(),PERIOD_M30,0);// Overwrite old with new value } // and so on to MN1... } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ voidOnTimer() { //--- ObjectMove(0,"Time",0,TimeCurrent(),0);// Update timeline } //+------------------------------------------------------------------+
Если есть еще какие-либо проблемы, пожалуйста, покажите код.
Не знаю, как другие, но меня отвлекает и раздражает ваше сочетание шрифта, цветов, жирного и курсивного начертания. На самом деле я не мог потрудиться прочитать этот пост.
Не знаю, как другие, но меня отвлекает и раздражает ваше сочетание шрифта, цветов, жирного и курсивного начертания. На самом деле, я не мог потрудиться прочитать этот пост.
Мне было сказано, не тратьте свое время.
Почему вы просто процитировали мой пост без каких-либо комментариев?
Пожалуйста, опишите, что вы пытаетесь сделать.
Извините за путаницу.
Мне нужно установить 3'EventSetMillisecondTimer', как показано ниже (вы сказали, что это не работает...). Есть ли альтернативный способ, пожалуйста?
EventSetMillisecondTimer( 250 ); // 2nd will read in 250 | if won't read try next
EventSetMillisecondTimer( 1250 ); // 3rd will read in 1250 | if read then stop reading till next PERIOD_M5
Лучший.
Таймер устанавливается только один раз в функции OnInit().
Если вы хотите провести повторную инициализацию, вам нужно сначала убить старый таймер, что обычно происходит в функции OnDeinit().
Как я уже сказал, в качестве альтернативы можно использовать счетчик.
Если вы поместите код, например, в 10-миллисекундный таймер, то код будет выполняться каждые 10 миллисекунд.
Это, скорее всего, приведет к зависанию вашего терминала, потому что это слишком быстро.
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(1);// 1 second
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//--- increment counter
counter++;
//--- comment status on the chart
Comment(IntegerToString(counter));
//--- switch timer
switch(counter)
{
case 60:
Alert(" 1 Minute ");
// Do Something...
break;
case 300:
Alert(" 5 Minutes ");
// Do Something...
break;
case 900:
Alert(" 15 Minutes ");
// Do Something...
counter=0;// Reset counter on highest value.
break;
}
// end switch timer
if(counter>900)
{
counter=0;// Safety Mechanism
}
}
//+------------------------------------------------------------------+
Обратите внимание, что одна минута срабатывает только один раз, то есть не каждую минуту.
5 минут сработает также только один раз после первых пяти минут, то есть не через 10 и не через 15 минут.
Если вы хотите, например, срабатывать каждую минуту, вам придется добавить код для 60 секунд, для 120 секунд, для 180 секунд и т.д.
Отметка 15 минут будет срабатывать каждые 15 минут, потому что она устанавливает счетчик на ноль.
Какой механизм вы хотите использовать, какой код вы хотите запускать на таймерных интервалах?
Чего вы пытаетесь достичь?void OnTimer()
{
static int counter=0;
static int next1m=60;
static int next5m=300;
static int next15m=900;
//--- increment counter
counter++;
//--- comment status on the chart
Comment(IntegerToString(counter));
//--- timer
if(counter==next1m)
{
Alert(" 1 Minute ");
// Do Something...
next1m+=60;
}
if(counter==next5m)
{
Alert(" 5 Minutes ");
// Do Something...
next5m+=300;
}
if(counter==next15m)
{
Alert(" 15 Minutes ");
// Do Something...
counter=0;// Reset counter on highest value.
next1m=60;
next5m=300;
}
}
Хорошая идея Марко.
Вы можете сделать что-то вроде этого для срабатывания через каждый временной интервал
Marco vd Heijden:
Какой механизм вы хотите использовать, какой код вы хотите запускать на временных интервалах?
Чего вы пытаетесь достичь?Еще раз отличный комментарий, большое спасибо.
//---
...мой индикатор работает так, как я хотел (/ хочет ).
Индикатор работает следующим образом:
Я должен описать свою проблему на примере:
Я открываю график EURUSD и прикрепляю свой индикатор к графику, и он работает идеально, как я и хотел, перемещает / показывает вперед (даже мимо) VLINE, я могу изменить ПЕРИОД ВРЕМЕНИ и автоматически интервалы адаптируются к этому ПЕРИОДУ (что я и хотел).
Где же проблема моего индикатора? // Может быть, это не проблема, но для обновления требуется немного больше "неактуального" времени.
Если я выбираю 'EventSetMillisecondTimer( 10 );' и затем меняю TIMEFRAME PERIODs на любой TIMEFRAME PERIODs и почти не вижу (когда это происходит) загрузки новых VLINE'ов на график (какой я хочу).
Много и много ценю ваши комментарии - Marco & whroeder1
(ПРИМЕЧАНИЕ: Я не использую 'switch operator' - потому что ваш #18 комментарий лучше, чем все, что я обновляю его и работаю над ним - и он очень полезен для меня)
(Английский не является моим родным языком)
Keith Watford:
Отличная работа Марко.
Вы можете сделать что-то вроде этого, чтобы срабатывать на каждом временном интервале
Кит тоже молодец :)
Это действительно очень помогло мне, я буду использовать это в моем следующем индикаторе.
Всего наилучшего.
Не знаю, как другие, но меня отвлекает и раздражает ваше сочетание шрифта, цветов, жирного и курсивного начертания. На самом деле, я не мог потрудиться прочитать этот пост.
Еще раз отличный комментарий, большое спасибо.
//---
...мой индикатор работает так, как я хотел (/ хочет ).
Индикатор работает следующим образом:
Я должен описать свою проблему на примере:
Я открываю график EURUSD и прикрепляю свой индикатор к графику, и он работает идеально, как я и хотел, перемещает / показывает вперед (даже мимо) VLINE, я могу изменить ПЕРИОД ВРЕМЕНИ и автоматически интервалы адаптируются к этому ПЕРИОДУ (что я и хотел).
Где же проблема моего индикатора? // Может быть, это не проблема, но для обновления требуется немного больше "неактуального" времени.
Если я выбираю 'EventSetMillisecondTimer( 10 );' и затем меняю TIMEFRAME PERIODs на любой TIMEFRAME PERIODs и почти не вижу (когда это происходит) загрузки новых VLINE'ов на график (какой я хочу).
Много и много ценю ваши комментарии - Marco & whroeder1
(ПРИМЕЧАНИЕ: я не использую 'switch operator' - потому что ваш #18 комментарий лучше, чем все, что я обновляю его и работаю над ним - и он очень полезен для меня)
(Английский не является моим родным языком)
Если речь идет о переключении таймфреймов, то таймер - не лучший вариант, потому что таймер уничтожается при переключении фрейма.
Вы можете создавать свои линии в функции OnInit(), а обновлять их в функциях OnTick() или OnTimer().
Вот пример:
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//--- playsound
PlaySound("alert2.wav");
//--- create moving timeline
ObjectCreate(0,"Time",OBJ_VLINE,0,TimeCurrent(),0);
//--- detect period
switch(Period())
{
case PERIOD_M1:
MessageBox("Switched to 1 Minute Frame");
//Do Something...
ObjectCreate(0,"1-Minute",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_M5:
MessageBox("Switched to 5 Minutes Frame");
//Do Something...
ObjectCreate(0,"5-Minutes",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_M15:
MessageBox("Switched to 15 Minutes Frame");
//Do Something...
ObjectCreate(0,"15-Minutes",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_M30:
MessageBox("Switched to 30 Minutes Frame");
//Do Something...
ObjectCreate(0,"30-Minutes",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_H1:
MessageBox("Switched to 1 Hour Frame");
//Do Something...
ObjectCreate(0,"1-Hour",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_H4:
MessageBox("Switched to 4 Hour Frame");
//Do Something...
ObjectCreate(0,"4-Hour",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_D1:
MessageBox("Switched to Daily Frame");
//Do Something...
ObjectCreate(0,"Daily",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_W1:
MessageBox("Switched to Weekly Frame");
//Do Something...
ObjectCreate(0,"Weekly",OBJ_VLINE,0,Time[0],0);
break;
case PERIOD_MN1:
MessageBox("Switched to Monthly Frame");
//Do Something...
ObjectCreate(0,"Monthly",OBJ_VLINE,0,Time[0],0);
break;
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
//--- delete objects
ObjectsDeleteAll(0,0,-1);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
ObjectMove(0,"Time",0,TimeCurrent(),0);// Update timeline
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
ObjectMove(0,"Time",0,TimeCurrent(),0);// Update timeline
}
//+------------------------------------------------------------------+
Кроме того, если вы хотите обновлять линии каждый раз, когда возникает новая свеча, вы можете объединить пример на предыдущей странице с последним, чтобы получить это:
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//--- playsound
PlaySound("alert2.wav");
//--- load open times
M1=iTime(Symbol(),PERIOD_M1,0);
M5=iTime(Symbol(),PERIOD_M5,0);
M15=iTime(Symbol(),PERIOD_M15,0);
M30=iTime(Symbol(),PERIOD_M30,0);
H1=iTime(Symbol(),PERIOD_H1,0);
H4=iTime(Symbol(),PERIOD_H4,0);
D1=iTime(Symbol(),PERIOD_D1,0);
W1=iTime(Symbol(),PERIOD_W1,0);
MN1=iTime(Symbol(),PERIOD_MN1,0);
//--- create moving timeline
ObjectCreate(0,"Time",OBJ_VLINE,0,TimeCurrent(),0);
//--- detect period
switch(Period())
{
case PERIOD_M1:
MessageBox("Switched to 1 Minute Frame");
//Do Something...
ObjectCreate(0,"1-Minute",OBJ_VLINE,0,Time[0],0);
M1=Time[0];// store current time
break;
case PERIOD_M5:
MessageBox("Switched to 5 Minutes Frame");
//Do Something...
ObjectCreate(0,"5-Minutes",OBJ_VLINE,0,Time[0],0);
M5=Time[0];// store current time
break;
case PERIOD_M15:
MessageBox("Switched to 15 Minutes Frame");
//Do Something...
ObjectCreate(0,"15-Minutes",OBJ_VLINE,0,Time[0],0);
M15=Time[0];// store current time
break;
case PERIOD_M30:
MessageBox("Switched to 30 Minutes Frame");
//Do Something...
ObjectCreate(0,"30-Minutes",OBJ_VLINE,0,Time[0],0);
M30=Time[0];// store current time
break;
case PERIOD_H1:
MessageBox("Switched to 1 Hour Frame");
//Do Something...
ObjectCreate(0,"1-Hour",OBJ_VLINE,0,Time[0],0);
H1=Time[0];// store current time
break;
case PERIOD_H4:
MessageBox("Switched to 4 Hour Frame");
//Do Something...
ObjectCreate(0,"4-Hour",OBJ_VLINE,0,Time[0],0);
H4=Time[0];// store current time
break;
case PERIOD_D1:
MessageBox("Switched to Daily Frame");
//Do Something...
ObjectCreate(0,"Daily",OBJ_VLINE,0,Time[0],0);
D1=Time[0];// store current time
break;
case PERIOD_W1:
MessageBox("Switched to Weekly Frame");
//Do Something...
ObjectCreate(0,"Weekly",OBJ_VLINE,0,Time[0],0);
W1=Time[0];// store current time
break;
case PERIOD_MN1:
MessageBox("Switched to Monthly Frame");
//Do Something...
ObjectCreate(0,"Monthly",OBJ_VLINE,0,Time[0],0);
MN1=Time[0];// store current time
break;
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
//--- delete objects
ObjectsDeleteAll(0,0,-1);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- update timeline
ObjectMove(0,"Time",0,TimeCurrent(),0);
//--- check for new candles
if(M1!=iTime(Symbol(),PERIOD_M1,0))
{
Alert("New candle on M1");
ObjectMove(0,"1-Minute",0,iTime(Symbol(),PERIOD_M1,0),0); // Move line
M1=iTime(Symbol(),PERIOD_M1,0);// Overwrite old with new value
}
if(M5!=iTime(Symbol(),PERIOD_M5,0))
{
Alert("New candle on M5");
M1=iTime(Symbol(),PERIOD_M5,0);// Overwrite old with new value
}
if(M15!=iTime(Symbol(),PERIOD_M15,0))
{
Alert("New candle on M15");
M15=iTime(Symbol(),PERIOD_M15,0);// Overwrite old with new value
}
if(M30!=iTime(Symbol(),PERIOD_M30,0))
{
Alert("New candle on M30");
M30=iTime(Symbol(),PERIOD_M30,0);// Overwrite old with new value
}
// and so on to MN1...
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
ObjectMove(0,"Time",0,TimeCurrent(),0);// Update timeline
}
//+------------------------------------------------------------------+
Не знаю, как другие, но меня отвлекает и раздражает ваше сочетание шрифта, цветов, жирного и курсивного начертания. На самом деле я не мог потрудиться прочитать этот пост.
Max Enrik:
Не знаю, как другие, но меня отвлекает и раздражает ваше сочетание шрифта, цветов, жирного и курсивного начертания. На самом деле, я не мог потрудиться прочитать этот пост.