[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 174

 
tpg_k156:
Доброго дня всем. Не подскажите ли способы копирования сделок на Метатрейдере 4. Чтобы открывая сделку на одном терминале можно было бы получить открытую сделку на другом.

Поищите в CodeBase копировщик. Не самые лучшие конечно, но они есть в свободном доступе
 
Кто знает, можно ли, сделав Hour(), Minute() и Seconds() глобальными переменными, контролировать в полночь (0.00) смену в индикаторе DailyPivotPoints на новые уровни РР и др. линии из советника? Я раньше сделал прямо в индикаторе с Hour(), Minute(), Seconds(), и работало без необходимости каждую ночь компилировать. А недавно перестало само меняться, может, от смены бильда? Спасибо!
 
borilunad:
Кто знает, можно ли, сделав Hour(), Minute() и Seconds() глобальными переменными, контролировать в полночь (0.00) смену в индикаторе DailyPivotPoints на новые уровни РР и др. линии из советника? Я раньше сделал прямо в индикаторе с Hour(), Minute(), Seconds(), и работало без необходимости каждую ночь компилировать. А недавно перестало само меняться, может, от смены бильда? Спасибо!

Должно срабатывать на первом тике новых суток. 
 
borilunad:

Спасибо, Виктор! А Вам пришёлся мой короткий вариант для Вас? 


 Да Борис, очень, кстати, подошёл! Благодарю Вас. Я этого и хотел. Крутил.. вертел.. да не докрутил видать. Опыта ещё не много, и мозг не так мыслить как у профи. Бывают затупы на ровном месте.. :(

 Не хотел сразу спрашивать, но всё же пришлось. Т.к. не вышло у самого сократить. 

 
Подскажите как построить канал проходящий через фракталы, но ограничен 0 баром, при появлении нового бара, перерисовывался дальше. Проблема именно в ограничении.
 
beginner:
Подскажите как построить канал проходящий через фракталы, но ограничен 0 баром, при появлении нового бара, перерисовывался дальше. Проблема именно в ограничении.

Раскройте понятие "ограничен 0 баром"
 

 Вот функция:

bool IsUpFractal(int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return (false);                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0)                                      // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

// - 2 - == Поиск максимумов слева от центрального бара =================================
   cnt = 0;
   i = index + g_center + 1;
   int total = Bars - 1;
   for (; i < total && cnt < g_center; i++)        // Слева от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh == High[i])                   // ..максимумом. Не позволяется..
         continue;                                 // ..наличие баров с большим..
      if (centerHigh < High[i])                    // ..максимумом. Равный - позволяется
         return (false);
      cnt++;                                    
   }
   
   if (i >= total)                                 // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 2 - == Окончание блока =============================================================
                                                   
   return (true);                                  // Фрактал найден                 
}
//+-------------------------------------------------------------------------------------+
//| Определение наличия нижнего фрактала на указанном баре                              |
//+-------------------------------------------------------------------------------------+
bool IsDnFractal(int index)
{
   double centerLow = Low[index + g_center];       // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск минимумов справа от центрального бара =================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
      if (centerLow >= Low[i])                     // ..минимумом. Не позволяется..
         return (false);                           // ..наличие баров с меньшим или..
      cnt++;                                       // .. равным минимумом
   }
   
   if (i < 0)                                      // g_center-1 больших минимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

// - 2 - == Поиск минимумов слева от центрального бара ==================================
   cnt = 0;
   i = index + g_center + 1;
   int total = Bars - 1;
   for (; i < total && cnt < g_center; i++)        // Слева от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
      if (centerLow == Low[i])                     // ..минимумом. Не позволяется..
         continue;                                 // ..наличие баров с меньшим минимумом
      if (centerLow > Low[i])                      // ..Равный минимум - разрешается
         return (false);
      cnt++;   
   }
   
   if (i >= total)                                 // g_center-1 больших минимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 2 - == Окончание блока =============================================================
                                                   
   return (true);                                  // Фрактал найден                 
}

 В функцию попадает значение index которое имеет значение бара для расчёта 0 или 1. Тут интересно написан цикл.:

for (; i >= 0 && cnt < g_center; i--)

 Т.е. нет значения переменной от которой начинать расчёт. По логике машины, с какого бара с это случае будет начинаться расчёт? Если стоит декремент i-- значит с максимального?

 Опять же там i = index + g_center - 1, а вот тут момент. Первым значением index сюда какое придёт? Максимальное или минимальное? 

 
hoz:

 Т.е. нет значения переменной от которой начинать расчёт. По логике машины, с какого бара с это случае будет начинаться расчёт? Если стоит декремент i-- значит с максимального?


Нет, с того, которое переменая i имела до цикла. Запись

   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)

идентична

   int cnt,i;
   for (cnt = 0, i = index + g_center - 1; i >= 0 && cnt < g_center; i--)
 
Другими словами, первое выражение в цикле for можно писать как на своем месте, так и перед циклом, результат от этого не меняется.
 
hoz:

 Опять же там i = index + g_center - 1, а вот тут момент. Первым значением index сюда какое придёт? Максимальное или минимальное? 


index будет тем, которое передано в функцию в качестве параметра.
Причина обращения: