Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Simple Code for Detect A "New Bar or New Candle " Received - эксперт для MetaTrader 5

Просмотров:
115
Рейтинг:
(8)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Этот блок кодов обнаруживает новый бар или новую свечу, когда он получен.

Основной принцип работы кодов очень прост. Сначала код сохраняет время предыдущего бара/свечи. (Затем к времени предыдущего бара добавляется 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) Code Block for "Trailing Stop" based on current market price. (Ask / Bid)

Этот блок кода перебирает все открытые позиции и делает трейлинг на основе цен Ask и Bid.

ConvertServerTime ConvertServerTime

Функция для преобразования времени сервера из одного часового пояса брокера в другой.

Logarithmic Moving Average Logarithmic Moving Average

Логарифмическая скользящая средняя постоянно рассчитывает среднее логарифмическое значение самой высокой и самой низкой цены за период.

Harmonic Moving Average Harmonic Moving Average

MQL5-версия гармонической скользящей средней