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

 
DhP:

Как "облегчить" этот цикл? Считает очень долго.
 if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) if(LOWprice> bid) CountH++ else CountL++; 
 
Скажите, зачем Вам бары "за год"? Зачем Вам бары "за год", если реально Вам нужны данные лишь "на определённом участке"? Найдите инструмент, определяющий "размеры участка", а затем используйте количество баров равное "размеру участка".
 
splxgf:
Да, так "покрасивше" и правильнее будет.
 
DDFedor:
Скажите, зачем Вам бары "за год"? Зачем Вам бары "за год", если реально Вам нужны данные лишь "на определённом участке"? Найдите инструмент, определяющий "размеры участка", а затем используйте количество баров равное "размеру участка".
Ничего не понял...
 
Насчет красоты и правильности не знаю, но от двойного вызова iHigh,iLow избавляет... сейчас думать лень, если понять логику кода может будут и другие варианты.
 
splxgf:
Насчет красоты и правильности не знаю, но от двойного вызова iHigh,iLow избавляет... сейчас думать лень, если понять логику кода может будут и другие варианты.


здесь:

          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountL++;

двойного вызова iHigh, iLow нет - есть лишняя проверка if(LOWprice<=bid) - надо использовать else

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

Для завтрашней свежей головы:

Двойной цикл ( while и for) выбираeт цены выше и ниже Бид и считаeт, сколько раз цена "пронизывает" часовые бары за год.

Ценa, пронизавшая наибольшее количество баров, есть уровень сильного сопротивления.

Так получаем в диапазоне 600 пунктов 2 сильных уровня. Выше и ниже Бид.

 

А так я бы сделал большой массив (60 килобайт не так уж и много и ими можно пожертвовать ради быстродействия) уровней цены и в него как раз бы и запихивал количество пересечений часовыми барами. Обсчитывался бы он один раз в init, и с появлением нового часового бара делался бы инкремент нужных уровней, а во всех других случаях была бы выборка из массива под нужную цену одним простеньким циклом.

 
abolk:


если программно - при открытии ордера - есть магик и комментарий - информацию о том, по какому именно условию открыт ордер, можно шифровать в магике или комментарии

а вообще, стоп срабатывает не по условию, а по достижению цены ценового уровня - это ордер можно закрыть по условию

А как возвращаться к уже написанному комментарию, спустя n баров после написания?


Вообще как можно получить информацию о последнем закрытом ордере?

 
Xaoss1990:

А как возвращаться к уже написанному комментарию, спустя n баров после написания?

Вообще как можно получить информацию о последнем закрытом ордере?


выбирается ордер https://docs.mql4.com/ru/trading/OrderSelect - перебор в цикле или выбор по тикету

затем функцией Order*() соответствующий параметр ордера смотрится

Причина обращения: