Извиняюсь, забыл прикрепить, пока разбирался как вставить код.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Возвращает ближайший верхний фрактал |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| nl - количество баров слева |//| nr - количество баров справа |//+----------------------------------------------------------------------------+double GetNearestUpFractal(string sy="0", int tf=0, int nl=2, int nr=2) {
bool f;
int fb, i, nb=-1;
if (sy=="" || sy=="0") sy=Symbol();
if (nl<1) nl=1;
if (nr<1) nr=1;
fb=nr;
while (nb<0) {
fb++;
f=True;
for (i=fb; i>fb-nr; i--) {
if (iHigh(sy, tf, i)<iHigh(sy, tf, i-1)) { f=False; break; }
}
if (f) {
for (i=fb; i<fb+nl; i++) {
if (iHigh(sy, tf, i)<iHigh(sy, tf, i+1)) { f=False; break; }
}
if (f) { nb=fb; break; }
}
}
return(iHigh(sy, tf, nb));
}
Но, эту функцию можно заменить на стандартный код расчета фрактала
Эта функция работает в режиме реального времени и видит только последний фрактал
Ваш перебор в 100 баров ничего не дает
PS Сделайте цикл for и используйте
Да, я это в процессе обращения увидел и понял, но боюсь у меня и здесь будет косяк. Я сейчас постараюсь написать часть кода и выложу, а вы если вам будет не трудно, подскажите правильно ли я написал.
Эта функция работает в режиме реального времени и видит только последний фрактал
Ваш перебор в 100 баров ничего не дает
PS Сделайте цикл for и используйте
Вы знаете, гоняю в тестере правленный мной код, но пока улучшений не вижу. Продолжаю работать и разбираться. Но у меня к вам просьба, при наличии у вас времени, сможете подправить код функций, которые будут искать максимальный (минимальный ) фракталы вместо поиска ближайших верхние и нижние фракталов.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Возвращает ближайший верхний фрактал |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| nl - количество баров слева |//| nr - количество баров справа |//+----------------------------------------------------------------------------+double GetNearestUpFractal(string sy="0", int tf=0, int nl=2, int nr=2) {
bool f;
int fb, i, nb=-1;
if (sy=="" || sy=="0") sy=Symbol();
if (nl<1) nl=1;
if (nr<1) nr=1;
fb=nr;
while (nb<0) {
fb++;
f=True;
for (i=fb; i>fb-nr; i--) {
if (iHigh(sy, tf, i)<iHigh(sy, tf, i-1)) { f=False; break; }
}
if (f) {
for (i=fb; i<fb+nl; i++) {
if (iHigh(sy, tf, i)<iHigh(sy, tf, i+1)) { f=False; break; }
}
if (f) { nb=fb; break; }
}
}
return(iHigh(sy, tf, nb));
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Возвращает ближайший нижний фрактал |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| nl - количество баров слева |//| nr - количество баров справа |//+----------------------------------------------------------------------------+double GetNearestDownFractal(string sy="0", int tf=0, int nl=2, int nr=2) {
bool f;
int fb, i, nb=-1;
if (sy=="" || sy=="0") sy=Symbol();
if (nl<1) nl=1;
if (nr<1) nr=1;
fb=nr;
while (nb<0) {
fb++;
f=True;
for (i=fb; i>fb-nr; i--) {
if (iLow(sy, tf, i)>iLow(sy, tf, i-1)) { f=False; break; }
}
if (f) {
for (i=fb; i<fb+nl; i++) {
if (iLow(sy, tf, i)>iLow(sy, tf, i+1)) { f=False; break; }
}
if (f) { nb=fb; break; }
}
}
return(iLow(sy, tf, nb));
}
Tretyakov Rostyslav #: Какие улучшения Вы хотите увидеть?
При формировании фракталов (макс и мин) и при пробитие их ценой открывается позиция. Например, из 10 последних нижних фракталов определяется самый минимальный и при пробитии его ценой Аск открывается ордер на покупку. Но вот из 10 нижних фракталов ордер может открываться не на самом нижнем. Вот примерно так. Поэтому я и попросил вас переделать любую из представленных функций для определения максимального и минимального фрактала, поскольку нужна цена этих фракталов. Я перерыл весь интернет и не могу найти такой функции, которая бы определяла макс/мин фрактал за заданное количество баров. У И.Кима есть функции, которые определяют макс/мин, но для зигзагов. Вот как то так.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А как работает эта функция?
Извиняюсь, забыл прикрепить, пока разбирался как вставить код.
Но, эту функцию можно заменить на стандартный код расчета фрактала
double val=iFractals(NULL,0,MODE_UPPER,3);
Извиняюсь, забыл прикрепить
Эта функция работает в режиме реального времени и видит только последний фрактал
Ваш перебор в 100 баров ничего не дает
PS Сделайте цикл for и используйте
Эта функция работает в режиме реального времени и видит только последний фрактал
Ваш перебор в 100 баров ничего не дает
PS Сделайте цикл for и используйте
Да, я это в процессе обращения увидел и понял, но боюсь у меня и здесь будет косяк. Я сейчас постараюсь написать часть кода и выложу, а вы если вам будет не трудно, подскажите правильно ли я написал.
С уважением, Вячеслав.
Вот подправил.
Вот подправил.
Это не надо
Это не надо
Понял, спасибо, буду тестировать.
Эта функция работает в режиме реального времени и видит только последний фрактал
Ваш перебор в 100 баров ничего не дает
PS Сделайте цикл for и используйте
Вы знаете, гоняю в тестере правленный мной код, но пока улучшений не вижу. Продолжаю работать и разбираться. Но у меня к вам просьба, при наличии у вас времени, сможете подправить код функций, которые будут искать максимальный (минимальный ) фракталы вместо поиска ближайших верхние и нижние фракталов.
С уважением, Вячеслав.
но пока улучшений не вижу.
Какие улучшения Вы хотите увидеть?
При формировании фракталов (макс и мин) и при пробитие их ценой открывается позиция. Например, из 10 последних нижних фракталов определяется самый минимальный и при пробитии его ценой Аск открывается ордер на покупку. Но вот из 10 нижних фракталов ордер может открываться не на самом нижнем. Вот примерно так. Поэтому я и попросил вас переделать любую из представленных функций для определения максимального и минимального фрактала, поскольку нужна цена этих фракталов. Я перерыл весь интернет и не могу найти такой функции, которая бы определяла макс/мин фрактал за заданное количество баров. У И.Кима есть функции, которые определяют макс/мин, но для зигзагов. Вот как то так.