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

 
artmedia70:

1. Если есть закрытая позиция по тейку, ...

1.1 Если её тип OP_BUY, ...

1.1.2 Если есть открытая позиция OP_SELL, ...

1.1.3 Если время текущего бара минус время бара открытия позиции Sell больше или равно количеству баров для задержки, ...

1.1.4. Закрываем позицию Sell

1.2 Если её тип OP_SELL, ...

1.2.2 Если есть открытая позиция OP_BUY, ...

1.2.3 Если время текущего бара минус время бара открытия позиции Buy больше или равно количеству баров для задержки, ...

1.2.4. Закрываем позицию Buy

Благодарю за алгоритм,все оказалось гораздо сложнее,нежели я предполагал(

А не моли бы Вы набросать код хотя бы в общем виде, а то я предыдущее писал несравнимо долго,а похожих советников я найти так и не смог....

буду очень благодарен!

 
Все-таки прежде, чем пытаться решать задачу на пределе своих возможностей, лучше попытаться оценить, а так ли нужно это решение.
А похожих функций много здесь - Полезные функции от KimIV. Есть там и готовая под Вашу задачу.
 

Здравствуйте.

Помогите, пожалуйста, найти ошибку. Код считает сумму значений RangeX0_D1

В приведённом виде итог равен лишь последнему (шестому) члену последовательности.

Заранее благодарю.

  int k;
  double RangeX0_D1  = 0;  
  for (k=1;k<=6;k++) 
   {
    RangeX0_D1  = (iHigh(NULL,1440,k)-iLow(NULL,1440,k))/Point;
    if (RangeX0_D1>0)
    RangeX0_D1++;
   }
 
int k;
  double RangeX0_D1  = 0;  
  for (k=1;k<=6;k++) 
   {
    RangeX0_D1  += (iHigh(NULL,1440,k)-iLow(NULL,1440,k))/Point;
   }
 
FAQ:
Спасибо за помощь, точность и оперативность :)
 
nemo811:
Спасибо за помощь, точность и оперативность :)


Для ускорения расчетов лучше немного по другому

int k;
  double RangeX0_D1  = 0;  
  for (k=1;k<=6;k++) 
   {
    RangeX0_D1  += (iHigh(NULL,1440,k)-iLow(NULL,1440,k));
   }
   RangeX0_D1 /= Point;

Деление долго выполняется. Лучше его один раз делать

 
Добрый день, подскажите пожалуйста, почему могут не загружатся котировки с 10 июня по 22 сентября текущего года? Сделал по двум - трем валютам загрузку истории и у всех один и тот же пробел в данных.
 
Добрый день, нужен совет: в цикле происходит поиск значений, удовлетворяющих определенным условиям. Найденные значения записываются в массив. Заранее не известно, сколько значений будет найдено. соответственно неизвестен размер массива, который нужно объявить. С точки зрения экономии времени и ресурсов не хотелось бы делать два прогона (чтобы в первом прогоне посчитать количество найденных значений, объявить массив и уже во втором прогоне записать в массив данные). Можно ли как-то получить требуемый результат за один прогон?
 
Elenn:
Добрый день, нужен совет: в цикле происходит поиск значений, удовлетворяющих определенным условиям. Найденные значения записываются в массив. Заранее не известно, сколько значений будет найдено. соответственно неизвестен размер массива, который нужно объявить. С точки зрения экономии времени и ресурсов не хотелось бы делать два прогона (чтобы в первом прогоне посчитать количество найденных значений, объявить массив и уже во втором прогоне записать в массив данные). Можно ли как-то получить требуемый результат за один прогон?

Массив "бесконечной" длины можно объявить в индикаторе. Объявить и затем в цикле сразу вписывать найденные значения в массив. Вопрос лишь в том, как осуществить передачу нужной Вам выборки в советника/скрипт? Средства есть, но нужно оценить трудоёмкость. Может действительно проще будет делать 2 прогона - в первом подсчитываем число отфильтрованных значений, затем меняем размерность массива, а во втором вносим значения в массив?
 
Elenn:
Добрый день, нужен совет: в цикле происходит поиск значений, удовлетворяющих определенным условиям. Найденные значения записываются в массив. Заранее не известно, сколько значений будет найдено. соответственно неизвестен размер массива, который нужно объявить. С точки зрения экономии времени и ресурсов не хотелось бы делать два прогона (чтобы в первом прогоне посчитать количество найденных значений, объявить массив и уже во втором прогоне записать в массив данные). Можно ли как-то получить требуемый результат за один прогон?

Объявить массив больше максимально необходимого размера.
Причина обращения: