franky69 Опубликовано 29 июня, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 29 июня, 2016 TmaSlope.v1.5 Pobeda - не компилируется там ошибки исправить нужно.TMA+CG mladen замените в сборке на мой, прикрепил, он рабочий, а в сборке нет. Для mt5 случайно нет такого ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 1 августа, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 1 августа, 2016 есть тма не перерисовывающиеся? http://tlap.com/forum/laboratoriya-profitfx/24/open-source-sovetnik-forex-setka-trader-mod-i-ea-setka/2738/?do=findComment&comment=297229Pavel888, перепроверьтесь, наверно, есть ли у вас файлы точно такой длины?Один точно подрабатывался под 980+ билд перед повторным выкладыванием по ссылке, так как не компилировался...И, может, Blohastik может по теме неперерисовки дополнительно прокомментировать по своим индюкам?P.S. Pavel888, а не надо хотя бы повторяющиеся/основные настройки индюков ТМА хоть как-то описать?Существенная часть настроек совпадает...Кто вообще не в теме - совсем и не поймет, хоть какое-то пояснение/описание настроек бы? Изменено 2 августа, 2016 пользователем Старик Ссылка на сообщение Поделиться на другие сайты More sharing options...
shrike74 Опубликовано 4 августа, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 4 августа, 2016 Здравствуйте!Может кто-нибудь добавить вывод на график информации о средней ширине канала за n-баров?Буду признателен. TMA_with_Distances.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
pegaskrs Опубликовано 6 августа, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 6 августа, 2016 Здравствуйте! TMA_with_Distances_Size.mq4 6 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel888 Опубликовано 21 августа, 2016 Автор Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 21 августа, 2016 Спойлер есть тма не перерисовывающиеся? http://tlap.com/forum/laboratoriya-profitfx/24/open-source-sovetnik-forex-setka-trader-mod-i-ea-setka/2738/?do=findComment&comment=297229Pavel888, перепроверьтесь, наверно, есть ли у вас файлы точно такой длины?Один точно подрабатывался под 980+ билд перед повторным выкладыванием по ссылке, так как не компилировался...И, может, Blohastik может по теме неперерисовки дополнительно прокомментировать по своим индюкам?P.S. Pavel888, а не надо хотя бы повторяющиеся/основные настройки индюков ТМА хоть как-то описать?Существенная часть настроек совпадает...Кто вообще не в теме - совсем и не поймет, хоть какое-то пояснение/описание настроек бы? сделаем на досуге.щас тут надо достойно встретить 2-х летие набора инфо индикаторов, много дел :) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
kitaro_777 Опубликовано 5 сентября, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 5 сентября, 2016 Здравствуйте!Вопрос по TmaSlope.v1.5 Pobeda.Использую данный индикатор в своей ТС. Подскажите, возможно ли прикрутить к данному индикатору уведомления на мыло по достижению им определенных значений? Скажем, уведомление отсылается, если М15 = 1.0. Спасибо. Изменено 5 сентября, 2016 пользователем kitaro_777 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 8 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 8 декабря, 2016 Последняя версия индикатора тут: http://tlap.com/forum/ugolok-programmista/13/indikator-kanalov-tma-tmapluscg-fl-dorabotka/15283/?do=findComment&comment=362444Добрый день коллеги!Кто использует индикаторы каналов, аналогов ТМА, прекрасно знают их недостатки.Предлагаю коллективное творчество по доработке и устранению их недостатков.Итак я для себя выделил несколько проблемных мест индикатора ТМА, часть из них устранить не удасться, но некоторые из них можно легко побороть. Поехали:1. РАЗНАЯ ШИРИНА КАНАЛА во флете и тренде.Тут я уже поработал и понял КАК устранить данный баг индикатора. Для того чтобы понять СУТЬ сужения канала в момент явного его наклона, необходимо знать КАК рисуются линии. Все линии рисуются от СРЕДНЕЙ лини в канале. Вне зависимости от наклона расстояние верхней и нижней границы канала берется как одинаковое расстояние, спроецированное исключительно на ось Y. Таким образом, канал выглядит самым широким при идентичных настройках в момент флета, то есть горизонтального наклона канала. А в момент очень сильного наклона ширина канала стремиться к нулю.Я для визуализации начертил на бумаге схему рисования границ канала, чтобы подумать КАК сделать канал адекватный любому состоянию рынка. Будь то флет, будь то небольшой рост или явное падение. И у меня получилось! Я подготовил техническое задание по небольшой корректировки кода индикатора. В формулу рисования линий, к отступу от средней линии, которая зависит от К-коэффециента (ATRMultiplier) и количества рассматриваемых баров (ATRPeriod) добавить условие:Расстояние по оси Y от центральной линии ТМА, на котором рисуется верхняя и нижняя граница канала =K+Y2Где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре)). Разница цен нам даст необходимую прибавку к расстоянию от середины до границ канала и канал будет выглядеть адекватым при любом состоянии рынка ....А К - это существующая фрмула рассчета растояний границ канала от середины канала. Спойлер 2. ОТСУТСТВИЕ СИГНАЛА.а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре текущем/закрытом).Есть у меня исходники индикаторов с уже реализованными в них Алертами (некоторыми ИЗ видов).Допустим, в индикаторе TMA+CG_den.mq4 есть сигнальный блок. Предлагаю его перенести в tmacentered_amp_bands_2.02_mtf.mq4 как наиболее продвинутый и последний индикатор .... Спойлер 3. УМЕНЬШЕНИЕ НАГРУЗКИ НА ПРОЦЕССОР.Предлагаю ввести функцию: Last X Bars=xxxИндикатор не будет рисовать линии по ВСЕМ барам которые сейчас у вас загружены в истории, а только последние ххх баров. Это радикально снизит нагрузку на процессор.4. АДАПТИВНОСТЬ НАКЛОНА КАНАЛА под реальное состояние рынка.Тут надо подумать, для себя вывел, что HalfLenght=40 вполне адекватно рисует канал ... НО мысли принимаются, может как то можно доработать индюк?-научить индюк отсеивать бары, которые в момент выхода новостей ЯВНО больше всех остальных. Думаю внедрение фильтра размера бара внутрь кода, который отсеивал бы такие бары из расчета АТР помог бы.-научить индюк оперативно идти за ценой.Нужна помощь программистов в доработке индикаторов. Предлагаю дорабатывать tmacentered_amp_bands_2.02_mtf.mq4 как наиболее продвинутый и последний индикатор ....Спасибо.channels.zip Изменено 29 мая, 2017 пользователем DENYA 5 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 12 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 12 декабря, 2016 Так. Пробую сам разобраться.Сейчас пытаюсь добавить ARROW в качестве сигнала.Добавил несколько строчек, но что то пока стрелочек на индикаторе не вижу. Помогите разобраться :)Добавил строчки: #property indicator_buffers 10 double upArrow[];double dnArrow[]; SetIndexBuffer(8,dnArrow); SetIndexStyle(8,DRAW_ARROW); SetIndexArrow(8,241); SetIndexBuffer(9,upArrow); SetIndexStyle(9,DRAW_ARROW); SetIndexArrow(9,242); upArrow = EMPTY_VALUE; dnArrow = EMPTY_VALUE; if (High[i+1]>bandUp[i+1] && Close[i+1]>Open[i+1] && Close) upArrow = High+iATR(NULL,0,20,i); if ( Low[i+1]>Open) dnArrow = High-iATR(NULL,0,20,i); Где то нахреначил ....=============================================================================Ну и по поводу "правильной" ширины канала при тренде и флете.Вот в эту формулу double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier; помогите добавить условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))TMA-centered-DENYAtest.mq4 Изменено 12 декабря, 2016 пользователем DENYA 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 15 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 15 декабря, 2016 Коллеги! Ну помогите уже человеку! Он так постарался, тему красиво и грамотно оформил. :) Я бы посмотрел, но времени нет вообще.... ТС, если никто не отзовется, я посмотрю позже. На вскидку у Вас вроде тут ничего сложного, немного формулу поправить. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 23 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 23 декабря, 2016 Если вопрос актуален - могу постараться помочь. какова актуальность вопроса сегодня ?P.S.Правда я никогда не работал по серьезному по теме программирования индикаторов и не очень знаком с индюками каналов TMA (давно - давно как-то ковырял победу, как юзер). 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 26 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 26 декабря, 2016 Если вопрос актуален - могу постараться помочь. какова актуальность вопроса сегодня ?P.S.Правда я никогда не работал по серьезному по теме программирования индикаторов и не очень знаком с индюками каналов TMA (давно - давно как-то ковырял победу, как юзер).Да Андрей, конечно актуально. Еслиб помог разобраться где я напортачил в коде и почему не отображаются стрелки - был бы очень признателен.Кроме того, если в формулу отображения границ каналов (верхний и нижний) внесешь дополнение к формуле, как я писал выше, то геометрия рисования канала, а в купе с этим и КАЧЕСТВО сигналов гораааздо улучшиться.Я применяю канал в ручной торговле, кроме того есть парочку советников, которые берут сигнал от СТРЕЛОК. Параметрами внутри индикатора, а также ДОПОЛНЕНИЕМ в формуле, изменяющим чуток геометрию рисования канала также качество сигналов возрастет.Остальные мысли, что я писал выше трудны в реализации, поэтому к цели надо стремиться поэтапно. От простого к сложному .... Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 27 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 27 декабря, 2016 а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре теку Первый шаг:Я правильно понимаю, что в этих случаях надо добавить стрелочки вверх (если про верхнюю границу канала говорить) в индикатор tmacentered_amp_bands_2.02_mtf ? Рисуем стрелки вверх во всех трех случаях, над баром пересечения/касания границы. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 27 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 27 декабря, 2016 а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре теку Первый шаг:Я правильно понимаю, что в этих случаях надо добавить стрелочки вверх (если про верхнюю границу канала говорить) в индикатор tmacentered_amp_bands_2.02_mtf ? Рисуем стрелки вверх во всех трех случаях, над баром пересечения/касания границы.Нет. Если касание/закрытие/обратное пересечение происходит верхней границы канала, то стрелочка вниз. Если нижней границы канала, то стрелочка вверх.В код индикатора в приложении я внес код стрелок, но где то напортачил, не вижу отображения стрелок. В этом же посте и ИНДИКАТОР с которым надо уже работать.Что касается 4-х разновидностей сигналов, то это уже более сложная задача. В идеале я реализацию ее вижу так:В настройках параметр: SignalType:а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре текущем).в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре закрытом).На первом этапе достаточно сигнала б), то есть выхода ЗА границу и закрытии там бара. С моей точки зрения именно под этот тип я и добавил код в индикатор ....СпасибоTMA-centered-DENYAtest.mq4 Изменено 27 декабря, 2016 пользователем DENYA Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 27 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 27 декабря, 2016 Спойлер а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре теку Первый шаг:Я правильно понимаю, что в этих случаях надо добавить стрелочки вверх (если про верхнюю границу канала говорить) в индикатор tmacentered_amp_bands_2.02_mtf ? Рисуем стрелки вверх во всех трех случаях, над баром пересечения/касания границы.Нет. Если касание/закрытие/обратное пересечение происходит верхней границы канала, то стрелочка вниз. Если нижней границы канала, то стрелочка вверх.В код индикатора в приложении я внес код стрелок, но где то напортачил, не вижу отображения стрелок. В этом же посте и ИНДИКАТОР с которым надо уже работать.Что касается 4-х разновидностей сигналов, то это уже более сложная задача. В идеале я реализацию ее вижу так:В настройках параметр: SignalType:а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре текущем).в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре закрытом). На первом этапе достаточно сигнала б), то есть выхода ЗА границу и закрытии там бара. С моей точки зрения именно под этот тип я и добавил код в индикатор ....Спасибо DENYA Подправил Ваш "первый этап" - проверяйте. Исправления, которые сделал заключилв комментарий, что это моих рук дело - для наглядности.P.S. Вообще если планируется серьезная переделка индикатора, лучше бы заново проговорить алгоритми написать все с нуля. Сейчас мы делаем заплатки и если честно, я не совсем понимаю исходный текст.(Тут конечно существует принцип - для программиста легче написать с нуля свое, чем разобраться с чужой программой). Можно конечно этого не делать, но тогда получается письмо Родителям из мультика "Простоквашино". И вполне возможно при будущих вносимых нами изменениях мы упремся в непонятные действия индикатора. Ну или будем все переделывать с нуля, когда исправлениями не сможем добиться цели.TMA-centered-DENYAtest.mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 27 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 27 декабря, 2016 Спойлер Спойлер а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре теку Первый шаг:Я правильно понимаю, что в этих случаях надо добавить стрелочки вверх (если про верхнюю границу канала говорить) в индикатор tmacentered_amp_bands_2.02_mtf ? Рисуем стрелки вверх во всех трех случаях, над баром пересечения/касания границы.Нет. Если касание/закрытие/обратное пересечение происходит верхней границы канала, то стрелочка вниз. Если нижней границы канала, то стрелочка вверх.В код индикатора в приложении я внес код стрелок, но где то напортачил, не вижу отображения стрелок.В этом же посте и ИНДИКАТОР с которым надо уже работать.Что касается 4-х разновидностей сигналов, то это уже более сложная задача. В идеале я реализацию ее вижу так:В настройках параметр: SignalType:а)Сигнал при касании границы на текущем баре.б)Сигнал на выход за границу на закрытой свече.в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре текущем).в)Сигнал при выходе цены за пределы канала, обратном возвращении цены в канал. (на баре закрытом). На первом этапе достаточно сигнала б), то есть выхода ЗА границу и закрытии там бара. С моей точки зрения именно под этот тип я и добавил код в индикатор ....Спасибо DENYA Подправил Ваш "первый этап" - проверяйте. Исправления, которые сделал заключилв комментарий, что это моих рук дело - для наглядности.P.S. Вообще если планируется серьезная переделка индикатора, лучше бы заново проговорить алгоритми написать все с нуля. Сейчас мы делаем заплатки и если честно, я не совсем понимаю исходный текст.(Тут конечно существует принцип - для программиста легче написать с нуля свое, чем разобраться с чужой программой). Можно конечно этого не делать, но тогда получается письмо Родителям из мультика "Простоквашино". И вполне возможно при будущих вносимых нами изменениях мы упремся в непонятные действия индикатора. Ну или будем все переделывать с нуля, когда исправлениями не сможем добиться цели. Спасибо, вроде нормально.Сейчас условие срабатывание стрелки: 1.Свечка закрылась выше/ниже границы канала.2.Первая противоположная закрытая свеча.НАДО:1.Стрелки на БАЙ опустить нижеНу и, если не против конечно ... хорошо бы уже с ГЕОМЕТРИЕЙ рисования границ канала разобраться. То есть внести в формулу double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier; условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))Вот например на скрине видишь что во флете ширина канала ШИРЕ чем в тренде?. С добавлением в формулу исправлений как я описал ожидаю увидеть ОДИНАКОВУЮ геометрию канала как во флете, так и в тренде .. Что даст нам дополнительное качество к появлению сигналов (стрелочек).2016-12-27_23-08-13.jpg Изменено 27 декабря, 2016 пользователем DENYA 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 27 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 27 декабря, 2016 Расположение стрелок подправлено Добавлено: 28-12-2016 01:39:32Подправил вроде ГЕОМЕТРИЮ, а визуального изменения что-то не вижу....TMA-centered-DENYAtest.mq4TMA-centered-DENYAtest.mq4 Изменено 28 декабря, 2016 пользователем AndreyGold 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 28 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 28 декабря, 2016 Расположение стрелок подправлено Добавлено: 28-12-2016 01:39:32Подправил вроде ГЕОМЕТРИЮ, а визуального изменения что-то не вижу....Не, что то не то. У меня канал после исправления формулы в момент наклона становится даже УЖЕ чем с оригинальными формулами. Уже КАК сверху, так и снизу. Задача была наоборот расширить. Где то + с - надо поменять ....Ну и эффект конечно слабоват. Ожидал большего расширения. Посмотри мой рисунок с 1-го поста. Понял логику там? По оригинальной формуле идет проекция на ось Y, а если канал наклонный, то тупая проекция на ось Y дает ошибочное значение. Хотел я там через синусы всякие формулу изобрести, но вроде бы предложенное решение гораздо проще .... Посмотри незамыленным взглядом. Судя по формуле и описанию которую я хочу я ожидаю БОЛЬШЕГО смещения канала ... Может быть что то не так в реализованной формуле?На скрине:Пунктирная синяя- исходник.Голубая прямая - откорректированная тобой.Во флете одинаковы.В тренде наоборот канал сужается, а должен расширяться .... Кроме того расширение ожидаю (как по логике приведенного рассчета на картинке 1-го поста) гораааздо больше.Добавлено: 28-12-2016 12:43:37только заметил. Когда ВВЕРХ канал - вроде расширение идет. Когда ВНИЗ канал - сужается. Что то в общем не так с формулой ...2016-12-28_15-39-46.jpg 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 28 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 28 декабря, 2016 Понятно. пока не врубаюсь - вся беда, что не знаю как рассчитывается TMA, практику работы с ним имею маленькую, ну и текст программы стартово не мой (хотя это и понятно - если не знаешь первых два момента ). Поэтому пока в графических изображениях на эту тему тоже сильно шарю. Буду разбираться - попытаюсь вначале теорию индюка найти.А вообще я всегда думал - если наклон, значит Тренд и по аналогии с полосами Болинджера должно идтиочень резкое расширение канала, ну а при Флете соответственно сужение.Короче ушел - разбираться в деталях. :d Добавлено: 28-12-2016 16:30:52Поразбирал внимательно текст программы, ну очень мудренно ....Пошаговые мысли: Есть внешняя переменная TimeFrame, которую если мы не трогаем руками всегда указывает на текущий таймфрейм. Программа делится на две части работа первая часть работает с текущим таймфреймом,а значит во вторую половину программы исполнение и не заходит(это со строкlimit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period())); if (slope[limit]==-1) CleanPoint(limit,buffer2a,buffer2b); for (i=limit;i>=0; i--))В первой половине buffer1 - это центральная линия канала (рассчитывается через взвешивание средней MA) .Далее есть переменная range считается через ATR, умножаемая на множитель ATRMultiplier.Это я так понимаю и есть размер отклонения от центральной линии границ канала.и далее сами границы: bandUp = buffer1+range;bandDn = buffer1-range;По ТЗ - я добавил формулу range = range+buffer1-buffer1[i+1];то есть ширина канала равна первоначальная ширина канала + разница значения центральной линиина текущем баре и на предыдущем.По ТЗ А надо было добавить условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре)).Как я понимаю ситуацию это я и сделал. Denya Где на твой взгляд я неправильно понял ?Добавлено: 28-12-2016 17:08:45Или нужно менять первоначальную формулу, рассчета ширины канала double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier;думаю. это она влияет при резком наклоне канала на его сужение.Сюда надо лезть по ходу:Истинный диапазон (True Range) есть наибольшая из следующих трех величин:разность между текущими максимумом и минимумом;разность между предыдущей ценой закрытия и текущим максимумом;разность между предыдущей ценой закрытия и текущим минимумом.Индикатор Среднего Истинного Диапазона (Average True Range, ATR) представляет собой скользящее среднее значений истинного диапазона.Добавлено: 28-12-2016 18:05:25Думаю, что надо сделать так (заодно и более-менее проверим мою версию как в индюке все считается):Моделируем ситуацию в экселе.Тут берется 1000 последних баров - берем эти котировки, делаем все вычисления (средняя линия канала,границы) рисуем график в экселе - все формулы делаем, так, чтобы переменными можно было бы поиграться и тут же увидеть изменения на графике.Ушел ваять ))) Изменено 28 декабря, 2016 пользователем AndreyGold 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 28 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 28 декабря, 2016 Спойлер Понятно. пока не врубаюсь - вся беда, что не знаю как рассчитывается TMA, практику работы с ним имею маленькую, ну и текст программы стартово не мой (хотя это и понятно - если не знаешь первых два момента ). Поэтому пока в графических изображениях на эту тему тоже сильно шарю. Буду разбираться - попытаюсь вначале теорию индюка найти.А вообще я всегда думал - если наклон, значит Тренд и по аналогии с полосами Болинджера должно идтиочень резкое расширение канала, ну а при Флете соответственно сужение.Короче ушел - разбираться в деталях. :d Добавлено: 28-12-2016 16:30:52Поразбирал внимательно текст программы, ну очень мудренно ....Пошаговые мысли: Есть внешняя переменная TimeFrame, которую если мы не трогаем руками всегда указывает на текущий таймфрейм. Программа делится на две части работа первая часть работает с текущим таймфреймом,а значит во вторую половину программы исполнение и не заходит(это со строкlimit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period())); if (slope[limit]==-1) CleanPoint(limit,buffer2a,buffer2b); for (i=limit;i>=0; i--))В первой половине buffer1 - это центральная линия канала (рассчитывается через взвешивание средней MA) .Далее есть переменная range считается через ATR, умножаемая на множитель ATRMultiplier.Это я так понимаю и есть размер отклонения от центральной линии границ канала.и далее сами границы: bandUp = buffer1+range;bandDn = buffer1-range;По ТЗ - я добавил формулу range = range+buffer1-buffer1[i+1];то есть ширина канала равна первоначальная ширина канала + разница значения центральной линиина текущем баре и на предыдущем.По ТЗ А надо было добавить условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре)).Как я понимаю ситуацию это я и сделал. Denya Где на твой взгляд я неправильно понял ?Добавлено: 28-12-2016 17:08:45Или нужно менять первоначальную формулу, рассчета ширины канала double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier;думаю. это она влияет при резком наклоне канала на его сужение.Сюда надо лезть по ходу:Истинный диапазон (True Range) есть наибольшая из следующих трех величин:разность между текущими максимумом и минимумом;разность между предыдущей ценой закрытия и текущим максимумом;разность между предыдущей ценой закрытия и текущим минимумом.Индикатор Среднего Истинного Диапазона (Average True Range, ATR) представляет собой скользящее среднее значений истинного диапазона.Добавлено: 28-12-2016 18:05:25Думаю, что надо сделать так (заодно и более-менее проверим мою версию как в индюке все считается):Моделируем ситуацию в экселе.Тут берется 1000 последних баров - берем эти котировки, делаем все вычисления (средняя линия канала,границы) рисуем график в экселе - все формулы делаем, так, чтобы переменными можно было бы поиграться и тут же увидеть изменения на графике.Ушел ваять ))) Ну ты прям загасил меня формулами ... :) Яж не такой продвинутый, я не кодер.Я когда смотрел код, смотрел его логику, я выделил формулу double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier; в которую и надо добавлять дополнительное расстояние. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 28 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 28 декабря, 2016 :d Про формулы - дя а такой ;)А по существу вот три строчки подряд из программы, которые определяют расстояние от центральной линии до границы:1 double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier;2 buffer1 = sum/sumw; //Я добавил:3 range = range+buffer1-buffer1[i+1];// Первые две были в исходнике, третью добавил я (как кодер)- то есть мы к ширине канала добавили то что ты хотел :"условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))"Получается не то - вот я и хочу через эксель поиграться - ты с экселем насколько дружишь ? Я сделаю макет - ты сможешь его покрутить, чтобы понять какая формула приведет к нужной наглядности ?Тады мы ее в индюк и переложим Изменено 28 декабря, 2016 пользователем AndreyGold Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 28 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 28 декабря, 2016 :d Про формулы - дя а такой ;)А по существу вот три строчки подряд из программы, которые определяют расстояние от центральной линии до границы:1 double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier;2 buffer1 = sum/sumw; //Я добавил:3 range = range+buffer1-buffer1[i+1];// Первые две были в исходнике, третью добавил я (как кодер)- то есть мы к ширине канала добавили то что ты хотел :"условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))"Получается не то - вот я и хочу через эксель поиграться - ты с экселем насколько дружишь ? Я сделаю макет - ты сможешь его покрутить, чтобы понять какая формула приведет к нужной наглядности ?Тады мы ее в индюк и переложимя не кодер, но не кажется ли тебе что в формуле range = range+buffer1-buffer1[i+1]; есть невыполнимое противоречие? Что то вроде 1=1+2 .... такого не бывает.Повторюсь, я не кодер, но по алгебре и геометрии теоремы сам доказывал как только учительница читала условие ....Добавлено: 28-12-2016 20:56:29И, условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))Имеется ввиду что данное значение по любому ПОЛОЖИТЕЛЬНОЕ. Отрицательного значения не должно быть. В этом думаю кроется одна из ошибок, когда если канал вверх - он расширялся, а когда вниз - сужался.Надо добавить условие, что результат Y2 положительный==========================================Add^И, еще раз прикинул на картинке почему же в исправленной тобой формуле границы канала не так значительно расширяются , как я ожидал. И понял! Я не учел тот момент, что граница канала задается через ATRMultiplier, которым мы и делаем канал более широкий или более узкий. То есть чем больше ATRMultiplier, тем канал будет шире. Чем меньше, тем границы канала будут стремиться к центральной линии. В таком раскладе, к сожалению, подобрать "ПРАВИЛЬНУЮ" геометрию канала через Y2 напрямую не получится. Ибо чем больше ATRMultiplier, тем больше нужен Y2. 2 варианта:1.Сделать Y2 зависимым от ATRMultiplier через формулу.2.Второй вариант пока в проработке в голове. Ибо ширина канала зависит от ATRPeriod, на который в свою очередь мы накручиваем коэффициент ATRMultiplier.... Хммм ... В общем я подумаю. Думаю привязываться надо к ИТОГУ расчетов, то есть к range , и каким то образом, в зависимости от его велечины прибавлять Y2*Ky2где Ky2-новая переменная, коэффициент, зависящий от величины range..... Надо рисовать на бумаге, так сразу не соображу ... Изменено 28 декабря, 2016 пользователем DENYA 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 28 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 28 декабря, 2016 Спойлер :d Про формулы - дя а такой ;)А по существу вот три строчки подряд из программы, которые определяют расстояние от центральной линии до границы:1 double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier;2 buffer1 = sum/sumw; //Я добавил:3 range = range+buffer1-buffer1[i+1];// Первые две были в исходнике, третью добавил я (как кодер)- то есть мы к ширине канала добавили то что ты хотел :"условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))"Получается не то - вот я и хочу через эксель поиграться - ты с экселем насколько дружишь ? Я сделаю макет - ты сможешь его покрутить, чтобы понять какая формула приведет к нужной наглядности ?Тады мы ее в индюк и переложим я не кодер, но не кажется ли тебе что в формуле range = range+buffer1-buffer1[i+1]; есть невыполнимое противоречие? Что то вроде 1=1+2 .... такого не бывает.Повторюсь, я не кодер, но по алгебре и геометрии теоремы сам доказывал как только учительница читала условие .... Не, не -эта формула обозначает, что новому значению переменной range надо присвоить значение, равное текущему значению range + разницу значение средней линии текущего бара buffer1 и предыдущегоbuffer1[i+1]. Так я в общем-то понял пожелание про: "условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))" Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 28 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 28 декабря, 2016 Спойлер Спойлер :d Про формулы - дя а такой ;)А по существу вот три строчки подряд из программы, которые определяют расстояние от центральной линии до границы:1 double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier;2 buffer1 = sum/sumw; //Я добавил:3 range = range+buffer1-buffer1[i+1];// Первые две были в исходнике, третью добавил я (как кодер)- то есть мы к ширине канала добавили то что ты хотел :"условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))"Получается не то - вот я и хочу через эксель поиграться - ты с экселем насколько дружишь ? Я сделаю макет - ты сможешь его покрутить, чтобы понять какая формула приведет к нужной наглядности ?Тады мы ее в индюк и переложим я не кодер, но не кажется ли тебе что в формуле range = range+buffer1-buffer1[i+1]; есть невыполнимое противоречие? Что то вроде 1=1+2 .... такого не бывает.Повторюсь, я не кодер, но по алгебре и геометрии теоремы сам доказывал как только учительница читала условие .... Не, не -эта формула обозначает, что новому значению переменной range надо присвоить значение, равное текущему значению range + разницу значение средней линии текущего бара buffer1 и предыдущегоbuffer1[i+1]. Так я в общем-то понял пожелание про: "условие: прибавить Y2, где Y2=((цена средней линии ТМА на текущем баре) - (цена средней линии ТМА на прошлом баре))" почитай в предыдущем посте ....Обдумываю как реализовать. Проще всего на бумаге нарисовать, и понять СУТЬ проблемы .... Добавлено: 28-12-2016 22:12:52Поставил формулу range = range+(buffer1-buffer1[i+1])*ATRMultiplier; Стало лучше. Осталось сделать условие, что Y2 всегда положительное значение.TMA-centered-DENYAtest2.mq42016-12-29_1-17-43.jpg Изменено 28 декабря, 2016 пользователем DENYA 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 29 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 29 декабря, 2016 почитай в предыдущем посте ....Обдумываю как реализовать. Проще всего на бумаге нарисовать, и понять СУТЬ проблемы .... Добавлено: 28-12-2016 22:12:52 Поставил формулу range = range+(buffer1-buffer1[i+1])*ATRMultiplier; Стало лучше. Осталось сделать условие, что Y2 всегда положительное значение. Ок - я вместо бумаги эксель предлагал, хотя вариант на бумаге первичней чем эксель.Формулу я исправил, вставил модуль для числа Y2 (теперь Y2 всегда положительное), которое потом умножается на ATRMultiplier.Смущает, что мы теперь два раза умножаем на ATRMultiplier. Строки (147 и 151).Исправленный вариант подшиваю.p.s. Сделал нумерацию версий программы. Сейчас v1.01 - в начале файла буду стараться описывать изменения от версии к версии.TMA-centered-DENYAtest_v1.01.mq4 Изменено 29 декабря, 2016 пользователем AndreyGold 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DENYA Опубликовано 29 декабря, 2016 Поделиться [ТМА] НАБОР Triangular Moving Average Опубликовано 29 декабря, 2016 Спойлер почитай в предыдущем посте ....Обдумываю как реализовать. Проще всего на бумаге нарисовать, и понять СУТЬ проблемы .... Добавлено: 28-12-2016 22:12:52Поставил формулу range = range+(buffer1-buffer1[i+1])*ATRMultiplier; Стало лучше. Осталось сделать условие, что Y2 всегда положительное значение. Ок - я вместо бумаги эксель предлагал, хотя вариант на бумаге первичней чем эксель.Формулу я исправил, вставил модуль для числа Y2 (теперь Y2 всегда положительное), которое потом умножается на ATRMultiplier.Смущает, что мы теперь два раза умножаем на ATRMultiplier. Строки (147 и 151).Исправленный вариант подшиваю.p.s. Сделал нумерацию версий программы. Сейчас v1.01 - в начале файла буду стараться описывать изменения от версии к версии. Как я и писал выше, есть 2 варианта корректировки. Через добавление ATRMultiplier, этот вариант НЕ идеален с точки зрения геметрии, но он быстрое решение проблемы.Второй вариант, связан с геометрией, высчитавания через формулу Коэффициента, который в свою очередь должен зависеть от Range.Я исправил формулу:range = range+(MathAbs(buffer1-buffer1[i+1]))*3*ATRMultiplier; На скрине:При сильном безоткатном движении раньше канал сужался до неприличия.Теперь геометрия подправлена, что дает нам сигналы в виде выхода ЗА канал более качественными, своевременными.Темно синяя: исходник.Пунктирная синяя: результат.2016-12-29_21-51-04.jpg 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти