2.為替データの読み込み、書込み、4本値。
自動売買システムへの為替4本値の書込。高値・安値の条件分岐
次に、その行での最初の更新の時は、まだデータが書き込まれていない状態で、始値も高値も安値も終値も現在のレートとなりますので、その部分のコードを記入します。
コードは、まず現在の行(行数はnum_1)の2列目、3列目、4列目、5列目に現在のレート(r_now)を書き込むコードです。
「現在の行の2列目」は「Cells(num_1, 2)」ですので、そこに現在のレートを記入します。
Cells(num_1, 2) = r_now
同様に、3列目、4列目、5列目にもr_nowを記入します。
Cells(num_1, 3) = r_now
Cells(num_1, 4) = r_now
Cells(num_1, 5) = r_now
条件分岐によるFXデータの4本値への集計と書き込み
これらの処理は現在の行に書き込みがない場合に行いますので、ここで条件分岐式を入力しておきます。
条件分岐は「If~Else~End If」で行いますが、現在の行に全く書き込みがない場合は、始値を記入するセルにレートが書き込まれていない状態ですので、条件は「その行の始値のセルが白紙ならば」という条件になります。
現在の行の始値のセルは「Cells(num_1, 2)」で白紙は「””」で表します。これらを「If」に続けて条件として記入し、その中にその条件を満たした場合の処理を記入します。
既に処理は記入済みですので、上記の4行の上に
If Cells(num_1, 2)= “” Then
と記入します。
Ifを記入したら、それに対応する「End If」が必要ですので、処理の最後に「End If」を記入するのですが、その前に、条件を満たさなかった場合には、高値と現在値の比較、安値と現在値の比較、終値への現在値の記入の処理を行いますので、そちらを先に記入します。
条件を満たさなかった場合、つまり現在の行の始値が白紙ではなかった場合は、高値、安値の比較、終値の記入という処理が必要です。
まずは、現在記入されている高値と安値を読み込んでおきます。
現在の書き込まれている高値を「r_high」、安値を「r_low」に代入しておきます。
r_high = Cells(num_1, 3)
r_low = Cells(num_1,4)
次に比較ですが、ここでもIfを使用して比較します。現在のレートはr_nowに入っていますので、たとえば、現在値と書き込まれている高値の比較の条件は、「If r_now > r_high Then」となります。
同様に、安値の比較は「If r_now < r_low Then」となります。
それぞれの条件とそれぞれの処理を記入すると、高値、安値の比較、及びその書き込みは下記のコードになります。
If r_now > r_high Then
Cells(num_1, 3) = r_now
End If
If r_now < r_low Then
Cells(num_1, 4) = r_now
End If
上記のコードは、「If r_now > r_high Then」で現在値と書き込まれている高値とを比較し、現在値の方が大きい場合は、現在値を高値の部分に書き込む処理を行うコード、及び、現在値と書き込まれている安値とを比較し、現在値の方が小さい場合は、現在値を安値の部分に書き込む処理を行うコードです。
そして、最後に現在値を終値の部分に書き込みます。この場合は条件分岐の必要はありませんので、直接書き込みます。
Cells(num_1, 5) = r_now
ここまでを記入すると、下記の一連のコードとなります。
ここで、当ページ上部に戻って、上記のコードには条件を満たした場合の処理と満たさなかった場合の処理が記入してあります。条件は、「その行の始値が白紙ならば」というものでした。上記コード内の「条件」の部分です。
この条件を満たしたら、始値~終値に現在値を記入し、満たさなかったら高値、安値の比較と終値への記入を行うコードを書いています。
では、満たした場合の処理と満たさなかった場合の処理の間に「Else」と記入し、それぞれの処理を別のプロセスにします。
最後に、Ifを使用したらそれに対応するEnd Ifが必要ですので、それを記入しましょう。
ここまでで、4本値の記入は完了です。
次は、時間を判断して行を下へ移行していく処理を行います。
次のページ:自動売買システムに書き込む時間足の条件分岐を設定する
ピンバック: エクセルへの書込み・VBAへコードの記入 | 株・為替・FX・N225などの自動売買、自動取引システムの作り方
ピンバック: 取り込んだデータのエクセル自動売買システムへの書込み・VBAへコードの記入 | 自動売買システムを作ってみよう