Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 115
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Этот блок кодов обнаруживает новый бар или новую свечу, когда он получен.
Основной принцип работы кодов очень прост. Сначала код сохраняет время предыдущего бара/свечи. (Затем к времени предыдущего бара добавляется 60 секунд (равно 1 мин. , вы можете добавить время по своему усмотрению), которые дают значение времени закрытия текущего бара/свечи.
Один раз,
Текущее время = значение времени закрытия текущего бара / свечи. Это означает, что новый бар был получен / текущий бар закрылся.
В данном коде флаг (переменная типа bool 'NewBarRecived') позволяет избежать многократного вызова этого блока кода, что означает, что этот блок кода выполняется только один раз за бар / свечу. Comment(); и playsound("ok.wav"); используется для проверки точности блока кода. Вы можете удалить их, если хотите.
Флаг сбрасывается в false, как только текущее время превышает время закрытия текущей свечи, чтобы проверить прибытие следующего бара. (Смотрите комментарии, чтобы увидеть).
//+------------------------------------------------------------------+ //|Обнаружение нового бара.mq5 | //|по H A T Lakmal | //|https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarRecived = false; // Falg for control. //+------------------------------------------------------------------+ //| Функция инициализации эксперта| //+------------------------------------------------------------------+ int OnInit() { //--- создайте таймер EventSetTimer(60); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Функция деинициализации эксперта| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- уничтожить таймер EventKillTimer(); } //+------------------------------------------------------------------+ //| Функция экспертного тика| //+------------------------------------------------------------------+ void OnTick() { datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1); datetime TimeCurrentClose = TimePreviousBar + 60; // Время закрытия текущего бара. datetime Time_Current = TimeCurrent(); if(Time_Current == TimeCurrentClose && NewBarRecived == false) { PlaySound("ok.wav"); // Для работы с заявлениями не. NewBarRecived = true; // Обновите флаг, чтобы избежать многократных вызовов. // Ваш код находится здесь ----- (Do Something) } else if(Time_Current > TimeCurrentClose) { NewBarRecived = false; // Устанавливаем флаг для открытия следующего бара. // Ваш код находится здесь ----- (Do Something) } Comment("\n" + "\n" + "Time Current Bar -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Time Current Close -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Time Current -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" +"\n" + "A New Bar Recived -: " + NewBarRecived); // Для контрольных расчетов } //+------------------------------------------------------------------+ //| Функция таймера| //+------------------------------------------------------------------+ void OnTimer() { //--- } //+------------------------------------------------------------------+ //| Торговая функция| //+------------------------------------------------------------------+ void OnTrade() { //--- } //+------------------------------------------------------------------+ //| Функция ChartEvent| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- } //+------------------------------------------------------------------+
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/49018
Code Block for "Trailing Stop" based on current market price. (Ask / Bid)
Этот блок кода перебирает все открытые позиции и делает трейлинг на основе цен Ask и Bid.
ConvertServerTime
Функция для преобразования времени сервера из одного часового пояса брокера в другой.
Logarithmic Moving Average
Логарифмическая скользящая средняя постоянно рассчитывает среднее логарифмическое значение самой высокой и самой низкой цены за период.
Harmonic Moving Average
MQL5-версия гармонической скользящей средней