リピートトレードプログラム(EA)を作ろう(2)一覧読み込み
メタトレーダーを使ってリピートトレードをするには、それようのプログラム(エキスパートアドバイザー(EA))が必要ですね。
これから数回シリーズで、多段リピートトレードプログラム(EA)を作っていきます。
リピートの価格一覧を読み込むところ
前回は、リピートトレードの全体概要(下図)までを考えました。
いよいよ、エキスパートアドバイザー(EA)を書いていきます。
仕掛けのための設定リストを作ろう
リストはCSVファイルで下図のようにシンプルなもの。
ただ、マジックナンバー、指値価格、利食い指値価格、損切り逆指値、ロット数をタブ区切りで並べています。リストの項目名すらありません。
サンプルはテキストエディタで表示していますが、実際はエクセルで作って、テキストエディタにコピへして、タブをコンマに一括置換すると楽で間違いがないと思います。
サンプルのリストは、仕掛けの値幅を等間隔で作っていますが、両端を広くしたり、ロット数を増減したりと自由に設定ができます。
リストをファイルから配列変数に読み込もう
リストができたので、これを配列変数に読み込ましょう。
メタトレーダーでCSVファイルを読み込むには、 FileOpen関数を使用します。
書式は
int handle = FileOpen(ファイル名, FILE_CSV,区切り記号をシングルコーテーションで挟む)
です。
メタトレーダーでは、関数を使用するときに、左側の変数に関数を代入するという感じで使うことが多いですね。変数には処理結果の状態が格納させて、それだけでなくて、ちゃんと関数としての作業もやってくれます。
このときは、ファイルがちゃんとオープンされれば、正の整数*1が入ります。ファイルオーブンに失敗したときには、-1が入ります。この値を確認して、ファイルが正常にオープンできたときと、できなかったときを区別して処理できます。
サンプルプログラムは下のような感じです。
このサンプルプログラムでは、handleに-1が入っているとき(ファイルのオープンに失敗したとき)には、あとの処理に引き継ぐためにFile_Err 変数(自分の都合で勝手に作ったものだよ)を1にして、あとは何もせず。
handleに正の数字が入ってて、ファイルがオープンできたときには、forループで配列変数に1行ずつデータを読み込みます。
データの読み込みはFileReadNumber関数を使用します。変数のGyoはCSVファイルの行数を格納しています。
読み込みができたら確認しよう
読み込みができたら確認したいですね。お金に直結するものだから。
なので簡単なチェックプログラムを追加しました。
こんな感じ・・
これは買いのトレードの場合ですけど、1つ目のforループで、「仕掛けの買い注文より利食いの注文が高い、損切の逆指値が安い」ことを確認しています。
2つ目のforループでは、「仕掛けの買い注文が価格順に並んでいる」ことを確認しています。
一覧ファイルの置き場に注意
リストのCSVファイルなのですがEAと同じフォルダにおいても反応しません。メタトレーダーで専用のフォルダに置かなければだめなようです。最初はこれで結構悩みました。
EAをおいているExpertsのとなり(兄弟姉妹)のところにFilesというフォルダがあるので、ここに一覧のCSVファイルを置いてください。
前の記事 全体構想を考えよう
一覧読み込み 次の記事