АвторСообщение



Сообщение: 1
Зарегистрирован: 05.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 05.03.13 18:44. Заголовок: Модификация Bollinger Bands


http://zalil.ru/34320483
http://zalil.ru/34320495
http://zalil.ru/34320500

Уважаемый, Scriptong. Первые два индикатора являются составными частями третьего(он без них не будет работать) - составлял сам, но получается томознуто для использования в эксперте..
Не могли бы вы написать эксперта по третьему индикатору (даже с настройками по-умолчанию - почти грааль). Если заинтересует, то составим ТЗ. Спасибо.
Рисунок с реального счета.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]







Сообщение: 12
Зарегистрирован: 03.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 06.03.13 12:32. Заголовок: Добрый день. Скачал..


Добрый день.

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

 цитата:
MovingBuffer=NormalizeDouble(0.5*(iCustom(NULL,0,"_MAOnDay",2,60,ATRPeriod,BandsPeriod,0.5,5,0,i)+
iCustom(NULL,0,"_MAOnDay",3,60,ATRPeriod,BandsPeriod,0.5,5,0,i)),Digits);


Здесь при вызове функции iCustom индикатору _MaOnDay передается параметров больше, чем у него есть.
Поэтому пока оставим индикаторы Bands_ATR и BBands_Stop_v3. Их Вы потихоньку начнете исправлять.

Сейчас предлагаю довести до ума начальный индикатор - _MAOnDay. В нем тоже хватает проблем:
1. Если переменные в коде не меняют своего значения, то лучше объявить их константами. Это касается переменных MethodMA, PriceMA, X1 и X2. Так я и сделал:

 цитата:
#define METHOD_MA 3
#define PRICE_MA 7
#define X1 0.618
#define X2 0.236



2. Расчет индекса начального бара, почему-то идет на основании данных таймфрейма LargeTF. Это неверно. Если индикатор отображает информацию, то делается это ВСЕГДА на текущем таймфрейме. Исправлено путем использования функции GetRecalcIndex.

3. Для начального расчета не стоит использовать все доступные бары. Это сильно нагружает систему и сказывается на быстродействии индикатора. Ограничивайте отображение данных хотя бы 50 000 баров (переменная i_indBarsCount).

4. Все логические блоки цикла лучше разбивать на функции. Если так сделать, то функция start примет достаточно лаконичный вид. Смысл индикатора станет понятен с первого взгляда на него:

 цитата:
int start()
{
if (!activate)
return(0);

int total;
int limit = GetRecalcIndex(total);

for (int i = limit; i >= 0; i--)
{
DetectNewDay(i, Count, Buffer);
Buffer[Count] = GetPriceByBarIndex(i);

MA = GetMA(i, Count);
Count++;
}

return(0);
}



5. В индикаторе по несколько раз за одну итерацию цикла вычислялась одна и та же информация (значения средних). В новой версии эти расчеты оптимизированы.

Попробуйте в том же ключе поработать над другими индикаторами.
Новая версия индикатора

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 2
Зарегистрирован: 05.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 06.03.13 17:43. Заголовок: http://zalil.ru/3432..


http://zalil.ru/34323562
http://zalil.ru/34323563
http://zalil.ru/34323565

Да-а, спасибо за науку.
Вот все переделал, но кстати результат(графики) не очень отличается от былого.
Комп грузится меньше, а это плюс.

http://zalil.ru/34323626
торговля вчера и сегодня. Обратите внимание на построенные фибо: уровни 261 почти всегда определяют движение пары.
вот на этом и хотелось бы сделать советник

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 18
Зарегистрирован: 03.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 07.03.13 20:17. Заголовок: anatolyp пишет: Вот..


anatolyp пишет:

 цитата:
Вот все переделал


Не увидел каких-либо серьезных изменений в кодах BandsATR и BBandsStop.

anatolyp пишет:

 цитата:
но кстати результат(графики) не очень отличается от былого.


Это свидетельствует о том, что код _MAOnDay был переделан мною правильно. Основная логика осталась прежней, но теперь индикатор работает в онлайн более устойчиво.

anatolyp пишет:

 цитата:
Комп грузится меньше, а это плюс.


Комплекс будет работать еще быстрее, когда логика обоих индикаторов изменится по тому принципу, который я выше описал.

anatolyp пишет:

 цитата:
Обратите внимание на построенные фибо: уровни 261 почти всегда определяют движение пары.


Вот это "почти" и напрягает. Чтобы понять, насколько устойчива система в целом, нужно проанализировать все сигналы в истории и посмотреть соотношение полученной прибыли и убытков.
К примеру, сразу несколько убытков:


Кстати, похожая стратегия уже была рассмотрена в проекте MQLabs - Летучая мышь.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
Зарегистрирован: 05.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 08.03.13 08:04. Заголовок: Scriptong пишет: Во..


Scriptong пишет:

 цитата:
Вот это "почти" и напрягает.



Можно сделать первой целью 161, далее 200 и 261(передвигая стоп), далее

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

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 19
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 0
ссылка на сообщение  Отправлено: 09.03.13 14:17. Заголовок: anatolyp пишет: Мож..


anatolyp пишет:

 цитата:
Можно сделать первой целью 161, далее 200 и 261(передвигая стоп), далее


Я как раз и говорю о первой цели. Нужно смотреть соотношение ложных и правильных входов, подбирая величину цели под это соотношение. Если же отталкиваться от 100%-ых сигналов, то в этом случае мы дойдем до отрицательного показателя - спреда.

anatolyp пишет:

 цитата:
почему-то ваш переделанный индикатор не корректно отображается, т.е. пока не сделаешь"обновить" он уходит в никуда(вверх или вниз).


Видимо, Вы не загрузили данные для таймфрейма LargeTF. Посмотрите для сравнения первую версию индикатора. С ней такая же проблема. Чтобы индикатор закачивал данные таймфрейма LargeTF автоматически, нужно добавить соответствующий кусок кода.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 4
Зарегистрирован: 05.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 10.03.13 12:39. Заголовок: Пишет: не хватает па..


Пишет: не хватает памяти.Индикатор отключен.Ошибка расчета МА

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 23
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 0
ссылка на сообщение  Отправлено: 11.03.13 12:10. Заголовок: anatolyp пишет: Пиш..


anatolyp пишет:

 цитата:
Пишет: не хватает памяти.Индикатор отключен.Ошибка расчета МА


Посмотрите, нет ли в журнале (окно Терминал - закладка Журнал) вот такой надписи:

 цитата:
Memory handler: cannot allocate 11758024 bytes of memory



Если есть, то вопрос не ко мне, а к размеру свободной оперативной памяти Вашего компьютера. Чтобы уменьшить расход памяти, закройте все лишние приложения, открывайте в терминале как можно меньше графиков и индикаторов.
Для чистоты эксперимента запустите только один терминал с одним графиком. К нему присоедините индикатор. Если и в этом случае возникнет ошибка, уменьшайте количество видимых баров (Сервис - Настройки - Графики), после чего перезагрузите терминал.
Также индикатор будет расходовать меньше памяти, если периоды текущего и старшего таймфреймов будут отличаться незначительно. К примеру, наибольший расход памяти будет при текущем ТФ М1 и LargeTF MN_1.



Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
Зарегистрирован: 05.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 11.03.13 14:07. Заголовок: все перепроверил. ум..


все перепроверил. уменьшал кол-во баров до 500 - все тоже самое. Надписи: Memory handler: cannot allocate 11758024 bytes of memory - нет. Даже у другого брокера запускал-ошибка та же


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 25
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 0
ссылка на сообщение  Отправлено: 11.03.13 21:22. Заголовок: Тогда просто закомме..


Тогда просто закомментируйте строки в функции GetMA:

 цитата:
if (maAdaptive == 0)
{
Alert("Ошибка расчета MA. Возможно, не хватает памяти. Индикатор отключен.");
activate = false;
return (0);
}


Ошибка гарантировано исчезнет, но показания индикатора могут быть неправильными.
Возникновение этой ошибки говорит о том, что на каком-то этапе расчета значение средней скользящей стало равным нулю. Это явная ошибка расчета, которая у меня проявлялась в результате нехватки памяти для индикатора. В итоге индикатор выводил показания так:

Я долго ломал голову, почему так происходит. Оказалось, что индикатору просто не хватает памяти. Вот он и выводит белиберду. Единственный способ определения ошибки оказался косвенным - по значению МА. Ее значение не должно быть равно 0.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
Зарегистрирован: 05.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 12.03.13 07:55. Заголовок: ну вот, другое дело...


ну вот, другое дело. Все получилось.
А в последующих индикаторах - до меня так и не дошло , как их можно еще упростить.
Их исходные коды были на http://codebase.mql4.com

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
Зарегистрирован: 12.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 12.03.13 10:44. Заголовок: Уважаемый, Scriptong..


Уважаемый, Scriptong.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет