Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 529

 
YanSay:

Вот так?

Я бы цикл делал так:

for(int i=OrdersTotal()-1; i>WRONG_VALUE; i--)

Привык к постдекременту/постинкременту - мне он понятен, в отличие от префиксных инкрементов/декрементов, так как (из справки) префиксныe инкремент (++i) и декремент (--k) применяются к переменной непосредственно перед использованием этой переменной в выражении.

А вот сравнение у вас совсем не верно:

if(NormalizeDouble((Ask-OrderStopLoss()>Trailing*Point),Digits))

Здесь вы нормализуете булево значение - результат сравнения двух величин - значение выражения Ask-OrderStopLoss() сравниваете со значением выражения Trailing*Point и потом нормализуете результат этого сравнения.

А результат сравнения может быть только false (0) или true (не ноль). И вот это ноль или не ноль вы и нормализуете.

А нужно так сравнивать:

if(NormalizeDouble((Ask-OrderStopLoss())-Trailing*Point,Digits)>DBL_EPSILON)
  {
   // Ask-OrderStopLoss() больше Trailing*Point
  }
 
Juer:
Что значит ошибка?


У меня функция с двумя объектами:

В одном из классов есть структура с более чем 4000 полей (в основном enums).

Что делать с этой ошибкой?

bool              CheckCandleOneRules(CCandlePropertiesBase *candle,
                                      CCandleRule *rule,
                                      int dir);

Здесь вылазит the size of local variables is too large (more than 512kb) при компиляции.

Куда смотреть и что делать? В функции есть массив строк CArrayString, подозреваю, что с ним может быть связана ошибка.

Я его заполняю методом Add(), затем делаю Clear() и еще Shutdown(). А потом заполняю снова новыми данными методом Add(). В этом случае массив снова с нулевого элемента будет заполняться?

 

Как узнать, в истории, самую длинную последовательность подряд идущих, разнонаправленных свечек?

Пример: первая медвежья, вторая бычья, третья медвежья и так далее. Предполагаю нужен какой то цикл и  переменная в которую нужно записывать количеств таких свечей, но не знаю какой должен быть цикл и как, по какому условию  выходить из него.

 
PolarSeaman:

Как узнать, в истории, самую длинную последовательность подряд идущих, разнонаправленных свечек?

Пример: первая медвежья, вторая бычья, третья медвежья и так далее. Предполагаю нужен какой то цикл и  переменная в которую нужно записывать количеств таких свечей, но не знаю какой должен быть цикл и как, по какому условию  выходить из него.

CopyRates и цикл по массиву структур MqlRates.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
Получает в массив rates_array исторические данные структуры MqlRates указанного символа-периода в указанном количестве. Отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества данных рекомендуется в качестве приемного...
 
Alexey Viktorov:

CopyRates и цикл по массиву структур MqlRates.

Спасибо, цикл по массиву, это как? и когда выходить из него?

 
PolarSeaman:

Спасибо, цикл по массиву, это как? и когда выходить из него?

Так-же как и по списку ордеров. Только необходимо внимательно отнестись к направлению индексации в массиве. А выходить... если это надо однократно, среди последних баров искать, то выходить как только нарушена последовательность. Если-же это будет индикатор, то выходить по окончании массива.
 
PolarSeaman:

Как узнать, в истории, самую длинную последовательность подряд идущих, разнонаправленных свечек?

Пример: первая медвежья, вторая бычья, третья медвежья и так далее. Предполагаю нужен какой то цикл и  переменная в которую нужно записывать количеств таких свечей, но не знаю какой должен быть цикл и как, по какому условию  выходить из него.

А считать откуда максимальную последовательность, от момента создания форекс?

 
Alexey Viktorov:
 то выходить как только нарушена последовательность.

Как, вообще эту последовательность записать?

 
Vitaly Muzichenko:

А считать откуда максимальную последовательность, от момента создания форекс?

Было бы здорово) Но история брокера ограничена, искать по всей доступной. или за прошедший год т.е с 15. 04. 17

 
PolarSeaman:

Как, вообще эту последовательность записать?

Как записать, Алексей ответил. Было-бы здорово, если-бы и код написал, как он это видит, если у него есть время, и желание)

Я вижу реализацию через флаг, но она мне кажется неверной, что даже не хочу начинать пробовать.

PS. Кстати, это индикатор, или советник? 
Причина обращения: