【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, "売りクローズシグナルが発生したとき","売りクローズ")
この記事が気に入ったらサポートをしてみませんか?