指値注文した時、約定までに何日を要するかシミュレーションをしてみた。当日以降の高値で約定金額以上になる最初の日までの日数を調べるにはどんな関数を用いたらいいかわからず、以下のような解決をしたが、本来どのようにするべきだろうか??
設定は、始値で買って、その5%増しで指値売注文をしたときに約定までに何日要するか。その日のうちに株価が上がれば当日約定することもある。
サンプルデータは
プログラムは
結果は
sasiが指値、dが約定までに要した日数である。当日約定の時は1となる。Infは約定しなかったものだ。
例えば3月13日は始値が5020円だったので、指値は+5%の5271円、約定したのが8日後(3月24日、3月13日を1日目と数える。営業日のみのカウント)。この日の高値は5300円であったので売れたわけだ。
2つのベクトルについて片方を固定して他方のベクトルを検索し、そのうえで最初のベクトルを動かすという順序性をどう解決するのか、手ごろな関数がありそうだが見つからなかった。ご存知の方があれば教えてもらいたい。(誰もこのブログは見ていないって)
ベクトルv、定数aについて、min(which(v>a))はv中の最初にaを超える要素の添え字を返す。
これは、対象vがxtsだとうまく動かないのでどちらもnumericに変換した。
本当はsasiの値で回したいのだが、「この日以降」の参照がsasiの値からはできないので、sasi中のインデックス(添え字)iで回した。Hは高値からなるベクトルであるので、H[i:n]で当日以降を表した。
0 件のコメント:
コメントを投稿