本連載は、まだ取引を開始して間もない方や、現在勉強中だという方を対象に、毎回、ある1つのテクニカル指標をピックアップし、知識編・実践編の2回に分けてご紹介していきます。実践編では、知識編でご紹介したテクニカル指標を売買ルールとして用いて、システムトレードのプログラミングに挑戦していきます。

なお、本連載内で使用されるプログラミングのプラットホームには、ひまわり証券が提供しているシステムトレード用高機能ツール「トレードシグナル」を使います。

前回お届けした「知識編」では、テクニカル指標の代表格とも言える、買われ過ぎや売られ過ぎを判断するオシレーター系指標の一つ、「RSI」をご紹介いたしました。この「RSI」指標を売買ルールとして用いて、[RSI値が70%に達したら売り注文・30%に達したら買い注文]となる自動売買システムを作製していきます。

■プログラム構築ルール

  • Cutler氏考案の単純移動平均を用いたRSIを売買ルールに使用
  • 対象期間は14日間
  • RSI値が70%以上に達したら売り注文、30%以下に達したら買い注文
≪使用公式(CutlerのRSI)≫
RSI(%) = 100-( 100÷( 1+( N日間の値上がり幅合計 ÷ N日間の値下がり幅合計 ))

■プログラム内容

{①プログラムの概要}
Meta:	Synopsis( "単純移動平均を用いたCutler氏の「RSI」" );


{②変数の宣言}
Inputs:	Price( Close ),
	Period( 14, 1 ),		//対象期間を14日間と指定
	HigherZone( 70, 0, 100 ),	//RSIの一般的な買われすぎライン
	LowerZone( 30, 0, 100 ),	//RSIの一般的な売られすぎライン
	ContractsNum(1);		//取引枚数のデフォルト値を設定


{③プログラム内で使用される変数の定義}
Variables:
	i , up , down , longSig , shortSig , CutlerRSI ;


{④RSI計算式}
up=0;
down=0;							//upとdownは0から始まると指定

For i = 1 To Period Begin					//Forループによって指定された回数の繰り返し[Inputsで指定した14日分]
	If Price[i-1] > Price[i] Then Begin 			//[もし、終値が一つ前のバーの終値よりも高かったら]の意
		up   = up   + Price[i-1] - Price[i] ;End		//N日間の値上がり幅合計の算出
	Else If Price[i-1] < Price[i] Then Begin			//[もし、終値が一つ前のバーの終値よりも低かったら]の意
		down = down + Price[i] - Price[i-1];End;End;	//N日間の値下がり幅合計の算出

If    down = 0 Then	CutlerRSI = 0				//N日間の上昇又は下落が"0"だった場合、RSI値は計算不可となり
Else If up = 0 Then	CutlerRSI = 100				//参考数値として、0%や100%として置き換えることとする
Else
CutlerRSI = 100 - ( 100 / ( 1 + up / down ) );			//RSIの算出公式


{⑤売買ロジック作成;1つ前のバーでRSIの値が30を下回ったら"買い"、70を上回ったら"売り"}
shortSig =(CutlerRSI Crosses Over HigherZone);			//A crosses over B ; AがBを下からクロスした場合Trueを返す
longSig  =(CutlerRSI Crosses Under LowerZone);			//A crosses under B: AがBを上からクロスした場合Trueを返す

If longSig Then
	Buy("買い") ContractsNum Contracts Next Bar at Market	//30を下回ったら"買い"
Else If shortSig Then
	Short("売り") ContractsNum Contracts Next Bar at Market;	//70を上回ったら"売り"


//****≪ちょっと応用≫****
//**【For…To…Step…】の使用。For Loopは指定された回数、ステートメントを繰り返して適用することができます。
//**上記プログラムでは、For Loopを使用することで、14日分の計算式を1つに短縮しています。

※さらに詳しいプログラミング言語「エキーラ」の解説ガイドはこちら

■プログラム適用後

プログラム適用チャート:日経平均(日足)の2010年データ

※チャート上、プログラム内容を確認するため、RSIを表すインディケータを適用しています。
※ここで記載のプログラムは過去データによる検証用として書かれています。実際の自動売買用プログラムとしては、口座やツールの仕様上、このままではお使いいただけません。

参考URL

『トレードシグナル』詳細

― 第1回 RSI編 おわり―