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

投稿者: | 2016年6月7日

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

 

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

 

 

次に、ポジションの保有状況を書き込む部分を付け加えておきます。

 

保有状況は、買いなら「1」、売りなら「-1」、保有無しなら「0」を記述します。それぞれ、ゴールデンクロス、デッドクロスの判断が行われた際に最初に作成していただいた「保有」の列に書込みを行います。




既にゴールデンクロスデッドクロスの判断は完成していますので、そのIF文の中に、書込み処理を行うだけです。

 

例えば、ゴールデンクロスの場合は、買いサインの列にレートを書き込んだ後に、「Cells(gyou, 11) = 1」と設定すれば完了です。

 

デッドクロスの部分にもクロスが発生したら-1を入力するようにします。

 

 

 

 

その後、クロスが発生しない場合は、直前の足の保有状況を現在の足にも反映させないといけないため、その部分を追加します。

 

直前の足の状況を現在の足にも書き込む処理は、コードの進行順からクロスの判断の前に挿入して良いのですが、5分足の場合は、同じ行での判断を何度も行うため、クロスが発生している場合に限っては、直前の足の保有状況を書き込む処理を行ってはいけません。

 

つまり、一つの足で何度も上記のコードを実行するので、クロスが発生した場合も直前の足の保有状況を書き込んでしまうと、クロスの発生がなかったことになってしまうためです。

そこで、「クロスの発生がその足であった場合は、直前の足の保有状況の書込みは行わない」という判断が必要になります。

判断自体は、売買サインの書込みがあるか無いかで判断できます。

 

具体的なコードとしては、売買サインが買サインも売サインも白紙の場合は、直前の保有状況を書込み、どちらか一方の書込みがあった場合は、直前の足の保有状況の書込みは行わないという具合に処理します。

 

そのため、IF文で、売買サインのセルが白紙かどうかを判断させます。

 

売買サインの列は、9列目と10列目ですので

If Cells(gyou, 9) = “” And If Cells(gyou, 10) = “” Then

という条件分岐です。

 

この条件を満たした場合(売買サインがどちらも白紙の場合)に直前の足の保有状況を現在の足の保有状況に書き込みます。

直前の足の保有状況は、「Cells(gyou – 1, 11)」、現在の足の保有状況は
「Cells(gyou, 11)」ですので、下記のコードとなります。

Cells(gyou, 11) = Cells(gyou – 1, 11)

このIF文と条件を満たした際の処理をコードの最初(代入式の直下)に挿入します。(下記)

 

最後に、データの書き始めの際は、直前の足のデータが「保有」という表題になっていますので、その部分の回避を行っておきます。

単純に、直前の足の保有状況の列が「保有」だったら0を入力するという処理で問題ございません。

 

コードは「If Cells(gyou – 1, 11) = “保有” Then」となります。

 

この条件をクリアした場合(現在の行が最初の書込み行の場合)は0を入力させます。また、併せて直前の足の保有状況が白紙だった場合も0を入力するようにします。

こちらのコードは、「If Cells(gyou -1, 11) = “” Then」となりますので、この二つの条件と0の書込みを行うコードは下記のようになります。

If Cells(gyou -1, 11) = “保有” Then
Cells(gyou, 11) = 0
End If
If Cells(gyou – 1, 11) = “” Then
Cells(gyou, 11) = 0
End If

これで良いのですが、IF分の場合は、条件と条件を満たした際の処理を1行で書けば、End Ifがいりませんので、それぞれ1行にします。

If Cells(gyou – 1, 11) = “保有” Then Cells(gyou, 11) = 0
If Cells(gyou – 1, 11) = “” Then Cells(gyou, 11) = 0

これをコードに追加します。

追加する場所は、直前の保有状況を現在の足の保有状況列に書き込む処理の直後です。

直前にすると、0を書き込んだあと、直前の足の保有状況の白紙を書き込んでしまうため、白紙が上書きされることになります。

 

 

ここで一つ注意点ですが、一部の方に質問としていただいたのですが、エクセルの上部メニューの「オプション」の「計算方法」のタブにて、計算方法が自動になっていない場合は、レートが自動で変わらないため、ずっと同じ値を書き込んでしまいます。

 

そのため、ずっと同じ値が書き込まれてしまうという方は、上記「オプション」の計算方法を自動にされてください。

 

 

計算方法を自動に変更する(↑)。

 

あとは、更新開始時刻、終了時刻を設定しなおし、開始ボタンをクリックすれば時間の経過とともにデータの書込み、移動平均線の書込み、売買サインの発生までが可能です。

さて、ここまでが今回の内容です。

ちょっと煩雑な部分もありましたが、データの読み込み、移動平均線の計算、売買サインの発生まで正常で出来ていますでしょうか?

今回は、移動平均線のゴールデンクロス、デッドクロスを使用して、売買判断まででしたが、ここで作成したものは、ドテンでサインを発生することになります。今回の内容は一番簡単なドテンで売買サインを発生させますが、今後手仕舞いの判断や、損切りなどを付け加えることも可能です。

但し、それは次回の自動売買に漕ぎ着けるための注文部分を行った後に追加していくことにします。

とりあえずは、次回注文部分を行い、完全自動売買が可能になるようにレポートを重ねたあと、損切りや手仕舞いの部分を考えて生きたいと思います。

 

 

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

次のページ:自動売買システムから取引システムへの注文構築の準備