![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Самый простой способ:
static datetime tlastbar=0;
datetime tnewbar=iTime(NULL,PERIOD_CURRENT,0);
bool isnewbar=tnewbar!=tlastbar;
tlastbar=tnewbar;
Вот моя окончательная версия.
На самом деле я немного волнуюсь, потому что это так просто.
Ален: Было бы здорово, если бы вы выпустили благословение.
// -----------------------------------------------------------------------
if(MathMod(TimeCurrent(),PeriodSeconds()) < currPeriodProgress) iNewBar = true;bool NewBar(void)
{
bool iNewBar = false;
static double currPeriodProgress = 0;
currPeriodProgress = MathMod(TimeCurrent(),PeriodSeconds());
return(iNewBar);
}
// ------------------------------------------------------------------------
void OnTick()
{
if(NewBar()) PlaySound("tick.wav");
Приветствую вас из Кельна
Вилбур
Проблема в том, что его можно использовать только в OnTick(). Из других обработчиков событий вы никогда не будете уверены, что TimeCurrent() связан с нужным вам символом.
И я советую вам никогда не делать один и тот же расчет дважды:
Насколько я знаю, эта тема предназначена для mql5. Ваш код предназначен только для mql4.
Я использовал их в MQL4
Что вы имеете в виду? Это просто фрагмент, который можно включить куда угодно, например, в функцию NewBar(). И, имо, это самое простое и быстрое, надежное решение. Я включил это в производную от класса CSymbolInfo для всех таймфреймов по отдельности, и это работает идеально.
В mql5 нет функции iTime().
MT5, правда? Но MQL5 - это не только MT5, по крайней мере я так всегда понимал, потому что MT4 использует компилятор MQL5. Но на самом деле я этого не знал, я использую в основном MT4. В любом случае, спасибо за информацию об ограничении.
MQL4 iTime() прост и понятен для трейдеров, как и большинство других функций MQL4.
MQL5 - совсем другое дело, для его программирования нужна степень по информатике, и именно это отпугивает большинство людей.
Вот пример, с которым я столкнулся на прошлой неделе, когда хотел запустить и конвертировать советника MT4 в MT5, и решение, которое я нашел.
Нет, mql4 - для MT4, mql5 - для MT5. У них есть общее подмножество функций, но это 2 разных языка.
Язык один и тот же, но у них есть небольшое подмножество функций, которые не являются общими ;) В любом случае, вы, вероятно, правы с этим определением. MQ сделал многое, чтобы породить путаницу в этом вопросе.
MT5, правда? Но MQL5 - это не только MT5, по крайней мере я так всегда понимал, потому что MT4 использует компилятор MQL5. Но на самом деле я этого не знал, я использую в основном MT4. В любом случае, спасибо за информацию об ограничении.