Форум » Индикаторы » MA_добавить ценовой параметр » Ответить

MA_добавить ценовой параметр

ko_ko: В МА есть ценовые параметры лоу и хай. Хотелось бы , чтобы при росте цены , чтобы индикатор рисовал линию по лоу уровням , а при снижении рисовал по хай уровням. То есть перестраивался. Рост цены - быстрая пересекает медленную снизу вверх. Для снижения - сверху вниз. Я давно заметил , что более точные пересечения , когда ставишь для растущей цены параметр лоу , а при снижении - хай. В стандартном МА и всех остальных , производных от него такого перехода нет. В том числе получаются более точные МАСД и дивера и пр. Спасибо. Вроде бы несложно ввести такой новый ценовой параметр?

Ответов - 22, стр: 1 2 All

Sergey: ko_ko пишет: Хотелось бы , чтобы при росте цены , чтобы индикатор рисовал линию по лоу уровням , а при снижении рисовал по хай уровням. То есть перестраивался. А как определить растущий рынок или падающий?

Scriptong: ko_ko пишет: Хотелось бы , чтобы при росте цены , чтобы индикатор рисовал линию по лоу уровням , а при снижении рисовал по хай уровням. То есть перестраивался. Адаптивных МА уже написано вагон и маленькая тележка. Даже в моем арсенале не одна такая. В Вашем случае не описано самое главное: каким образом определяется рост или падение цены? P. S. To Sergey: мысли сошлись во времени

Sergey: ko_ko пишет: Вроде бы несложно ввести такой новый ценовой параметр? Самый простой вариант - индикатор arrow - стрелка sell при пересечении МА (Low), стрелка buy при пересечении МА (high) - это если не привязываться к направлению рынка, а использовать стандартные МА.


Scriptong: Sergey пишет: Самый простой вариант - индикатор arrow - стрелка sell при пересечении МА (Low), стрелка buy при пересечении МА (high) - это если не привязываться к направлению рынка, а использовать стандартные МА. Тут можно много чего нагадать, но просто не хватит для этого времени. Лучше дождемся пояснений от топикстартера. Ведь сделать все это, действительно, можно. Не хватает малости - идеи определения роста и падения цены. Особенно это важно в свете представления движения рынка в виде свечей.

ko_ko: Звеняйте. Редко захожу. А тут баталии без меня нешуточные. прям с кровью. Значит задело. И да , неверно вопрос сформулирован. Я ниже приложил индюк ( писал сам на основе чего-то там - не обессудьте , а лучше подправьте-с ). Это 2 пары 2-х МА. Быстрая ( по цене ХАЙ ) с подчиненной быстрой ( по цене ЛОУ ). Вторая пара - медленная ( по цене ХАЙ с подчиненной медленной ( по цене ЛОУ ). Далее их моменты пересечений выделил 4 вертикалями разных цветов. Для бай эти вертикали сплошные , для сэлл они штриховые. Потом опишу , что это дает ( если интересно будет кому). Вопрос такой. Можно ли в этот индикатор вписать МАКД , который будет рисовать дивера. Особенность такая. Когда появляется желтая вертикаль СПЛОШНАЯ , то МАКД работает по цене ХАЙ , когда появляется сиреневая ШТРИХОВАЯ вертикаль , то МАКД работает по цене ЛОУ. Даже если после желтой сплошной есть другие вертикали , в том числе тоже желтые сплошные , все равно МАКД должен работать по цене ХАЙ. Как только появилась сиреневая штриховая , то переходит на расчет макд по ЛОУ. До появления новой сплошной желтой. Параметры для М15 использовать те , что во вложении в индикаторе 2х2MA_HL. Параметры для МАКД: период быстрой 2 , период медленной 5 , метод и сдвиг аналогичен медленной МА. Цена изменяется от ХАЙ к ЛОУ и наоборот - как описал выше. Ввести , как в EasyRealibleSystem , "Минимальное расстояние между средними в пунктах" maMinOffset=10 , и maCrossRegistrShift ( "Задержка регистрации пересечения средних, бары" ) =2 , как в Захвате флэта ( ForFlatGrabber ). Сам МАКД в подЪокне рисовать не надо ( меньше лишнего ). Достаточно иметь от него дивера. Если без рисования МАКД в подЪокне не получится , то можно типа , как в EasyRealibleSystem отрисовать. Блин , а как цеплять файл? click here а вот так? 2х2МА_HL

Scriptong: ko_ko пишет: писал сам на основе чего-то там - не обессудьте , а лучше подправьте-с Да вполне прилично написан индикатор. Просто в старом стиле. А так - вполне нормальная программа. ko_ko пишет: Когда появляется желтая вертикаль СПЛОШНАЯ , то МАКД работает по цене ХАЙ Видимо, нужно завести переменную, которая указывает цену расчета MACD и в момент отображения нужной линии изменять значение этой переменной: if (EMAfastHighnow>EMAslowerLownow && EMAslowerLowprevious>EMAfastHighprevious) { manageArrow0(i,Magenta ); // ... вверх price = PRICE_LOW; } if (EMAfastHighnow<EMAslowerLownow && EMAslowerLowprevious<EMAfastHighprevious ) // { manageArrow2(i,Magenta ); // .. вниз price = PRICE_LOW; } ... if (EMAfastLownow>EMAslowerHighnow && EMAslowerHighprevious>EMAfastLowprevious ) { manageArrow0(i,Yellow ); // вверх... price = PRICE_HIGH; } if (EMAfastLownow<EMAslowerHighnow && EMAslowerHighprevious<EMAfastLowprevious) // { manageArrow2(i,Yellow ); // ...вниз price = PRICE_HIGH; } А затем просто рассчитать значение MACD. Для него все равно потребуется ввести свой буфер, пусть даже и не отображаемый: g_macd[ i ] = iMACD(NULL, 0, i_fastMACD, i_slowMACD, i_signalMACD, price, MODE_MAIN, i); Только определитесь, как будет передаваться значение price от одного тика к другому, чтобы сохранялась преемственность данных. Самый простой, но расходный, способ - также завести буфер. Но если немного помучаться, то от буфера можно отказаться. А вот насчет диверов по MACD - это не так уж и просто. Посмотрите на код DivergenceViewer. Это все относится именно к диверам. Если учесть, что индикатор более-менее универсальный (используется выбор базового индикатора), то даже удаление ненужных базовых индикаторов не приведет к существенному уменьшению кода.

Sergey: Scriptong пишет: А вот насчет диверов по MACD - это не так уж и просто. Самый простой способ - ввести ограничение по BUY/SELL сигналам. Да пока будет два окна с MACD, но зато можно будет проследить историю. По крайней мере, выкладка скринов покажет, стоит ли продолжать развивать тему. P.S. Я вообще не представляю, как сделать диверы в одном окне, ведь для них нужна история, а смена цены расчета ее меняет. Возможно лучше будет просто подсвечивать текущую рабочую область MACD на одном из графиков согласно алгоритму 2х2 МА.

ko_ko: Спасибо за ответ. Ну , видимо , надо два буфера: отдельно для High и отдельно для Low. Я сам вряд ли осилю написание. Посмотрел DivergenceViewer. Мощно написано. Но вот одна общая беда для МАКД да и других. Он рисуется по одной цене. И дивера снизу ( если выбрана цена макда лоу ) дают хорошие результаты , но как начинается выстраивание сверху , то идут много ложных или дивера совсем отсутствуют. Если поставить цену макд хай , то картинка меняется наоборот. Лучшие дивера сверху и неважные снизу. Если цену ставить усредненную или клоз , то опять где-то дивера не рисуются , а где-то лишние. Чем интересен подход , который я предлагаю? Самой идеологией МАКД ( или других , выстраивающих дивера индикаторов , основанных на МА ). Эта идея в том , что одна МА пересекает другую МА , в то время когда цена не изменила направления. Идея хорошая , но нередко случаются запаздывания и дивер не рисуется. Чаще могут быть лишние сигналы , но это дело поправимо в комбинации с другими индикаторами. А вот если макд пропускает дивер , то сопряженный индикатор тоже молчит. А это хуже. Понятно , что наиболее быстро выявит дивер тот макд , который строится по нижней цене ( лоу ) , когда цена идет вниз ( точнее на исходе низа и развороте наверх ). И , наоборот , если цена движется вверх , то макд , ориентированный на максимальную цену хай , быстрее и качественнее выявит расхождение и отрисует дивер. То есть быстрее , чем по другим ценам ( клоз и усреднения всякие ). Вот поэтому лучшим решением для макда и других , где в основе лежит сигнал от пересечения машек , будет , во-первых , переворот цены внутри макд ( то есть база исчисления макд меняется с цены лоу на хай и обратно ). И , во-вторых , ориентация макд ( и других аналогичных ) на крайние цены. Что , повторяюсь , даст быстрейший сигнал и дивер. А его ложность или истину проверяем сопоставлением с другим фильтрующим индикатором. Во всяком случае сигал выявится , а не утонет. В DivergenceViewer вполне возможно такой принцип реализовать ( по макд минимум ). Но почему предлагаю сейчас этот принцип реализовать отдельно на макд. Во-первых , есть смысл потренироваться на кошечках , во-вторых , это то , что сам макд и дивера от него , построенные по такому принципу в отдельном индикаторе , является лишь частью этого индикатора. Главная часть состоит вверху ( в окне ). Там , где проложены 2х2парыМА с ценами лоу-хай. Здесь идея такая. Когда вы некините на график цены пару машек с одинаковыми параметрами кроме цены ( одна крайняя хай , другая крайняя лоу ) и отдалите график цены на расстояние времени ( на мес , день ... ) , то увидите , что машки идут за ценой ( или цена за машками - вопрос спорный ) . И это движение напоминает каналы. Боковуха , флэт вниз или вверх и , наконец , тренд. Канал не в смысле беломорканал или газовой трубы. А в смысле Машки идут , а цена варьируется вокруг них , как в танце партнер кружит партнершу. В результате складывается ощущение канала. Когда цена спокойна ( флэт ) ноги у Машки раскинуты в стороны. Она отдыхает. Когда пошел тренд , Машка собирает себя в стержень и начинает бежать со сдвинутыми ногами ( с работы ли , на работу ли , на танцы ли - мало ли куда девушка бежит сломя голову. ) Но начинает она бежать отталкиваясь от своих ног. Когда бежит вниз - отталкивается от быстрой штриховой-ЛОУ красной линии , когда бежит вверх , то отталкивается от медленной сплошной-ХАЙ красной линии. Помимо того , что мы оперируем усредненными крайними точками ( ценами ) , линии , построенные ими никогда не пересекаются. В отличии от , например , если мы будем строить пары от клоз или еще чего-то. Третья особенность следующая. Если иметь 2 МА , каждая из которых разнесены по хай ( главная ) и лоу ( подчиненная ) , то получим 4 кривые , 2 пары из которых не пересекаются. А всего пересечений 4. И эти пересечения ПОСЛЕДОВАТЕЛЬНЫ. То есть их можно систематизировать правилами. Главное , что эти линии между собой пересекаются последовательно. Например , снизу вверх быстрая лоу никогда не пересечет медленную хай ( желтая сплошная вертикаль на графике индикатора ) , если до этого не пересекла , как минимум , медленную лоу ( голубая сплошная вертикаль ) . То же относится и к другим линиям МА. Набор небольшой. В идеале комбинация вертикалей для бай: сиреневая ( 1 ) - белая ( 2 ) - голубая ( 3 ) - желтая ( 4 ) . ВСЁ. Это тренд вверх. Все 4 МА (главные ( хай ) быстрая и медленная и их подчиненные ( лоу ) пересекли максимально возможные для себя линии и быстрая лоу вышла на оперативный простор. То есть в тренд бай. Эту комбинацию можно выразить так: 1-2-3-4. Возможен вариант 1-3-2-4. Видите , первой всегда идет 1 ( сиреневая сплошная ) , последней всегда идет 4 ( сплошная желтая ). Это главные вертикали. Между ними вертикали 2-го порядка ( 2 и 3 ) или ( 3 и 2 ). Они могут чередоваться. Если комбинация сплошных вертикалей 1-2-3-4 - это сильное движение. Если комбинация вертикалей 1-3-2-4 , то движение заранее слабое. Цифра 4 ( желтая сплошная ,) - это тренд вверх. И уже на этапе зарождения этого тренда , в момент появления первой из вертикалей 2-го порядка ( белая или голубая ) можно говорить насколько сильный будет тренд. В момент появления второй вертикали 2-го уровня , вероятность тренда резко возрастает. И , значит наше поведение тоже предсказуемо. Далее возможны варианты колебаний внутри. Но это уже тема более долгого , но не трудного , объяснения. Для ситуации сэлл ситуация аналогичная , только с точностью до наоборот: 4-3-2-1 ( штриховые вертикали ) - сильное движение. 4-2-3-1 ( штриховые вертикали ) - это слабое движение. Все ньюансы для блоков бай и сэлл аналогичны , описываемы и зеркальны. Но самое главное!!!! Еще раз гляньте на график цены издалека ( другой формат времени ) и как ведут себя наложенные на этот график наши МА - они рисуют нам каналы. И цена идет по каналам , которые можно выстраивать заранее , уже на стадии появления одной из вертикалей 2-го уровня. А , значит , можно видеть будущую цену далеко вперед. В этих построениях весомую роль играет макд с его диверами , которые выдаются на основе того принципа , что я изложил в самом начале. Поэтому я и прошу сначала в обязательном порядке привязать к этим машкам макд , переключающимся по мере появления главных вертикалей тренда: желтая сплошная ( вертикаль тренда вверх ) , сиреневая штриховая ( вертикаль окончания тренда вверх ). А уж как это будет реализовано - отдельно для макда буфер для цены хай и отдельно для цены лоу. Или какой-то третий вариант ( о чем вы намекали ) - на ваше усмотрение. Я точно сам это не сделаю , тем более с учетом дальнейшей работы. Кроме того уточняю , что основной МАшкой для макд при определении дивера , будут 2 машки ( попеременно ) , уже введенные в индикатор. Это пара медленной МА - главная ( хай ) и подчиненная ( лоу ). Да , еще сразу отвечаю на вопрос. Почему именно после желтой сплошной нужно переключать цену для макд. Во-первых , я уже пояснил , что желтая сплошная вертикаль ( №4 ) , ( последняя цепочка из 4-х сплошных вертикалей разного цвета ) - это вертикаль тренда вверх ( 1-2-3-4 или 1-3-2-4 ) . Его окончание - сигнал от другой главной вертикали обратного направления №1 ( сиренего цвета ) , но штриховой ( поскольку пересечение МА вниз ). Верно и обратное построение: вертикаль тренда вниз - сиреневая штриховая ( №1 ) и его окончание - желтая сплошная ( №4 ). Во-вторых. Для построения дивера макдом по хай или лоу не критично , если тренд определен несколько грубо. Макд всегда перевернет цену расчета , как только желтая сплошная сменится сиреневой штриховой. Просто у нас будет иметь место направленный флэт или боковой флэт. Только и всего. Во флэте некритично от чего рисуется макд. А вот в тренде да , ... но об этом я уже пояснил выше. То есть тютелька-в-тютельку идентифицировать тренд - это не наша задача. Тренд , в общем и целом , как разворот. Это то , что нам надо. И дивера будут этот разворот подтверждать для нашего нового канала. То есть мы канал уже рисуем , а дивер на изломе этот разворот подтверждает. А часто и предвосхищает ( если вместе с МССЕ использовать ). Как-то так.

Scriptong: ko_ko пишет: Ну , видимо , надо два буфера: отдельно для High и отдельно для Low. Я сам вряд ли осилю написание. Нет, не нужно. Я ведь уже показал, как. Именно в этом и прелесть идеи: в одном буфере находятся смешанные данные по MACD (часть рассчитана по High, часть по Low). Данными этого буфера и оперируете.

Scriptong: ko_ko пишет: В DivergenceViewer вполне возможно такой принцип реализовать ( по макд минимум ). Опять же - нет смысла. Поставьте два DV. Один пускай ищет диверы по максимумам MACD, другой - по минимумам.

ko_ko: Чуть откорректировал индюк. Добавил сравнение МА по будущим свечам для отрисовки вертикалей. На 1 свечу стало задерживаться. Зато ложные касания ушли. Просьба ( чтоб не отвлекать Игоря ) - вопрос пустячный. Надо внести в код условие при отображении вертикалей. При отрисовке вертикалей проверять : если новая вертикаль повторяется своим цветом и направлением , то она игнорируется и не отрисовывается. То есть , перед тем как отрисоваться желтым , проверяется последняя желтая вертикаль , которая была отрисована. Если она со-направлена ( сплошная-сплошная или штриховая-штриховая ) , то не рисуется. Иначе ( сплошная-штриховая или штриховая-сплошная ) - рисуется. Вот на рисунке пять желтых. Четвертая при этом повторяет третью ( обе сплошные ). Четвертая - лишняя. Должна быть игнорирована. ( она там появилась , поскольку в новую версию ввел условие проверки будущих свечей и в этом случае было касание ( рядом с 4-й вертикалью ) , но вертикаль не отобразилась. Но зато отобразилась и осталась прежняя ( 4-я ) вертикаль того же направления ( бай ). Как буд-то была штриховая вниз. То есть индикатор это пересечение вниз посчитал , но не нарисовал. А надо , чтобы и не посчитал и не отрисрвал. Значит и желтую сплошную не отрисовал бы. Да , и не обязательно , что все вертикали одного цвета идут друг за другом ( это такой пример попался на скорую руку ). Межу ними могут быть вертикали других цветов , но главное , чтоб эти одноцветные вертикали были всегда разнонаправлены. сам индюк: https://cloud.mail.ru/public/Jwjw/edpDTv3km

Scriptong: ko_ko пишет: Добавил сравнение МА по будущим свечам для отрисовки вертикалей. А вот это Вы зря. На истории будет более-менее красиво, а в реале - пшик, т. к. свечи -1 (именно так у Вас в коде) никогда не увидите. ko_ko пишет: Зато ложные касания ушли. Естественно, Вы же в будущее заглядываете. Только это красиво лишь на истории. ko_ko пишет: При отрисовке вертикалей проверять : если новая вертикаль повторяется своим цветом и направлением , то она игнорируется и не отрисовывается. Для этого нужно "помнить", какая линия была отображена последней. Есть, конечно, вариант, проверять сканированием графика, но он достаточно "долгий" и непрактичный. Поэтому только сохранение последнего типа отображенной линии. Самый простой способ - писать тип в неотображаемый буфер. Но это тоже лишний расход памяти. Я бы завел отдельную статическую переменную и в ней бы сохранял тип последней линии. Только пришлось бы заморочиться с поддержанием ее правильного состояния в моменты подгрузки истории (выход - перерисовка всего графика). То есть примерный принцип такой: enum LAST_LINE_TYPE { LAST_LINE_NONE, LAST_LINE_YELLOW, LAST_LINE_MAGENTA, LAST_LINE_WHITE, LAST_LINE_BLUE }; ... int start() { static LAST_LINE_TYPE lastLineType = LAST_LINE_NONE; ... limit=Bars-counted_bars; //---- последний посчитанный бар будет пересчитан if (limit > 1) { limit = Bars - 1; lastLineType = LAST_LINE_NONE; } ... if (EMAfastHighnow>EMAslowerLownow && EMAslowerLowprevious>EMAfastHighprevious && EMAfastHighafter >EMAslowerLowafter && lastLineType != LAST_LINE_MAGENTA) { manageArrow0(i,Magenta ); // ... k1>J0 вверх lastLineType = LAST_LINE_MAGENTA; } if (EMAfastLownow>EMAslowerHighnow && EMAslowerHighprevious>EMAfastLowprevious && EMAfastLowafter>EMAslowerHighafter && lastLineType != LAST_LINE_YELLOW) { manageArrow0(i,Yellow ); // вверх... lastLineType = LAST_LINE_YELLOW; } ... // Ну и так далее для каждого типа линии }

ko_ko: Я уже когда написал , подумал , что вариант с сокрытием линий не совсем правилен в плане объективности. И вот такое решение придумал. Можно ли его внедрить? Задержка регистрации свечи задается настройками. Тогда , если происходит касание ( будущие бары сравниваемых МАшек не подтвердили пересечения ) , то индикатор не регистрирует данное пересечение. А , значит , и 4-ю вертикаль не будет рисовать. Тогда у нас будет то , что должно быть отображено : вертикали №1,№2,№3,№5 ( см. рис. прошлого поста ) То есть ввести регистрацию пересечений. Задержка регистрации ( по усмотрению трейдера 1-2-3... свечей ) задается отдельным параметром. Тогда все пересечения одного цвета будут чередоваться строго один за другим ( сплошная-штрих-сплошная-штрих... ). Такой подход и объективен и не такой условный.

Scriptong: Извините, не понял контекст Вашего сообщения. Оно по смыслу указывает, что является ответом на что-то, но исходное сообщение Вы не процитировали.

ko_ko: Наверное бегу впереди паровоза. Если индикатору запретить рисовать какие-то вертикали , то визуально это можно добиться ( например тем , как Вы это расписали в коде ) и насладиться рисунком. Но проблема в том , что индикатор не нарисует вертикаль , НО ПОСЧИТАЕТ ее , то есть зарегистрирует. И свои действия будет производить с учетом того , что эти вертикали реально существуют. Нам же надо , чтобы не только не нарисовал , но и не зарегистрировал их у себя в буфере. Для этого можно ввести параметр "задержка регистрации свечи". Задаю задержку 2 свечи. Значит индикатор выжидает поведение 2 будущих свечей прежде чем отрисует и зарегистрирует вертикаль , которая отсигналила. Условием подтверждения истины является фиксация следующих в том же направлении , что и для сигнальной свечи. Количество подтверждающих свечей и задается этим параметром. В этом случае , если истина , то вертикаль рисуется и регистрируется индикатором. Если не подтверждается направление , то вертикаль не рисуется и не регистрируется. Вопрос запаздывания регистрации при пересечении машек не критичен. Запоздает сигнал на 15-30 мин. Это не критично на М15. Или на 5-15 мин для М5 или 1-2 часа для Н1.... Фиксация тренда или флэта не зависит от 15-30 минут. Если направление движения изменилось , то это на часы и десятки часов. Иногда на дни. Это РСИ может лихорадочно меняться , 5 раз в минуту. А Машка она такая , консервативная , хоть и живее всех живых. Это я отвечаю на ваше замечание в прошлом посте , о том , как я предлагал уходить от ложных касаний на основе сравнения будущих свечей: "Естественно, Вы же в будущее заглядываете. Только это красиво лишь на истории." Технически решается таким образом проблема?



полная версия страницы