自動売買システムへの相場のデータの自動取り込み(calculationを使用)

投稿者: | 2016年6月7日

2.為替データの読み込み、書込み、4本値。

自動売買システムへの相場のFXデータの自動取り込み(calculationを使用)

 

 

為替データの読み込み・書込みを行います。前回のタスクによる時間制御ではなく、シート上の値が更新された際に自動で計算し、4本値へ記入していく方法です。Worksheets.Calculationを使用します。

 

 

前項までで、データを読み込んで、4本値に集計し、5分毎に時間足を追加していくという動作を、Sub ashi()とSub kakikomi()に記入しています。

 

ここでは、エクセルファイルのセルB2に読み込んでいるFXデータの値が変わったら、4本値の集計や5分足の作成を実行させます。

前項のタスクを使用した15秒毎の書き込みに比べ、値の取りこぼしがない反面、計算やマクロの実行が頻繁に行われますので、注意が必要です。

 

 

Calculationを使用したFXデータの4本値への集計

 

4本値を作成するマクロは、Sub ashi()とSub kakikomi()ですので、エクセルのシートの計算が実行される度に、この2つを呼び出して実行させます。

kakikomi()は、ashi()から呼び出されますので、実際はashi()のみを呼び出します。

 

※calculationを使用してashi()とkakikomi()を呼び出して実行する場合、前項のタスクの作成(Sub Tasc_Bigin()の作成)は不要となります。

 

今回は、データを読み込んでいるエクセルシートの値が変わった場合に実行されるマクロですので、Sheet1のマクロを記入します。

 

 

マクロのプロジェクトエクスプローラー(VBA画面の左側)よりSheet1をダブルクリックします。

 

 

次に、コードウィンドウの上部、上図の1の部分に「Worksheet」、2の部分に「Calculate」をそれぞれ選択します。

 

コードウィンドウには、自動的に下記コードが記入されます。

 

Private Sub Worksheet_Calculate()

End Sub

 

上のコードが、「そのシートが計算されたら」、End Subまでの内容を実行する命令です。

 

ですので、その間に、ashi()を呼び出すコードを記入します。

 

Private Sub Worksheet_Calculate()

Call ashi

End Sub

 

 

上記コードでSheet1が計算されたら(為替のデータが変更されたら)、ashi()を呼び出して実行します。

 

 

実行中の計算は実行しない。

 

実行しますが、実行中でデータが記入されて内容が変更されると、シートが計算されます。

すると、上記コードも再度実行されます。

再度実行されて、シートの内容が少しでも変わると、また上記コードが実行されます。

 

再計算がずっと終わらない、という現象が発生する可能性があるので、上記コードを実行中に発生した計算では、上記コードを実行しないという処理が必要になってきます。

 

 

コードを実行中のイベント(計算の発生など)をキャンセルし、ついでに実行中の自動計算も止めてしまいます。

 

上のコードに下記を追加して、コード実行中のイベントを停止し、計算方法を手動に変更します。

 

Application.EnableEvents = False
Application.Calculation = xlCalculationManual

 

上のコードがイベントの停止、下のコードが計算方法をマニュアルへ変更しています。

 

このコードを追加すると、

 

Private Sub Worksheet_Calculate()

Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Call ashi

End Sub

 

となります。

 

 

そして、ashi()の実行が終わったら、イベントの実行をONにし、計算方法を自動に戻すコードを追加します。

 

 

Private Sub Worksheet_Calculate()

Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Call ashi

Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

End Sub

 

 

 

これで、Sheet1で計算が実行される度に、ashi()が実行されます。

 

 

 

 

 

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

次のページ:移動平均線のFX自動売買プログラムへの書込み準備

自動売買システムへの相場のデータの自動取り込み(calculationを使用)」への2件のフィードバック

  1. ピンバック: 相場のデータの自動取り込み(タスクを使用) | 株・為替・FX・N225などの自動売買、自動取引システムの作り方

  2. ピンバック: 自動売買システムへの相場のデータの自動取り込み(タスクを使用) | 自動売買システムを作ってみよう

コメントは停止中です。