MT4用EAの作り方を記事にしていきます。前回は、サンプルEA利用の様子を書きました。今回は、発注を判定するプログラミングの考え方について説明しようと思います。今回からは第一弾として、一番シンプルなEAサンプル・プログラムをつかった説明です。今回のブログ記事から使用するサンプルEAは、以下のものを使います。●「1.2移動平均交差システム-1」2つの移動平均線が交差したタイミングで売買します。MT4組み込みテクニカル指標のiMA()関数を使用しています。短い期間(period1)の移動平均が、長い期間(period2)の移動平均を下抜いた、次のバーで売り注文します。・ロット数は、FX業者指定の最小ロット数を使います。・注文方法は「成行き」注文です。・StopLoss/TakeProfitの指定はありません。・決済方法は「ドテン」です。買いポジションの決済とともに、売り注文を行います。【売買タイミングを書く】まずは、売買タイミングのプログラミングです。売買タイミングのサンプル・プログラムを理解すれば、サンプルを修正して、自分だけの売買ルールを実現する事も、簡単になるのではないでしょうか?今回のサンプルEAは、移動平均の短い線が長い線を、上抜いた時に「買い」注文を出します。イメージとしては以下の様になります。(「売り」の場合は逆です)移動平均線の値取得は、MT4に関数(iMA())が用意されていますので、それを使います。「短い期間の移動平均線」が「長い期間の移動平均線」の下にある状態から、上にある状態に変わったら、「買い」注文します。気をつけなければならない点は、発注するタイミングが、ローソク足が完成し、移動平均線が上抜いた事が「確定」してからになる点です。上図で言うと、「1本前のローソク足」(index=1)のローソク足が完成し、次の「今のローソク足」(shift=0)が始まったタイミングでの発注になります。●「shift」について上図で、「shift=0」などの、「shift=n」という表現が出てきます。これは、プログラムを作る際に理解が必要な、概念です。EAは、新しい為替レートを受信するたびに呼び出さます。プログラムでは、新しい為替レートを受信したら、どう動くのか、を書く事になります。この時、2つの移動平均線の上下関係が、2本前では短い線が下にあり、1本前では短い線が上にあった場合に、「買い」注文を出す、というプログラムを書く事になります。この「2本前」とか「1本前」など、「欲しい情報の時間」を指定するときに指定するのが、「shift」です。2本前であれば「shift=2」、1本前であれば「shift=1」、現在であれば「shift=0」を指定します。Framework」を使って発注を判定するには、「EAToOrder」関数内にプログラムを書きます。この関数は、新しい為替レートを受け取る毎に2回呼び出されます。引数の「vIndex」は、上記「shift」に相当し、1回目は「2」、2回目は「1」が渡されます。以下は、サンプル・ソースの抜粋です。発注が必要な条件が整っていればTRUEを返却する。発注する場合は、発注逆指値を指定する。発注する場合は、ロット数を必ず設定する。※※:}次回からは、上記関数内のサンプル・ソースの具体的な発注判定プログラムについて説明しようと思います。無料EAサンプル・ソース集ご質問は、ブログコメント以外にも、以下でお待ちしています。ご不明な点は、お気軽にご質問ください。(Atom)MT4のEAを作成・運用する、製品を使った方法を書きます。コメントを通して、お客様と交流できれば幸いです。