自動売買システムに移動平均線を用いて売買ルールを追記

投稿者: | 2016年6月7日

4.自作中の自動売買システムへ売買ルールを付加する

 

自動売買システムに移動平均線を用いて売買ルールを追記

 

ここまでで作成した5分足の読込み書き込み、及び、移動平均線の計算値の描画を行うファイルの続きから解説していきますので、そのファイルをご用意ください。

今回は移動平均線のゴールデンクロス、デッドクロスでの売買判断を行うのですが、前回のレポートまでで5本と25本の移動平均線を描画するところまで完成しているかと思います。

前回は下の画像のようなファイルを作成し、時刻の設定を行ったあと、ボタンをクリックすると自動で5分足の4本値を作成するファイルでした。

これに移動平均線を2本書きますので、まずは見出しをつけて書き込む場所を作りましょう。
では、準備が整ったところで早速作成に入っていきましょう。

 

このページでは判断の直前、判断に用いる値の用意までを行います。

 


まず、見出しをつけてゴールデンクロス、デッドクロスが発生した際に、「売買サイン」を入力する部分を用意しなくてはなりませんので、その列の見出しをつけましょう。

 

上記I列とJ列に移動平均線のデータを書き込んでいきます。

更に、現在どちらの方向にポジションを取っているか、若しくはポジションを持っていないかなどを表示するためにもう一列「保有」という見出しを追加します。

この「保有」列はポジションを持っていないときに「0」、買いポジションなら「1」、売りポジションなら「-1」と言った具合にどちらの方向にポジションを持っているかなどを書き込むスペースです。

この列があるのと無いのでは、今後の作業の煩雑さが大きく変わってきます。(今後の内容に関わってきます。)

 

では、VBAを起動させてコードを見ていきましょう。

前回までに4つの動作を作っています。

 

自動更新を開始する動作、4本値を書き込む動作、時間になったら行を移して5分足を書いていく動作に移動平均線を描画するの4つです。

 

今回は書き込まれた移動平均線を元に、ゴールデンクロス、デッドクロスでの売買判断を作成します。

 

 

移動平均線を元に、ゴールデンクロス、デッドクロスでの売買判断を作成

 

まずは、「Sub Ashi()」の記入されたモジュールを表示させてください。(下図)

 

「Sub Ashi()」の最後に、移動平均線を書き込むためのコードを呼び出す「Call IdouHeikin」という記述がございます。

 

その下に、今回作成する「Handan()」というコードを呼び出す記述を書きます。

 

呼び出すコードは、「Call Handan」となりますので、それを記述します。

これで、「Sub Ashi()」から売買判断を行うためのコードを呼び出すことが可能となります。

ただ、まだ売買判断を行うためのコードを作成していませんので、これからその作業を行います。

まず、移動平均線の計算、書込みを行う処理が記述されているモジュールを開きます。

この最終行に、「Sub Handan()」と入力して、新しい処理を書き込む部分を作成します。

入力すると、自動で「End Sub」が入力されます。

ここに処理を書き込んでいくのですが、まずクロスの判断に必要なデータを読み込みましょう。




クロスの判断を行うためには、移動平均線の二つの値が必要です。

5本平均線と25本平均線の値なのですが、クロスの判断をするためには、それぞれ現在の足の値と、直前の足の値の位置関係を比較してクロスが発生しているかどうかを判断しなくてはなりません。

下記のように、5本平均線と25本平均線の直前の足の値、それから5本平均線と25本平均線の現在の足の値です。

<ゴールデンクロスの場合>
5本平均線直前値 < 25本平均線直前値
5本平均線現在値 > 25本平均線現在値

※ この二つの条件を満たしたときにゴールデンクロスが発生する。

これら、「現在の足」と「直前の足」の位置を指定するためには、現在の足の行数が必要となります。

移動平均線の描画を行う部分を作成した際(「自動売買システムを作って見ようその3」の内容)にも、gyou = cells(2, 5)と指定して、行数を読込ましたが、それと同じことです。

エクセルのシートの中に行数の入力部分がございますので、その値を読み込みます。

ここは、先述の通り、gyou = cells(2, 5) と指定し、変数gyouの中に行数を読み込みます。


次に、2本の移動平均線の現在値と直前値の4つの値を変数に代入します。

 

変数の名前は何でも良いのですが、ここでは便宜上、下記のように設定します。

5本移動平均線直前値 ma05_b
5本移動平均線現在値 ma05_n
25本移動平均線直前値 ma25_b
25本移動平均線現在値 ma25_n

これらの変数にそれぞれの値を代入します。
各データが書き込まれている列数はわかっていますし、行数は変数gyouに代入されています。
直前値の行数については、「gyou -1」で指定することが可能ですので、それぞれの値は下記のようになります。(5日移動平均の列数は7、25日移動平均の列数は8)

ma05_b = Cells( gyou -1 , 7)
ma05_n = Cells( gyou , 7 )
ma25_b = cells( gyou -1 , 8)
ma25_n = cells( gyou , 8)

最後に、現在のレートを変数に代入します。

現在のレートは、Cells(2, 2)にありますので、それを変数に代入します。

但し、「Sub Kakikomi()」を作成した際にも記載しましたが、読み込まれているレートは文字列として扱われていますので、その内容を数値に変更して代入します。コードは下記のようになります。

r_now = Val(Cells(2, 2))

 

 

これで変数の設定が完了しました。

 

 

自動売買システムの作り方トップページへ

次のページ:自動売買システムに売買ルールの判断を行わせる