|
▼ichinose さん:
お答え有難うございました、私も自動記録で作ってみました、日付け順位を価格順位に関数ランクでつくりましたが引数が見つかりませんになりエラーで全体のVBAが動かなくなりました、下のランク関数を入れない後からのは大体動きました、ランク関数を使ってランダムな株価に価格順位付ける方法がよく判りません。昨晩は夜勤で、今から出かけますので、帰りましたらシンプルに作っていただきましたRCI指数を試してみます。
RCI系指数
銘柄名 新日鉱HD
日付 日付順位 終値 価格順位 順位差平方
2006/11/17 5 800 1 4 4 16
2006/11/20 4 788 4 0 0 0 132
2006/11/21 3 779 5 -2 -2 4 120
2006/11/22 2 795 3 -1 -1 1 1.1
2006/11/24 1 797 2 -1 -1 1 順位差平方の合計(d)22 -0.1 RCI(%)-10
Sub オシレータ系RCI指数()
'
' Macro1 Macro
' マクロ記録日 : 2006/11/25
'
'
Range("E4").Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-1]"
Range("F4").Select
ActiveCell.FormulaR1C1 = "=RC[-4]-RC[-2]"
Range("G4").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("E5").Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-1]"
Range("F5").Select
ActiveCell.FormulaR1C1 = "=RC[-4]-RC[-2]"
Range("G5").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("E6").Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-1]"
Range("F6").Select
ActiveCell.FormulaR1C1 = "=RC[-4]-RC[-2]"
Range("G6").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("E7").Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-1]"
Range("F7").Select
ActiveCell.FormulaR1C1 = "=RC[-4]-RC[-2]"
Range("G7").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("E8").Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-1]"
Range("G7").Select
Selection.Copy
Range("G8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("F8").Select
ActiveCell.FormulaR1C1 = "=RC[-4]-RC[-2]"
Range("H8").Select
Selection.FormulaR1C1 = "="
ActiveCell.FormulaR1C1 = "=SUM(R[-4]C[-1]:RC[-1])"
Range("I5").Select
ActiveCell.FormulaR1C1 = "=6*R[3]C[-1]"
Range("I6").Select
ActiveCell.FormulaR1C1 = "=5*(25-1)"
Range("I7").Select
ActiveCell.FormulaR1C1 = "=R[-2]C/R[-1]C"
Range("I8").Select
ActiveCell.FormulaR1C1 = "=1-R[-1]C"
Range("J8").Select
ActiveCell.FormulaR1C1 = "=RC[-1]*100"
Range("J9").Select
End Sub
>おはようございます。
>RCIの説明は非常にわかりやすかったですよ!!
>
>こんなデータでRCIの算出を考えます。
>
> A B C
> 1 日付 終値 RCI
> 2 2006/1/17 11,545
> 3 2006/1/18 11,520
> 4 2006/1/19 11,539
> 5 2006/1/20 11,528
> 6 2006/1/23 11,439
> 7 2006/1/24 11,466
>
>上記のデータでN=5でRCIをC列に算出します。
>尚、書式は A列は日付 B列は、通貨に設定されているとします。
>C列は、標準に設定しておいて下さい
>
>標準モジュールに
>'=====================================================
>Sub main()
> Dim rng As Range
> Dim rw As Long
> Dim N As Long
> Dim add1 As String, add2 As String
> N = 5 '←Nの変更はここ
> Set rng = Range("a" & Rows.Count).End(xlUp)
> Do Until rng.Row - N + 1 <= 1
> With rng
> add1 = .Offset(1 - N).Resize(N).Address
> add2 = .Offset(1 - N, 1).Resize(N).Address
>
> .Offset(, 2).Value = Evaluate("=1-6*SUMSQ(RANK(" & _
> add1 & "," & add1 & ")-RANK(" & _
> add2 & "," & add2 & "))/(" & N & _
> "*(" & N & "*" & N & "-1))")
> .Offset(, 2).NumberFormatLocal = "0%"
> End With
> Set rng = rng.Offset(-1)
> Loop
>End Sub
>
>
>として、mainを実行してみて下さい。
>
> A B C
> 1 日付 終値 RCI
> 2 2006/1/17 11,545
> 3 2006/1/18 11,520
> 4 2006/1/19 11,539
> 5 2006/1/20 11,528
> 6 2006/1/23 11,439 -70%
> 7 2006/1/24 11,466 -60%
>
>こんな結果を得ることができます。
>
>試してみて下さい。
|
|