RCI投資戦略[交差・レベル][Trading View][Pineスクリプト]

ニッケルメッキです。
だんだん寒くなってきましたね。
え?相場のことかって?
そうかも。

外気温や出来高はともかく、テクニカルVS統計のような話やエリオット論議など界隈は勉強家が多く話題にだけは事欠かないようです。

そこで、今日話題にでていたRCIのクロス戦略をPineスクリプトで書きましたのでご紹介します。
なかみは特に工夫もないRCIを用いたクロス戦略です。

RCIのコード部分自体はRCI3Lineのgeroさんのオリジナルから引用しています。

機能としては、順張りと逆張りを変更することが可能です。
RCIの違った側面が見られると思いますので、色々な時間軸で順張りと逆張りを変更してみるのがお勧めです。
以下コード ※クロスに加えてレベル版を追加しました ※レベル版に加えてレベル0交差を追加しました

//@version=3
strategy("RCI投資戦略[交差]", overlay=false)
src = input(close, title="ソース")
mode = input(title="順張り[TRUE]/逆張り[FALSE]", type=bool, defval=false)
fast = input(title="中期", defval=26, type=integer)
slow = input(title="長期", defval=52, type=integer)

//RCI関数
ord(seq, idx, itv) =>
    p = seq[idx]
    o = 1
    for i = 0 to itv - 1
        if p < seq[i]
            o := o + 1
    o

d(itv) =>
    sum = 0.0
    for i = 0 to itv - 1
        sum := sum + pow((i + 1) - ord(src, i, itv), 2)
    sum

rci(itv) => (1.0 - 6.0 * d(itv) / (itv * (itv * itv - 1.0))) * 100.0

//順張り逆張りの変更(数値の入れ替え)
f = mode ? rci(fast) : rci(slow)
s = mode ? rci(slow) : rci(fast)

//売買
longCondition = crossover(s, f)
if (longCondition)
    strategy.entry("RCI Cross Over", strategy.long)

shortCondition = crossunder(s, f)
if (shortCondition)
    strategy.entry("RCI Cross Under", strategy.short)

//RCI描画
plot(s, color=green)
plot(f, color=orange)
//@version=3
strategy("RCI投資戦略[レベル]", overlay=false)
src = input(close, title="ソース")
mode = input(title="順張り[TRUE]/逆張り[FALSE]", type=bool, defval=false)
length = input(title="期間", defval=26, type=integer)
upper = input(title="レベル[高]", defval=80, type=integer)
lower = input(title="レベル[低]", defval=-80, type=integer)

//RCI関数
ord(seq, idx, itv) =>
    p = seq[idx]
    o = 1
    for i = 0 to itv - 1
        if p < seq[i]
            o := o + 1
    o

d(itv) =>
    sum = 0.0
    for i = 0 to itv - 1
        sum := sum + pow((i + 1) - ord(src, i, itv), 2)
    sum

rci(itv) => (1.0 - 6.0 * d(itv) / (itv * (itv * itv - 1.0))) * 100.0

//RCIの計算
signal = rci(length)

//順張りと逆張りの入れ替え
l = mode ? 1 : 0
s = mode ? 0 : 1

//売買
longCondition = signal < lower
if (longCondition)
    strategy.entry("RCI Break Down", l)

shortCondition = signal > upper
if (shortCondition)
    strategy.entry("RCI Break Up", s)

//RCI描画
plot(signal, color=green)
//@version=3
strategy("RCI投資戦略[レベル0交差]", overlay=false)
src = input(close, title="ソース")
mode = input(title="順張り[TRUE]/逆張り[FALSE]", type=bool, defval=false)
length = input(title="期間", defval=26, type=integer)

//RCI関数
ord(seq, idx, itv) =>
    p = seq[idx]
    o = 1
    for i = 0 to itv - 1
        if p < seq[i]
            o := o + 1
    o

d(itv) =>
    sum = 0.0
    for i = 0 to itv - 1
        sum := sum + pow((i + 1) - ord(src, i, itv), 2)
    sum

rci(itv) => (1.0 - 6.0 * d(itv) / (itv * (itv * itv - 1.0))) * 100.0

//RCIの計算
signal = rci(length)

//順張りと逆張りの入れ替え
l = mode ? 1 : 0
s = mode ? 0 : 1

//売買
longCondition = signal > 0 and signal[1] < 0
if (longCondition)
    strategy.entry("RCI Break Up", l)

shortCondition = signal < 0 and signal[1] > 0
if (shortCondition)
    strategy.entry("RCI Break Down", s)

//RCI描画
plot(signal, color=green)

このコードで何か得られるわけでもないのですが、単純なクロスでも順張りするのか逆張りするのかなど、同じ指標でもトレーダーによって見方は変わります。

もし、RCIは逆張りのみであるとかオシレーターのイメージ通りにしか捉えてなかったとしたら。それはもったいないことです。

何かしら戦略の参考になれば幸いです。


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

26

仮想通貨

2つのマガジンに含まれています
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。