Ошибки, баги, вопросы - страница 600

 
papaklass:

Urain, sergeev спасибо за ответы.

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

Про "пузырьковую"  сортировку первый раз слышу. Если можете, то по-подробнее и лучше с простеньким примером. В любом случае Ваши ссылки почитаю.

Еще раз спасибо за ответы. 

http://ru.wikipedia.org/wiki/Сортировка_пузырьком

А вообще гуглим, в статье кстати реализована шейкерная сортировка индексов (но я по привычке называю её пузырьковой).

ЗЫ шейкерная отличается от пузырьковой тем что в пузырьковой проходы идут в одну сторону, тогда как в шейкерной чередуются, что ускоряет сортировку за счёт уменьшения проходов, так как пузырьки не только всплывают но и тонут.

Сортировка пузырьком — Википедия
  • ru.wikipedia.org
Сортировка простыми обменами, сортиро́вка пузырько́м (англ.  ) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²). Алгоритм считается учебным и практически не применяется вне учебной литературы, вместо него на практике применяются более...
 

 Угадайте с трёх раз, с вопросом о каком индикаторе я пожаловал? Правильный ответ: iFractals. Неожиданно, правда?

 В разделе справки о Пользовательских индикаторах https://www.mql5.com/ru/docs/customind сказано: "Например, если текущее значение rates_total=1000, а prev_calculated=999, то, возможно, нам достаточно сделать расчеты только для одного значения каждого индикаторного буфера." Но всё это относится к первой - короткой - форме вызова функции OnCalculate(). Если же в расчёте принимают участие несколько буферов для расчёта индикаторных значений, эта форма не подойдёт.

 Запустим на M1 код примера iFractals из справки, где используется вторая - полная - форма вызова функции OnCalculate(). Но перед этим внутри этой функции исправим

Comment(comm);

на

Print(comm);

для того, чтобы не упустить из виду ни одной строки с выводимыми результатами (если оставить как есть, визуально всегда будет видна 1, поскольку другие значения бывают редко и сразу же сменяются единицей, поэтому кажется, что единица выводится всегда). После запуска убеждаемся, что не единичные значения появляются каждую минуту, то есть на каждом новом баре, из чего недвусмысленно явствует, что индикатор перерисовывается ежеминутно полностью, несмотря на то, что в коде используется экономный алгоритм. Сомневающиеся могут добавить несколько строк кода, рисующего на каждом фрактале, скажем, вертикальные линии, затем, после первой отрисовки, удалить их, дождавшись через минуту, с появлением нового бара, появления полного набора таких же линий. Ни о какой дорисовке только последнего фрактала или линии речи почему-то не идёт.

 Вопрос к разработчикам: индикатор написан небрежно? или вовсе не было цели дорисовывать только последнее - новое - расчётное значение фрактала? или я жизнерадостно попутал блок кода с вычислениями values_to_copy с экономным алгоритмом, которого там нет и в помине? или при полной форме вызова функции OnCalculate() невозможно в принципе использовать аналог const int begin для задания начала значимых данных?

 Прошу заметить, что никакого заполнения "дыр" в истории, подгрузки баров из прошлого и прочих событий, обнуляющих prev_calculated, в ходе эксперимента не происходит! То есть нет причин для перерасчёта значений всего индикатора.

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

Документация по MQL5: Пользовательские индикаторы
Документация по MQL5: Пользовательские индикаторы
  • www.mql5.com
Пользовательские индикаторы - Документация по MQL5
 

 Убедительная просьба к разработчикам (кстати, я не первый, кто об этом просит): пожалуйста, замените старую версию индикатора Fractals на новую. (Для справки: в старой версии самый свежий фрктал может появляться уже на предпредпоследнем баре (следствием чего может быть нежелательная его перерисовка), тогда как в новой версии самый свежий фрактал может появиться не ближе, чем за три бара от самого нового бара.) Разумеется, вручную мы можем по желанию набрасывать на график как из Билла Вильямса, так и из Пользовательских индикаторов либо старую версию, либо поновее, но вот при попытке сослаться в своём коде на хэндл iFractals всё ещё задействуется старая версия. Сколько времени было убито на то, чтобы в который раз окститься по этому поводу и не биться лицом об стол в попытках выявить якобы свой баг...

 P.S.:  целиком не обновлялся, только через Live Update. Может, дело в этом? Подскажите. Если так, обновлюсь полностью.

 
x100intraday:

 Убедительная просьба к разработчикам (кстати, я не первый, кто об этом просит): пожалуйста, замените старую версию индикатора Fractals на новую. (Для справки: в старой версии самый свежий фрктал может появляться уже на предпредпоследнем баре (следствием чего может быть нежелательная его перерисовка), тогда как в новой версии самый свежий фрактал может появиться не ближе, чем за три бара от самого нового бара.) Разумеется, вручную мы можем по желанию набрасывать на график как из Билла Вильямса, так и из Пользовательских индикаторов либо старую версию, либо поновее, но вот при попытке сослаться в своём коде на хэндл iFractals всё ещё задействуется старая версия. Сколько времени было убито на то, чтобы в который раз окститься по этому поводу и не биться лицом об стол в попытках выявить якобы свой баг...

 P.S.:  целиком не обновлялся, только через Live Update. Может, дело в этом? Подскажите. Если так, обновлюсь полностью.

А что мешает использовать iCustom(...) ?
 
Valmars:
А что мешает использовать iCustom(...) ?
 В принципе - ничего. Но устаревшая версия одного и того же индикатора - это не дело, от старья нужно по определению избавляться на уровне дистрибутива, а это, по-моему, уже должна быть забота самих разработчиков. А уж если и оставлять старое, то не дефолтно, дефолтом должно ставить новое, более корректное. Лично я с огромной натяжкой мог бы назвать старую версию альтернативной; в действительности это откровенно некорректная версия, опираясь на которую можно словить очень много неприятностей в будущем.
 
x100intraday:

 Убедительная просьба к разработчикам (кстати, я не первый, кто об этом просит): пожалуйста, замените старую версию индикатора Fractals на новую. (Для справки: в старой версии самый свежий фрктал может появляться уже на предпредпоследнем баре (следствием чего может быть нежелательная его перерисовка), тогда как в новой версии самый свежий фрактал может появиться не ближе, чем за три бара от самого нового бара.)

1. о какой новой версии идет речь?

2. Что вам мешает опрашивать не 2 а 3 бар?

 
У меня вопросик: возможно ли получение данных индикаторов по разным валютным парам, а не только по той на которой установлен индикатор.
#property copyright "2010, Graff"
#property link      "http://www.mql5.com"
............
hwd_EURUSDf=iMA("EURUSD",0,Fast*k,shift,smootMode,price);
hwd_GBPUSDf=iMA("GBPUSD",0,Fast*k,shift,smootMode,price);
.......
if(CopyBuffer(hwd_EURUSDf,0,i,1,buff)<=0) return(-1);
if(CopyBuffer(hwd_GBPUSDf,0,i,1,bufs)<=0) return(-1);

 и т.д. чтой-то не работаетю . Выше приведён кусок кода из CCFp.mq5, который установил для самопроверки. Свой индюк (написаный по тому же принципу т.е. хендлы->CopyBuffer

отказался работать(Print(buff[i])  показывает какую-то хрень.

Просьба: если есть решение - код пожайлуста! MT5 bild 555/ 

 
alexx_v:

Вот, услышал только что, как после обрыва терминал восстановил связь с сервером, посмотрел - так и есть, опять глюк-с:


alexx_v:

Вот, услышал только что, как после обрыва терминал восстановил связь с сервером, посмотрел - так и есть, опять глюк-с:


Эта картинка на МТ4 или МТ5?
 
sergeev:

1. о какой новой версии идет речь?

2. Что вам мешает опрашивать не 2 а 3 бар?

 1. В стандартных индикаторах есть два с виду идентичных индикатора Fractals: в разделе с индикаторами Билла Вильямса и в разделе Пользовательский. При сравнении выясняется, что первый имеет склонность к перерисовке некоторых свежих фракталов на предпредпоследнем баре, второй лишён этого недостатка, так как самый свежий выверяется в цикле его же алгоритмом по i<rates_total-3, то есть с запасом в один бар, тогда как сами фракталы алгоритмически образуются с проверкой всего лишь двух прилежащих баров и при необходимости окончательно утверждаются лишь при появлении нового - третьего - бара. Я знаю место расположения правильных фракталов: C:\Program Files\MetaTrader 5\MQL5\Indicators\Examples\Fractals.mq5, но его не знает iFractals, зато  iFractals  знает путь к старой версии, которую я днём с огнём найти не могу. Уж не из C:\Program Files\MetaTrader 5\MQL5\Include\Indicators\BillWilliams.mqh ли он берёт старый код?

Сомнительный (преждевременный) фрактал vs фрактал, который может быть утвёрждён только с появлением нового бара 

 2. Ничего, это решение очевидно и я им почти уже пользуюсь. Но дело в другом. Если не заглядывать глубоко в проект, а учитывать только фракталы, то да - нет ничего страшного в перерисовке; если же на основе перепрыгивающих фракталов делать графические ТА-построения, а на их основе ещё и делать автоторговлю, то в некоторых случаях будут ложные срабатывания (слишком ранние открытия позиций), так как перерисовки фрактала ещё не произошло и корректировка построений ещё не осуществлялась, а сигнал на вход в рынок уже сработал. Когда произойдёт перерисовка фрактала плюс перепостроение графического инструмента, всё будет скорректировано, кроме преждевременно открытой позиции. Калечить позицию закрытием, уменьшением или открытием встречной - не самое приятное решение, остаётся нагружать индикатор дополнительными фильтрами, проверками, вступающими в противоречия с сомнительным сигналом и оттого уменьшающими частоту сделок, а также увешивать прочим отягощающим балластом.

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

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

 и т.д. чтой-то не работаетю . Выше приведён кусок кода из CCFp.mq5, который установил для самопроверки. Свой индюк (написаный по тому же принципу т.е. хендлы->CopyBuffer) 

отказался работать(Print(buff[i])  показывает какую-то хрень.

Просьба: если есть решение - код пожайлуста! MT5 bild 555/ 

Ага, вроде бы разобрался с проблемой сам.

Вопрос к админам : терминал качал с сайта, в примере из справки  использована (xxx=iMA(.....)), но! самой МА в индикаторах нет -  Она в инклюдах. Это тест на сообразительность?

Времени ЖАЛКО! 

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