Использование внешних данных индикатора для quantstrat

Я думаю об использовании R и quantstrat для тестирования некоторых стратегий. Я просмотрел некоторую документацию и видео на YouTube, чтобы узнать, можно ли делать то, что я хочу. Я совершенно новичок в R, и я готов погрузиться в необходимую документацию, но я хотел бы получить подсказку, возможно ли то, что я хочу.

Я проработал несколько примеров для тестирования на исторических данных с помощью quantstrat, и что общего для всех них, так это то, что они используют индикаторы, которые рассчитываются функциями R на основе данных о ценах.

Однако мне нужно использовать пару индикаторов, которые были рассчитаны извне и которые у меня есть как истинная/ложная информация вместе с ценовыми данными. Итак, у меня есть несколько дополнительных столбцов в CSV, которые содержат данные OHLC, и значения этих столбцов в большинстве случаев ложны, но в некоторых строках они верны. Я хочу генерировать сигналы, которые, например, используют два из этих столбцов и говорят: «Если оба верны, поместите стоп-приказ на покупку на максимуме последнего дня со стоп-лоссом на минимуме последнего дня и рассчитайте размер позиции так, чтобы максимальный убыток - это фиксированная сумма денег, основанная на разнице между максимумом и минимумом.

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

Для начала я хотел бы знать, возможно ли включить данные внешних индикаторов в качестве источников для стратегии quantstrat.

Мне бы помогло, если бы вы сказали «да» или «нет» и, возможно, указали бы мне на соответствующую документацию. Спасибо за совет!

Редактировать:

На самом деле я создал файл CSV со столбцами OHLC и просто добавил еще один столбец с единицами и нулями, как в этом очень упрощенном примере:

Date,Open,High,Low,Close,SRot
2016-02-01,28,31,20,20,0
2016-01-29,34,35,30,31,1
2016-01-28,22,30,21,28,0
2016-01-27,18,23,17,20,0
2016-01-26,30,32,20,25,0
2016-01-25,30,35,25,32,1

Я поместил это в объект xts и настроил стратегию quantstrat, с помощью которой мне удалось запустить стоп-лимитные короткие ордера после тех дней, когда последний столбец равен 1.

add.rule(strategy.st,name = "ruleSignal",
arguments=list(sigcol="srotxsignal",
               sigval=TRUE,
               ordertype="stoplimit",
               orderside="short",
               replace=FALSE,
               prefer="Low",
               orderqty=10,
               tradeSize=tradeSize),
type="enter",path.dep=TRUE,label="normalEntryShort")

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

Я предполагаю, что для второго сигнала мне нужно запрограммировать гораздо больше логики, но для первого я понятия не имею, почему ордер выполняется на 30.

out<-applyStrategy(strategy=strategy.st,portfolios=portfolio.st)
[1] "2016-01-26 00:00:00 adidas 10 @ 30"

 getOrderBook(portfolio.st)
 $dshort
 $dshort$adidas
       Order.Qty Order.Price Order.Type  Order.Side Order.Threshold Order.Status Order.StatusTime      Prefer
2016-01-25 "10"      "25"        "stoplimit" "short"    NA              "closed"     "2016-01-26 00:00:00" "Low" 
2016-01-29 "10"      "30"        "stoplimit" "short"    NA              "open"       NA                    "Low" 

person Sebastian Stuecker    schedule 17.02.2016    source источник
comment
Это исправлено? Я только что видел его.   -  person boniface316    schedule 21.03.2018


Ответы (1)


Поскольку вы пытаетесь сократить, количество вашего заказа, возможно, должно быть отрицательным числом.

person user8912739    schedule 20.02.2018
comment
однострочное предложение должно быть в комментарии. - person Rumit Patel; 20.02.2018
comment
@Румит: хорошо. Новое в SE - person user8912739; 22.02.2018
comment
Конечно! Явно новый! - person user8912739; 22.02.2018