5

Я не эксперт-программист, но я пытаюсь изменить способ отображения технических индикаторов в финансовом картографическом пакете TradeStation (не это конкретный поставщик карт имеет отношение).Помощь по управлению ценовой серией (индикатором) колеблется вокруг значения центра

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

В прошлом я пробовал много способов, один из способов использовал шкалу логарифмического типа, но это не было успешным, поскольку оно делало любые колебания, которые были очень велики, почти несущественны, что не является целью. Цель состоит в том, чтобы попытаться удерживать любое колебание индикатора почти одинаковым, но изменить его размещение так, чтобы оно приблизилось к нулю (в центре). Или по-другому; цель состоит в том, чтобы заставить индикаторы выполнять похожие колебания, но центр этих колебаний должен быть ближе к нулю (центр шкалы индикаторов).

Кто-нибудь знает или может думать о том, как это можно сделать? Существуют ли какие-либо алгоритмы, которые могли бы помочь любому ценовому ряду осциллировать больше вокруг центральной точки без чрезмерного искажения оригинала?

Любая помощь на этом была бы весьма признательна, спасибо.

== UPDATE == enter image description here Розовая линия оригинальный осциллятор, черная линия, которую я нарисовал. Это грубо представляет собой то, что моя цель была бы для этого. Круговые области показывают, где нарисованная линия пересекает нуль, так что ее значение Zero находится примерно в центре колебания ... Но общая форма колебаний остается узнаваемой по сравнению с исходной, также существует меньшее расхождение в максимумах и минимумы каждого колебания; то есть они более похожи по значению. Я попытался добавить несколько различных функций Detrend к различным индикаторам, но я обнаружил, что это слишком сильно искажает форму.

ОБНОВЛЕНИЯ 2

Я попытался делением уменьшения линейно оси у на 50% и 80%, К сожалению, это, кажется, только действует в том же самом был в качестве масштабного коэффициента будет? Это верно? Кажется, это не изменяет отношения между различными колебаниями. Если вы видите мой пример, черная линия имеет более стабильные высокие и низкие колебания, то есть они более похожи по величине/размеру, и это ключевая цель.

Далее я попытаюсь добавить фильтр высоких частот к сюжету, чтобы увидеть, какой результат он дает, и если он ближе к моей цели.

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

Крис

UPDATE 3

Привет ребята, я также реализован фильтр высоких частот к индикатору. Это тоже не помогло. Это также действует как масштабный фактор. То, что я по существу, заключается в том, чтобы сделать большие колебания меньше, а небольшие колебания больше.Приведение любого индикатора, используемого в более синхронизированный диапазон, и делать это при сохранении основных свойств рассматриваемого индикатора ... Лучше всего описать это может быть, что я после формулы демпфирования?

Есть ли у кого-нибудь другие идеи или вещи, которые я должен попробовать? Ура !!!

+0

картинка стоит тысячи слов - Можете ли вы опубликовать пример диаграммы, и образец «модифицированной» диаграммы, которая представляла бы то, что вы хотите? –

+2

@Christopher Позвольте мне приветствовать вас в StackOverflow и напомнить о трех вещах, которые мы обычно делаем здесь: 1) По мере получения помощи попробуйте дать ей слишком ** ответы на вопросы ** в своей области знаний 2) ['Читайте ответы на часто задаваемые вопросы" ] (http://tinyurl.com/2vycnvr) 3) Когда вы видите хорошие вопросы и ответы, проголосуйте их ['используя серые треугольники'] (http://i.imgur.com/kygEP.png), поскольку достоверность системы основана на репутации, которую пользователи получают благодаря обмену своими знаниями. Также не забудьте принять ответ, который лучше решает вашу проблему, если таковая имеется, ['путем нажатия знака галочки'] (http://i.imgur.com/uqJeW.png) –

+0

@ Кристофер: используйте тот же адрес электронной почты для входа. Таким образом, вы сможете редактировать свои вопросы и т. Д. Теперь вы создали 2 аккаунта: [this] (http://stackoverflow.com/users/679441/christopher) и [this] (http://stackoverflow.com/users/680084/christopher) – abatishchev

ответ

4

Если вы хотите сделать что-то индивидуальное, вы можете, например, фильтровать низкочастотные компоненты преобразования Фурье.

Предположим, что мы имеем следующий сигнал:

enter image description here

Затем мы вычисляем БПФ, и держать только более высокие частотные составляющие. Скажем, мы игнорируем первые 1,5% компонентов. В результате участок исходного сигнала и в результате колеблющийся один:

enter image description here

НТН!

Edit 2

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

Программа в Mathematica (на всякий случай):

centerOsc[x_] := 
    Module[{list, n, fp, coef, s}, 
    list = ([email protected][#, "Jan. 1, 2005"])[[2]] &@x; 
    n = [email protected]; 
    fp = Transpose[{N[Range[n]]/n, list}]; 
    coef = FourierDST[list, 1]/Sqrt[n/2]; 
    coef = Table[N[coef[[i]] (1 - E^(-i/6))], {i, 1, [email protected]}]; 
    s = IntegerPart[[email protected]/100]; s = 1; 
    {fp, {#, 
     Sum[coef[[r]]*Sin[Pi r #], {r, s, n - 1}]} & /@ (N[Range[n]]/ 
     n)}]; 
l = {"GE", "GOOG", "IBM", "MSFT"} ;(*Real prices from*) 
[email protected] 
Partition[ListLinePlot[centerOsc[#], 
    Axes -> False, Frame -> True, PlotLabel -> #, 
    PlotRange -> {{0.1, .9}, Full}, 
    Epilog -> Line[{{0, 0}, {1, 0}}]] & /@ l, 2] 

enter image description here

Edit 2

На основе вашего последнего обновления, кажется, что то, что вы хотите, может быть достигнуто легче. Просто посмотрите, что получится путем деления уменьшения линейно оси у на 50% и 80% (с использованием данных, извлеченные из Вашего участка):

enter image description here

и сравнить с сюжетом:

enter image description here

1

Первое, что я предлагаю вам сделать, это слишком стандартизировать все показатели в среднем 0 и стандартное отклонение 1. это, по крайней мере, будет центрировать все ваши индикаторы вокруг 0.

http://en.wikipedia.org/wiki/Standard_score

-Ральф Winters

+0

Большое спасибо людям. Я очень ценю, что вы тратите время на то, чтобы ответить. У меня много дел, потому что я, вероятно, экспериментирую с несколькими различными способами, изложенными здесь. Уверен, у меня будет больше вопросов, и я буду держать вас в курсе всех! – Christopher

+0

Обновление 2 теперь добавлено ... – Christopher

0

Я пометил низкочастотную составляющую входных/выходных сигналов в вашем примере: enter image description here кажется, на самом деле, как @belisarius говорит, что вы хотите - просто делать FFT на сигнал и удалите низкочастотные детали. То есть - вам нужен алгоритм high pass filter. BTW, фильтр высоких частот также может быть реализован с помощью 1D convolution и высокочастотного ядра. Например, для трехкомпонентного вектора ядра высокочастотное ядро ​​может быть [-1; 3; -1]. На мой взгляд, реализация фильтра высоких частот с сверткой является самой простой. Но обычно реализация через FFT является самой быстрой по отношению к использованию процессора.

НТН

Смежные вопросы