Kill Gap - "склейка" котировок
Не идеально, но однозначно лучше, чем по умолчанию.
Мдя? А остальные ценовые массивы как замените - High[], Low[], Close[]? Там еще много "камней". Смещение куда денете? Сдвиг уже посчитанного безгэпового результата к ценам, например?
Впрочем, все уже реализовано. И даже не вчера.
Любой индикатор можно за пару минут переделать в "безгэповый". Вот рыба:
//........................................ //........................................ extern int Gap=0; // порог идентификации гэпа в пп. double gp; double ExtMapBuffer[], // массивы буферов безгэповых котировок CloseG[], HighG[], LowG[], OpenG[]; // инициализация void init() { //........................................ //........................................ gp=Gap*Point; // буферы безгэповых котировок SetIndexBuffer(1,CloseG); SetIndexBuffer(2,HighG); SetIndexBuffer(3,LowG); SetIndexBuffer(4,OpenG); } void start() { //........................................ //........................................ // цикл пересчета for(int i=limit; i>=0; i--) { double base=Gap(limit,i); // создание безгэповых котировок и вычисление смещения //........................................ //........................................ //double ind= //ExtMapBuffer[]=ind-base; // для окна инструмена //ExtMapBuffer[]=ind; // для собственного подокна } } // Kill Gap ))) double Gap(int limit, int i) { static double base; // смещение, корректирующая гэп double gap=Close[i+1]-Open[i]; // гэп if(MathAbs(gap)>gp) base+=gap; // вычисление смещения if(i==limit && i>1) base=0; // инициализация if(Gap==0) base=0; // стандартный режим // заполнение буферов безгповыми котировками CloseG[i]=base+Close[i]; HighG[i] =base+High[i]; LowG[i] =base+Low[i]; OpenG[i] =base+Open[i]; return(base); }Достаточно заменить в индикаторе все Close на CloseG (и если необходимо для расчета остальные обращения к цен.массивам), вставить нужные куски кода и все.
===
Хотя в нектр. случаях можно обойтись без дополнительных массивов. Вот как, например, в MACD - см. аттач.
Мдя? А остальные ценовые массивы как замените - High[], Low[], Close[]? Там еще много "камней". Смещение куда денете? Сдвиг уже посчитанного безгэпового результата к ценам, например?
Впрочем, все уже реализовано. И даже не вчера.
Любой индикатор можно за пару минут переделать в "безгэповый". Вот рыба:
Достаточно заменить в индикаторе все Close на CloseG (и если необходимо для расчета остальные обращения к цен.массивам), вставить нужные куски кода и все.Возможно, но в RSI не учитываются H и L, мне кажется Вы усложняете вопрос. ИМХО.
Выше добавил, пока вы отвечали.
Но в общем случае, нужны ВСЕ котировки. Например, для Stochastic'а, нужны 3 из 4-х. И т.п. Для параболика - 2. Я просто сделал общую рыбу.
В нектр. случаях можно сделать проще, разумеется. Но не так просто, как вы это себе представляете.
Выше добавил, пока вы отвечали.
Но в общем случае, нужны ВСЕ котировки. Например, для Stochastic'а, нужны 3 из 4-х. И т.п. Для параболика - 2. Я просто сделал общую рыбу.
В нектр. случаях можно сделать проще, разумеется. Но не так просто, как вы это себе представляете.
Я согласен, конечно в разных индикаторах по разному. Надо с этим разобраться на досуге.
бары хороши только для визуального анализа, для компа этого или слишком много или слишком мало...
Случайный отскок в начале/конце бара даёт совсем другое,чем должно быть... и это не редкость...
для "реалтайма" - для генерации баров, прогноза тенденций, анализа работы эксперта....
бары хороши только для визуального анализа, для компа этого или слишком много или слишком мало...
Случайный отскок в начале/конце бара даёт совсем другое,чем должно быть... и это не редкость...
Не вполне понял. Индикаторы работают в реал-тайме и на тестере.
Используемое предыдущее Close относится уже к истории - оно было перед праздниками или выходными. А текущее Open (на открытии после перерыва) по определению неизменно. Естественно, от докачки котировок никто не застрахован, но это относится ко всем без исключения индикаторам.
Не вижу проблемы.
Индикаторы, попав на такой гэп (а это м.б. сотня пп. и более), впадают в прострацию (аж стрелки гнутся) на длину своего расчета (для индикаторов с КИХ). Для индикаторов с БИХ все м.б. гораздо хуже. Короче, пока "стрелки распрямятся" и индикаторы станут адекватными, они наваляют кучу левых сигналов для экспертов. Оно надо?
Вот что получилось с "ножницами и клеем". На чарте подцеплены МА, RSI и ATR в двух вариантах - c гэпом (красный) и без (синий). Параметр Gap - порог, за которым разрыв между Open и предыдущим Close будет идентифицирован как гэп.
Вообще, на мамбе я этим пользуюсь давно. Там, из-за сессионности торгов, утренний гэп - дело гораздо более частое, чем на форе. Одно время стало вообще невозможно, когда сессию на мамбе сократили на час, так что она даже не пересекалась с началом амерской. Потом с кризисом это дело вернули, т.к. гэпы стали уж совсем запредельными.
Но если на ФР РФ гэп можно "заполнить"- по "их" индексам, профильным активам, коммодитис, частично "в лоб" по ADR и т.п., то на форе реально использовать можно только "склейку".
Естественно, гэп гэпу рознь. Есть гэпы, которые несут в себе полезную информацию, которая м.б. обработана индикаторами, о чем подробно написано у Швагера, например. Я же имею ввиду "гэпища", которые образовались или из-за технических причин - не все ДЦ обеспечивают непрерывность котировок, или же из-за объективных - у "них" праздники, выходные, а что-то произошло, и т.п., и размер гэпа превышает разумный для внутридневного тайм-фрейма.
Ну, вот еще полосы Боллинджера в обычном и безгэповом исполнении. // Ха, с убитым гэпом их, наверно, стоит называть "полосы Диллинджера" )))
Внизу, для справки стандартная девиация (Болинжер ведь на основе станд.девиации строится).