Dr.EAの正規ブログ。EAの編集方法についての記事を書いています。興味がある方は、是非ご覧下さい。2007年10月14日MT4自動売買入門ここでは、前回までの記事で作成したMetaTrader4のEAをカスタマイズする方法を紹介します。「前回までの記事、まだ見ていないよー」という方は【MetaTrader4のEAの作り方(前編)】から読み進めてください。(期間20)を終値が超えて終えたら、次のローソク足の始めでドテン取引するEAです。今回のEAの改良ポイント次の4つの改良を行います。SL幅とTP幅を設定するパラメーターを追加するエントリーフィルタを追加するMAによる決済をするか否かのパラメーターを追加する移動平均のパラメーターを追加するにゃんたなんだか良くなりそうな気がするにゃ!Dr.EAでは早速。SL幅とTP幅を設定するパラメーターを追加SL幅とTP幅をポイント単位で設定するパラメーターStopLossとTakeProfitを次のように追加します。500;OnTick()関数内で、実数変数slとtpを宣言しておきます。tp;買いエントリーのコードを次のように変更します。clrBlue);slとtpに0を代入しておいて、StopLossが0より大きい場合AskからStopLossポイント下の価格をslに代入。TakeProfitが0より大きい場合AskからTakeProfitポイント上の価格をtpに代入。slとtpをOrderSend()関数のSL/TP設定箇所に入力。売りエントリーのコードも同じように変更します。ままで、SL設定無しということになります。エントリーフィルタを追加するMAが上昇時のみ買いエントリーシグナルを発生させて、MAが下降時のみ売りエントリーシグナルを発生させるようにします。買いエントリーシグナル発生部分を次のようにします。売りエントリーシグナル発生部分を次のようにします。MAが下降なら売りエントリーシグナル発生MAによる決済をするか否かのパラメーターを追加する次のように、MAによる決済をするか否かを真偽型パラメーター変数ExitByMAを追加します。false;決済用シグナルを判定する部分で、次のようにExitByMAがtrueの場合のみ決済シグナルが発生するようにします。売りポジション決済シグナル発生部分を次のようにします。買いポジション決済シグナル発生部分を次のようにします。移動平均のパラメーターを追加する移動平均の期間、表示移動、MAの種類、適用価格をそれぞれ設定するパラメーターを次のように追加します。PRICE_CLOSE;MAの種類のデータ型をENUM_MA_METHODにすることで、パラメーター入力画面で直接入力ではなく、リストから選択する形になります。適用価格のデータ型はENUM_APPLIED_PRICEとします。iMA()関数の括弧内を次のように変更します。2);あとがきEAのパラメーターを増やすことで、取引ロジック設定の幅が広がりました。今回の記事ではEA改良の第一歩という感じでしたが、ぜひご自身のアイデアを取り込んだEAにカスタマイズしてみてください。次回は、EAのパラメーターを最適化する方法を紹介します。PM初めましてシストレを始めようと思い、ネット上で情報を検索してたら、このHPに辿り着きました。簡単に自己紹介しますと、プログラム経験はありますが(一応、SEです)、MQLはまったくの素人です。比較を行ってますが、nowbarの値が確定するのはOrderSend()の後です。nowbarは初期化されてませんので、この比較の結果はどうなるのでしょうか?宜しくお願いします。Barsはtrueとなります。グローバル変数を初期化する場合は、init()関数内で初期値として値を代入するようにしたほうがよいです。(パラメータ変更や稼動時間足変更した際、init()関数は実行されますがグローバル変数は初期化されないため。AM慶事さんご回答ありがとうございました。初期値なし変数が自動で0に初期化されるなんて、MQLは便利ですね。Start()について質問があります。前の章で、Start()は「そのチャートに動きがあったときに、読み取られるプログラムです」とありました。これは、Tick単位で呼び出されると理解してます。値動きが激しいときは、Start()は頻繁に呼び出されると思います。なり、予期せぬ結果を招く恐れがあります。それとも、1回目のStart()処理中に、Tickの変化があっも、1回目のStart()が完了するまでは、2回目のStart()は呼び出されない仕組み(排他制御)になってるのでしょうか?宜しく御願いします。AMこんにちわ^^start()関数についてですが、後者のほうですね。PMいつもMqlいじる時は、参考にさせて頂いております。ありがとうございます。PMはじめまして自分でEAを作成したくて調べていたらここをみつけました。非常にわかりやすくてたすかりました。利益確定されれば、また買いでエントリーするというのを延々と繰り返していきたいのですが、どういうEAにしたらよいか教えていただけませんかよろしくお願いします。PMこんにちわ!egamiさん>TPやSLにせず、EA内部で決済するようにすると編集しやすいかと思います。TP・SLで決済する場合は、ポジションの有無を調べ、保有ポジションがなければ、取引履歴から前回の決済がTPかSLを調べるといった手順がよいかと思います。TPかSLかはOrderComment()で判別可能です。あと、保有中の損益を記録しておいて、決済前の損益がプラスならTP決済・マイナスならSL決済と判断してもよいかもしれません。PMいろいろなサイトがありますが、貴サイトは分かりやすいです。start()に行く前に終了してしまいます。MT4のバックテスターでテストしていますが、プログラムにミスがあるのかテスターの使い方に問題があるのか分かりません。お時間がありましたら、なにかしらご教示いただけたら嬉しいです。PM先ほど質問したものですが、解決しましたのでご報告いたします。PMコメントありがとうございます。前回記事のEAでは、まだ損切りや利確の設定はできません。コメントをキャンセル名前メールアドレス(公開されません)サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。運営者のプロフィール星野慶次EA作成代行「Dr.EA」のメインEAクリエイター。FX自動売買「Dr.EAのブログ」シェアTOPへ。