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

投稿者: | 2016年6月7日

 

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

 

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

 

 

次に、早速判断を行います。

 

判断は、先に記載したとおり、直前値と現在値の位置関係にてクロスの判断を行いますが、IF文を使用して、条件(前述ゴールデンクロスの条件)を満たした場合は、最初に書込み欄を作った「買サイン」「売サイン」の部分に現在値を入力するように作成します。

 




まずはゴールデンクロス。

IF文にて、5本平均線直前値 < 25本平均線直前値 と 5本平均線現在値 > 25本平均線現在値 の条件をANDで結びます。

If ma05_b < ma25_b And ma05_n > ma25_n Then

上記がIF文の内容になりますが、「ma05_b < ma25_b」で直前の5本平均線と25本平均線にて、5本平均線が小さいかどうか、「ma05_n > ma25_n」で現在の5本平均線と25本平均線にて、5本平均線の方が大きいかどうかの判断となり、それをAndで結んでいます。

IF文ですので、最初の「If」と最後の「Then」はこれまでのレポートでも設定してきたとおりです。

 

 

 

条件を満たした場合は、現在値を現在の行の「買サイン」に書込みますので、内容は「Cells(gyou,9) = r_now」となります。(買サインの書込み列は9列目)

最後に、「End If」を書いてゴールデンクロスの判断は完了です。

 

次に、デッドクロスですが、ゴールデンクロスの逆ですので、直前の5本平均線と25本平均線にて5本平均線が大きく、現在の足では5本平均線の方が小さいという判断になります。
コードは、IF文の不等号を逆にし、現在値を書き込む部分の列数を変更するだけです。

If ma05_b > ma25_b And ma05_n < ma25_n Then
Cells(gyou, 10) = r_now
End If

ここまでで、一応はゴールデンクロス、デッドクロスの判断が可能ですが、実際に動かすとなると、この状態では正常には動きません。

というのも、上記のコードの状態では、買ポジションを持っている時も売りポジションを持っているときも、ゴールデンクロス、デッドクロスの判断が行われ、また、ポジションを保有しているかどうかの書込みも行っていないため、ここでいくつか調整を行っておきます。

まず、これらの判断は移動平均線の値が書き込まれていないと正常に判断されないため、上記ゴールデンクロスとデッドクロスの判断を行う前に、移動平均線が書き込まれているかどうかの判断を行わなくてはなりません。

 

移動平均線の書き込みが始まっているかどうか判断する

判断は、単純に25本移動平均線の直前値が白紙で無いなら判断を行うという風に設定します。

25本移動平均線の値は、8列目に書き込まれ、行数は直前の足を参照するため、「gyou -1」となります。

そのため、コードは、「If Cells(gyou – 1, 8) <> “” Then」という内容になります。(移動平均線5本よりも25本の方が後から書き始まるため、上記一つの判断のみで問題ありません)

このIF文で先述のゴールデンクロス、デッドクロスの判断部分を囲めばOKです。(25本平均線の直前値が変数ma25_bに入っているため、「If ma25_b <> ”” Then」でも問題ありません。)

 

 

 

 

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

次のページ:自作自動売買システムの現在のポジションの有無を確認現在のポジションの有無を確認