見出し画像

リピートトレードプログラム(EA)を作ろう(2)一覧読み込み

メタトレーダーを使ってリピートトレードをするには、それようのプログラム(エキスパートアドバイザー(EA))が必要ですね。
これから数回シリーズで、多段リピートトレードプログラム(EA)を作っていきます。

リピートの価格一覧を読み込むところ

前回は、リピートトレードの全体概要(下図)までを考えました。
いよいよ、エキスパートアドバイザー(EA)を書いていきます。

フローチャート 多段リピートトレード全体の概略

仕掛けのための設定リストを作ろう

リストはCSVファイルで下図のようにシンプルなもの。
ただ、マジックナンバー、指値価格、利食い指値価格、損切り逆指値、ロット数をタブ区切りで並べています。リストの項目名すらありません。

サンプルはテキストエディタで表示していますが、実際はエクセルで作って、テキストエディタにコピへして、タブをコンマに一括置換すると楽で間違いがないと思います。
サンプルのリストは、仕掛けの値幅を等間隔で作っていますが、両端を広くしたり、ロット数を増減したりと自由に設定ができます。

リピートトレード発注リスト

リストをファイルから配列変数に読み込もう

リストができたので、これを配列変数に読み込ましょう。
メタトレーダーでCSVファイルを読み込むには、 FileOpen関数を使用します。

書式は
int handle = FileOpen(ファイル名, FILE_CSV,区切り記号をシングルコーテーションで挟む)
です。

メタトレーダーでは、関数を使用するときに、左側の変数に関数を代入するという感じで使うことが多いですね。変数には処理結果の状態が格納させて、それだけでなくて、ちゃんと関数としての作業もやってくれます。

このときは、ファイルがちゃんとオープンされれば、正の整数*1が入ります。ファイルオーブンに失敗したときには、-1が入ります。この値を確認して、ファイルが正常にオープンできたときと、できなかったときを区別して処理できます。
サンプルプログラムは下のような感じです。

*1 複数のファイルをオープンしたときには、それぞれ別の番号が割り当てられるので、区別して読み出したりできます。もちろん、複数のファイルをオープンするときには変数名も変えて区別できるようにしなきゃです。

メタトレーダーでファイルを配列変数に読み込むサンプルプログラム

このサンプルプログラムでは、handleに-1が入っているとき(ファイルのオープンに失敗したとき)には、あとの処理に引き継ぐためにFile_Err 変数(自分の都合で勝手に作ったものだよ)を1にして、あとは何もせず。
handleに正の数字が入ってて、ファイルがオープンできたときには、forループで配列変数に1行ずつデータを読み込みます。
データの読み込みはFileReadNumber関数を使用します。変数のGyoはCSVファイルの行数を格納しています。

読み込みができたら確認しよう

読み込みができたら確認したいですね。お金に直結するものだから。
なので簡単なチェックプログラムを追加しました。
こんな感じ・・

メタトレーダー 入力した一覧のチェックプログラム

これは買いのトレードの場合ですけど、1つ目のforループで、「仕掛けの買い注文より利食いの注文が高い、損切の逆指値が安い」ことを確認しています。
2つ目のforループでは、「仕掛けの買い注文が価格順に並んでいる」ことを確認しています。

一覧ファイルの置き場に注意

リストのCSVファイルなのですがEAと同じフォルダにおいても反応しません。メタトレーダーで専用のフォルダに置かなければだめなようです。最初はこれで結構悩みました。
EAをおいているExpertsのとなり(兄弟姉妹)のところにFilesというフォルダがあるので、ここに一覧のCSVファイルを置いてください。

メタトレーダー 読み込ませるファイルの置き場

前の記事 全体構想を考えよう

一覧読み込み 次の記事


この記事が気に入ったらサポートをしてみませんか?