В моем торговом программном обеспечении я пишу себе логи так:

634782126998342815 q 0.0156327559515302
634782126998966816 q 0.0156323845819952
634782126999122816 q 0.0156323423136646
634782126999278816 q 0.0156323634478013
634782126999434817 q 0.0156321895228581
634782126999434817 q 0.015632316326057
634782126999434817 q 0.0156320680833289
634782126999434817 q 0.0156319412841572
634782126999434817 q 0.0156320680833289
634782126999434817 q 0.0156321541605791
634782126999902817 b 0.0156321229489328
634782126999902817 q 0.0156319988296541
634782126999902817 q 0.0156318739862979
634782126999902817 q 0.0156319488920723
  • Первый столбец - это время (оно настолько велико, потому что это число тиков, прошедших с 1970 года, когда один тик = 100 наносекунд, просто не беспокойтесь об этом)
  • Второй столбец - операция. Либо q для цитаты b для покупки и s для продажи.
  • Третий столбец - цена.

Линии с одинаковым time должны образовывать вертикальную candle . Также мне нужно добавить аннотации на график, чтобы показать, где я покупаю и продаю акции.

Без аннотаций я думаю, что эта задача тривиальна для Matlab, но могу ли я добавить аннотации в Matlab? т.е. я хочу иметь что-то вроде этого:

Скриншот
(Нажмите на изображение, чтобы увеличить)

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

1 ответ1

0

Это возможно сделать. Следующий код создает круг (o) в позиции данных 5. Кроме того, он добавляет всплывающую подсказку. (источник: http://undocumentedmatlab.com/blog/controlling-plot-data-tips/ )

xdata=1:1:100;
ydata=rand(100,1);
% First plot the data
hLine = plot(xdata, ydata);

% First get the figure's data-cursor mode, activate it, and set some of its properties
cursorMode = datacursormode(gcf);
set(cursorMode, 'enable','on');

% Note: the following code was adapted from %matlabroot%\toolbox\matlab\graphics\datacursormode.m
% Create a new data tip
hTarget = handle(hLine);
hDatatip = cursorMode.createDatatip(hTarget);

% Update the datatip marker appearance
set(hDatatip, 'MarkerSize',5, 'MarkerFaceColor','none', ...
          'MarkerEdgeColor','k', 'Marker','o', 'HitTest','off');

% Move the datatip to the right-most data vertex point
position = [xdata(5),ydata(5),1; xdata(end),ydata(end),-1];
update(hDatatip, position);

Во-вторых, моя собственная идея, которая немного проще:

figure
xdata=1:1:100;
ydata=rand(100,1);
sells = [10,15,25]
buys = [5 12 20]

plot(xdata,ydata)
hold on
for i=buys
    i
    plot(xdata(i),ydata(i),'go','MarkerSize',6,'LineWidth',3);
end

for i=sells
    plot(xdata(i),ydata(i),'ro','MarkerSize',6,'LineWidth',3);
end

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .