見出し画像

【TradingViewストラテジー#2】RCIとSMAによるテクニカル分析アラート機能付き@コピペでOK

FXデイトレードのストラテジを紹介します。

【機能概要】
●取引ルール
 ・200日移動平均線よりも価格が上であるとき
 ・RCIの下の閾値‐80から上向きに突き抜けたとき
上記2点セットがそろったタイミングでのみ買いエントリー

 ・200日移動平均線よりも価格が下であるとき
 ・RCIの上の閾値80から下向きに突き抜けるとき
上記2点セットがそろったタイミングでのみ売りエントリー

USDJPY15分足での成績

手数料を0.005%で計算

キャプチャ

ソースコード

RCIは標準関数で無いため独自関数として定義しています。
用途に応じて下記2パターン用意しました。

バックテスト評価用

//#################################
//##           RCI関数           ##
//#################################
//RCI関数
rci(src, len) =>
    d=0
    for i=0 to len -1
        drank = i+1
        prank = 1 
        for j = 0 to len - 1
            if src[drank-1]<src[j]
                prank+=1
        d+=(drank-prank)*(drank-prank)
    rcivalue=(1-(6*d/(len*len*len-len)))*100

//@version=4
strategy(title = "RCIとSMAの組合わせストラテジー")

RCIHighBaseLine=input(title="RCIの上側の閾値", type=input.integer, defval=80,minval=1,maxval=99)
RCILowBaseLine=input(title="RCIの上側の閾値", type=input.integer, defval=-80,minval=-1,maxval=-99)
SMAlength=input(title="SMAの期間", type=input.integer, defval=200)

//チャートを描写します。
highlevel=line.new(x1=bar_index,y1=RCILowBaseLine,x2=bar_index[2],y2=RCILowBaseLine,extend=extend.both,color=#EB5654) 
lowlevel=line.new(x1=bar_index,y1=RCIHighBaseLine,x2=bar_index[2],y2=RCIHighBaseLine,extend=extend.both,color=#EB5654) 
rciline=rci(close,7)
plot(rciline,color=#4846EB)

//売買条件を設定します。
LongEntryflg= low > sma(close,SMAlength) and crossover(rciline,RCILowBaseLine) 
LongExitflg= crossover(rciline,RCIHighBaseLine) 
ShortEntryflg= high < sma(close,SMAlength) and crossunder(rciline,RCIHighBaseLine)  
ShortExitflg= crossunder(rciline,RCILowBaseLine)

//売買します。
strategy.entry("enter long",strategy.long,when = LongEntryflg,comment="買い",alert_message="買いシグナルです")
strategy.entry("enter short",strategy.short,when = ShortEntryflg,comment="売り",alert_message="売りシグナルです")
strategy.close("enter long",when = LongExitflg,comment="買いクローズ")
strategy.close("enter short",when = ShortExitflg,comment="売りクローズ")

アラート発生機能付き

//#################################
//##           RCI関数           ##
//#################################
//RCI関数
rci(src, len) =>
    d=0
    for i=0 to len -1
        drank = i+1
        prank = 1 
        for j = 0 to len - 1
            if src[drank-1]<src[j]
                prank+=1
        d+=(drank-prank)*(drank-prank)
    rcivalue=(1-(6*d/(len*len*len-len)))*100

//@version=4
study(title = "RCIとSMAの組合わせストラテジー")

RCIHighBaseLine=input(title="RCIの上側の閾値", type=input.integer, defval=80,minval=1,maxval=99)
RCILowBaseLine=input(title="RCIの上側の閾値", type=input.integer, defval=-80,minval=-1,maxval=-99)
SMAlength=input(title="SMAの期間", type=input.integer, defval=200)

//チャートを描写します。
highlevel=line.new(x1=bar_index,y1=RCILowBaseLine,x2=bar_index[2],y2=RCILowBaseLine,extend=extend.both,color=#EB5654) 
lowlevel=line.new(x1=bar_index,y1=RCIHighBaseLine,x2=bar_index[2],y2=RCIHighBaseLine,extend=extend.both,color=#EB5654) 
rciline=rci(close,7)
plot(rciline,color=#4846EB)

//売買条件を設定します。
LongEntryflg= low > sma(close,SMAlength) and crossover(rciline,RCILowBaseLine) 
LongExitflg= crossover(rciline,RCIHighBaseLine) 
ShortEntryflg= high < sma(close,SMAlength) and crossunder(rciline,RCIHighBaseLine)  
ShortExitflg= crossunder(rciline,RCILowBaseLine)

//アラート設定をします。
alertcondition( LongEntryflg, "買いシグナルが発生したとき","買いシグナル")
alertcondition( ShortEntryflg, "売りシグナルが発生したとき","売りシグナル")
alertcondition( LongExitflg, "買いクローズシグナルが発生したとき","買いクローズ")
alertcondition( ShortExitflg, "売りクローズシグナルが発生したとき","売りクローズ")

この記事が気に入ったらサポートをしてみませんか?