2016-02-17 2 views
2

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

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

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

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

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

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

Edit:

Я на самом деле состоит теперь 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 на следующий день, что является открытой ценой. Для второго сигнала во второй последний день увольняется, но никогда не выполняется. Это может быть правильным, так как open уже находится ниже уровня предела остановки, чтобы начать с него, однако в тот последний день цена повысилась до 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" 

ответ

0

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

+0

Однострочное предложение должно быть в комментарии. – Rumit

+0

@Rumit: хорошо. Новый для SE – user8912739

+0

в порядке, это так.:-) – Rumit

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