Я пытаюсь создать индикатор с динамическим значением n, которое меняется каждый день. По сути, я разрабатываю стратегию, заключающуюся в открытии сделки, когда цена акций достигает своего наивысшего значения за все время.
На мой взгляд, лучший способ сделать это — использовать Дончиан Шанель и входить, когда цена закрытия равна или превышает все предыдущие максимумы постоянного тока. Для этого мне нужно:
n = (текущая дата алгоритма - дата начала).
Таким образом, индикатор начнет работать с первого дня и не «забудет» о предыдущих максимумах, поскольку стратегия работает с годами данных. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как написать код/функцию, которая будет выражать текущую дату стратегии таким образом, чтобы я мог превратить ее в простой расчет. Лучший код, который я могу придумать, это:
##Problem in line below##
dcn <- difftime(initdate, as.Date(datePos), units = c("days"))
### This part will work fine once dcn is working
BuySig<-function(price,DC...)
{ifelse(price=>DC,1,0)}
add.indicator(strategy=strategyname,name="DonchianChannel",
arguments=list(HL=quote(mktdata$Close),n=dcn),label="DC")
dcn, конечно же, будет моим каналом Donichan Channel n. Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, что я пытаюсь использовать вместо as.Date(datePos), он продолжает говорить мне, что «объект datePos не найден». Я пытался использовать другие вещи, которые я указал ранее в своем коде, такие как: даты, отметка времени.
Любой совет будет действительно полезен.
as.Date
ищет в вашей среде объект с именем datePos. Так где же прячутся эти данные? В кадре данных? В списке? То же самое касается инициализации. Многие вопросы, которые вы можете решить, создав воспроизводимый пример - person phiver   schedule 30.11.2018