1

ローソク足チャート パターンに基づいてトレーディング シグナルを生成するためRに と組み合わせて使用​​したいと考えています。quantmod私の計画は、OHLC データに基づいて期間ごとのシグナルを計算するユーザー定義関数を作成することです。私がこれまでに持っているものは次のとおりです。

getSymbols("IBM", src="google")
candle = function(data, ...)
{
    if (abs(Op(data)-Cl(data)) < (Op(data)*0.0005))
        doji = "doji"
    else
        doji = "non-doji"   
    return(doji)
}
apply.daily(IBM, FUN=candle)

この関数は、xts オブジェクトで毎日の値を返します。candleここで、前または次の値に基づく関数にいくつかの計算を追加したいと思います。隣接する値にアクセスするにはどうすればよいですか?

data関数内にあるオブジェクトはcandle1 行だけのようです (少なくとも、 を呼び出したときに得られるものですnrow)。使用してみlagましたが、常に得られますNA(おそらく、xts オブジェクトの長さが 1 行しかないためです)。

どんな助けでも大歓迎です。また、quantmod についてさらに学ぶためのポインタについても嬉しく思います。Web サイトで示唆されているワークフローのようなものがあるようですが、実際のドキュメントは見つかりませんでした。

編集:

私の実際の目標を明確にしたいと思います。

細粒度の OHLC データを取得し、一定の期間 (たとえば、1 時間ごと) に集計します。したがって、1 時間はローソク足チャートの 1 つのローソク足を表します。

ここで、これらのデータポイントを調べて特定のパターンを探しています (たとえば、プロパティ x を持つ 1 つのローソク足の後に同じものが 2 つ、プロパティ y を持つローソク足が 1 つ続く場合)。

4

1 に答える 1

1

apply.daily日中のデータで使用するためのものです。データを日ごとに分割し、各日に関数を適用します。日次データがあるため、1 日あたり 1 行のデータしかありません。

これまでに示したものについては、 を使用する必要はありませんapply.daily

data(sample_matrix)
dat <- as.xts(sample_matrix)

# Create an object with the same index as dat, and fill with "non-doji"
doji <- xts(rep("non-doji", nrow(dat)), index(dat))
# now, anywhere your condition is true, replace "non-doji" with "doji"
# This takes advantage of the vectorized nature of R
doji[abs(Op(dat) - Cl(dat)) < (Op(dat) * 0.0005)] <- "doji"
tail(doji)
#           [,1]      
#2007-06-25 "non-doji"
#2007-06-26 "non-doji"
#2007-06-27 "doji"    
#2007-06-28 "non-doji"
#2007-06-29 "non-doji"
#2007-06-30 "non-doji"

ただし、おそらく「doji」という別の列を追加しdatて、条件が満たされた場合に値1を、そうでない場合にゼロを与えるだけです。(xts オブジェクトのすべてのデータは同じ型でなければならないことに注意してください)。

dat$doji <- 0 # create a column called "doji" and fill it with zeros
# now set "doji" to 1 anywhere your condition is true
dat$doji[abs(Op(dat) - Cl(dat)) < (Op(dat) * 0.0005)] <- 1

R> tail(dat)
               Open     High      Low    Close doji
2007-06-25 47.20471 47.42772 47.13405 47.42772    0
2007-06-26 47.44300 47.61611 47.44300 47.61611    0
2007-06-27 47.62323 47.71673 47.60015 47.62769    1
2007-06-28 47.67604 47.70460 47.57241 47.60716    0
2007-06-29 47.63629 47.77563 47.61733 47.66471    0
2007-06-30 47.67468 47.94127 47.67468 47.76719    0
于 2013-03-30T02:56:24.987 に答える