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

 

NewBar() называется; но, если долго искать будете - хуже себе не сделаете :)

 

newbar https://book.mql4.com/ru/variables/arrays

Концептуально ничем не отличается.

void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }

 
splxgf:

newbar https://book.mql4.com/ru/variables/arrays

Концептуально ничем не отличается.


Концептуально - ничем, но работать не будет,- Вы уж извините.
 
По идикатору ADX написанно много, но есть особенность которую хотелось бы учесть, вот в кратце....А можно сделать так что бы бары раскрашивались в таком алгоритме: если текущее значение ADX больше предыдущего и +(плюсовая линия) выше минусовой то бар красится в зеленный, но если текущее значение ADX меньше предыдущего значения то бар окрашивается в серый(тут уже не важно где находится плюсовая линия), ну и наконец если текущее значение ADX больше предыдущего ADX и - (минусовая линия) выше плюсовой то бар красится в красный. А то просто раскрашивание в синий и красный ни как не облегчает ситуацию. или просто что бы можно было задать значение ADX выше которого стрелки не рисовались, а то очень много стрелок.спасибо.
 
splxgf:
double OpenBar=0; 
 
int start()
   {
    //Проверка на начало нового бара
    if (OpenBar==Time[0]) return; else OpenBar=Time[0];
   }

Я бы с переменной типа double тут не игрался! Памяти больше надо! ;)))

А когда происходит приведение типа int в целевой тип double, Я так понимаю лишних цифр после запятой не возникнет? Лично Мне не попадались такие случаи. Но поинтересоваться будет не лишним.


tara:

Концептуально - ничем, но работать не будет,- Вы уж извините.
Какой именно код работать не будет и почему?
 

Тот, который Вы процитировали,- будет пропускать часть баров.

 
tara:

Тот, который Вы процитировали,- будет пропускать часть баров.


Предложите товарищу свой вариант и объясните ему чем он лучше. А то пока только одни слова
 

1. Пропускать часть баров будет, поскольку результат сравнения double==int зависит от конкретного значения int, которое было ранее помещено в double. Здесь именно так и происходит: время (int) пишем в double - для всех чисел, не являющимися степенью двойки происходит потеря точности, в результате которой double3 != int3, хотя double4 == int4.

2. Я понимаю, что это - всего лишь чья-то техническая ошибка, многократно затем растиражированная. На самом деле, надо просто исправить тип OpenBar на dаtetime, либо int. Но - сон разума порождает чудовищ: проще просто повторить чужой код и зажмуриться :)

3. Решение некорректно с точки зрения распределения памяти: здесь достаточно локальной переменной static, лишняя глобальная переменная ни к чему - программный мусор, хотя это и мелочь :(

 
tara:

1. Пропускать часть баров будет, поскольку результат сравнения double==int зависит от конкретного значения int, которое было ранее помещено в double. Здесь именно так и происходит: время (int) пишем в double - для всех чисел, не являющимися степенью двойки происходит потеря точности, в результате которой double3 != int3, хотя double4 == int4.

2. Я понимаю, что это - всего лишь чья-то техническая ошибка, многократно затем растиражированная. На самом деле, надо просто исправить тип OpenBar на double. Но - сон разума порождает чудовищ: проще просто повторить чужой код и зажмуриться :)

3. Решение некорректно с точки зрения распределения памяти: здесь достаточно локальной переменной static, лишняя глобальная переменная ни к чему - программный мусор, хотя это и мелочь :(


Осталось привести код. Мне уже просто надоело одно и то же через пять страниц повторять. Тем более что правильное решение легко найти через поиск
 

Всем доброго дня!

Вопрос про советник. Проссматривая множество советников, хочу понять - как автоматически производятся сделки. Вроде всё настраиваю правильно, разрешаю советнику торговать, понимаю идею - но сделок почему-то нет. Может он применяется к какому-то конкретному инструменту? Или таймфрейму? Как это можно узнать?..