オリジナルシステムの設定例
-
オリジナルのシグナルを生成するワークブック[originalSystem.xls]を基に、M.trading 自動売買ソフトで自動売買を行うための設定方法を示します。
M.trading システムトレード開発(Excel) を利用せず、自動売買を行う設定例です。
ダウンロード
CSVファイルの設定
証券会社.csv
- 楽天 先物の行の[利用]に「*」を付け設定して下さい。
銘柄.csv
日経225先物の行の、
- [ExcelFileName]を、originalSystem.xls
- [WorksheetName]を、四本値
にします。
M.trading 自動売買(.net)の設定
設定>四本値
- 分足時刻を次の通りに、9:00~11:00,12:30~15:10を対象にします。
9:00* ,60000 9:05 ,5000 9:10 ,5000 9:15 ,5000 9:20 ,5000 9:25 ,5000 9:30 ,5000 9:35 ,5000 9:40 ,5000 9:45 ,5000 9:50 ,5000 9:55 ,5000 10:00 ,5000 10:05 ,5000 10:10 ,5000 10:15 ,5000 10:20 ,5000 10:25 ,5000 10:30 ,5000 10:35 ,5000 10:40 ,5000 10:45 ,5000 10:50 ,5000 10:55 ,5000 11:00 ,60000 12:30* ,60000 12:35 ,5000 12:40 ,5000 12:45 ,5000 12:50 ,5000 12:55 ,5000 13:00 ,5000 13:05 ,5000 13:10 ,5000 13:15 ,5000 13:20 ,5000 13:25 ,5000 13:30 ,5000 13:35 ,5000 13:40 ,5000 13:45 ,5000 13:50 ,5000 13:55 ,5000 14:00 ,5000 14:05 ,5000 14:10 ,5000 14:15 ,5000 14:20 ,5000 14:25 ,5000 14:30 ,5000 14:35 ,5000 14:40 ,5000 14:45 ,5000 14:50 ,5000 14:55 ,5000 15:00 ,5000 15:05 ,5000 15:10 ,60000
- 追加処理時刻は、15:11,0,0
にします。
設定>自動売買
[WorksheetName]が[四本値]のため、ワークシート[四本値]の列・セルを指定します。
- M.trading処理確認列を、1
- 日付列を、3
- 買いシグナルを、>>M2
- 売りシグナルを、>>M3
にします。
ワークシート[四本値][system]
ワークシート[四本値]
M.trading 自動売買ソフトが、ティックデータから四本値を作成し、それが貼り付けられます。
四本値を貼り付けるためには、[日付][時刻][始値][高値][安値][終値]の列と[処理確認列]の、7列が必ず必要です。このワークシートにある[買い判断][売り判断]のセルを、M.trading 自動売買ソフトが読み取り、シグナルに対応する自動売買処理を行います。
シグナルを読み取るためには、[買い判断][売り判断]の列あるいはセルが必ず必要です。
ワークシート[system]
ワークシート[四本値]から四本値を転記し、移動平均によるシグナルを算出します。
[買い判断][売り判断]のセルがあり、シグナルが算出されますが、M.trading 自動売買ソフトが読み取るためには、四本値を貼り付けるワークシート[四本値]にシグナルの数値がなければなりません。従って、ワークシート[四本値]のM2,M3セルに転記します。
ワークブック[originalSystem.xls]では、直近12足をワークシート[system]に転記しシグナルを算出する複雑な処理を行っています。ワークシート[四本値]上でシグナルを算出する方法の方が、後述の時刻のチェックも不要ですので、新しいシステムのワークブックを作成する際には、こちらの方法を検討してみて下さい。
直近12足を転記する方法
直近12足を、ワークシート[四本値]からワークシート[system]に転記する方法です。
VBAを利用すると容易ですが、ここではExcelの関数のみで行う方法を考えます。
- [処理確認列]の1がある最後の行を含めてそれより前の行を11行
- [処理確認列]の1がある最後の行の次の行
この12行を転記します。
- ワークシート[四本値]の [処理確認列]は、A列
- [最大値]の列で、最後の1のある行のセルが、最大値になる。
- ワークシート[system]のD2セルに、その最大値が算出される。
- [四本値行範囲]のD1セルは、ワークシート[四本値]B列での、四本値の始める行~最後の行の範囲
- [行数変更]の数値は、最後の1のある行番号 - 1 となる。
- [行数変更]のD3セルは、C6~I17の数式OFFSETで利用する。
これによって、[再計算]をすると、直近12足の行が転記されます。
[サイン]
移動平均5足と10足とのクロスでサインが算出されます。
IF(AND(J9<=L9,J6>L6),1,
により、
移動平均5足(1足前)<=移動平均10足(1足前) and 移動平均5足>移動平均10足
の時(クロスが発生した時)に、1になります。
移動平均5足(1足前)と移動平均10足(1足前)との位置関係を条件に加えているのは、クロスが発生した時のみ1が発生するようにするためです。
[買い判断]で、1を表示した場合、次に1を表示するまでに5を表示して買い返済を前もって行う必要があります。そうしなければ、買い建玉を複数持つことになるからです。
M.trading システムトレード開発(Excel) のワークシート[A]の[買い判断]は、買い増しにならないように算出されます。
[買い判断][売り判断]
[買い判断]の数式
=IF(L15=FALSE,0, IF(L13="150500",5,IF(K12=-1,5,K12)))
- [時刻チェック]がFALSEの場合は、0
- 15:00台の行が処理対象行なら、5で返済
- サインが-1なら、5で返済
- サインを表示
です。
つまり、[時刻チェック]がTRUEの場合で、サインが1なら、買い判断は1、サインが-1なら、買い判断は5で返済。15:00の足では5返済となります。
ただし、建玉が無くてもサインが-1なら5で返済の自動売買処理が行われるので、この場合はM.trading自動売買ソフトでエラーが発生します。
[売り判断]は、この逆になります。
引け返済
[買い判断][売り判断]の数式
IF(L13="150500",5,
で、15:00台の行が処理対象行の場合(つまり、次の行の時刻が"150500"となる場合)は、
- 買い判断は、5
- 売り判断は、5
となり、返済を行います。
ただし、建玉がなくても、返済が実行されるので、この場合はM.trading自動売買ソフトでエラーが発生します。これを避けるには、VBAを利用して、新規注文・返済をしたことを、ワークシート上に記録にすると良いでしょう。
引け成りにするには、自動売買スクリプトの設定で、15:05以降の返済は After 15:05 の条件を追加して、引け成り返済にすると良いでしょう。
M.trading システムトレード開発(Excel) のワークシート[A]の[買い判断][売り判断]では、建玉が無い場合は返済にならないように算出されます。
処理順序の詳細
- M.trading 自動売買ソフトで、PCの時刻が、13:05過ぎになった場合、13:00~13:04:59のティックを利用して13:00台の四歩値が生成されます。
- この四歩値がワークシート[四本値]に貼り付けられます。
- 再計算を行います。13:00台の行の[処理確認列]のセルは、この段階では1になりません。
- 再計算を行うので、ワークシート[四本値]からワークシート[system]に直近12足(13:00台の行と、それ以前の11行)が転記され、[買い判断][売り判断]が算出されます。
- [買い判断][売り判断]の数値を、M.trading 自動売買ソフトが読み取ります。
- 13:00の時刻の行の[処理確認列]のセルに1が記載されます。
- スクリプトに基づいて自動売買処理が行われます。
時刻のチェック
想定外の時刻に売買を行わないようにするために、時刻のチェックを行います。[時刻チェック]がFALSEなら、
=IF(L15=FALSE,0,
で、[買い判断][売り判断]とも0になります。
日付のチェックは行っていません。
上記の例では、13:00台の行の 次の行13:05の時刻と、次の次13:10の時刻の範囲に、現在時刻があれば、[時刻チェック]はTRUEになります。
M.trading 自動売買ソフトは、13:05過ぎに処理を開始し、13:00台の行が処理対象行になります。従って、現在時刻は13:05過ぎのはずであり、また、次の次の13:10未満のはずでなければならないわけです。
例外
15:10の足では、売買しないように、[時刻チェック]をFALSEにします。
時刻チェックを行う理由
[処理確認列]の最後の1の行の次の行が、再計算が終わった段階では、想定している時刻の分足で無い可能性があるからです。例えば、9:00前にワークブックを開かずに、10:30頃にワークブックを開くとします。すると、最初に行われる自動売買は、9:00の行で算出した[サイン]になります。
ワークシート[四本値]を利用して、例えば、J,K列に買い判断売り判断の列を作成し、その列を利用するのなら、問題はありません。この場合は、自動売買ソフトが時刻のチェックを行います。
しかし、このワークブックは、四本値を転記する作業を再計算時に行っているため、こうした想定外の事態に対処することを考えます。順調に自動売買が行われるのなら、問題を防ぐための処理は必要無いのですが、念のため問題が発生した場合のことを考えて、意図しない売買を行わないように条件を組み込んでおくわけです。


