自分好みのEAの雛形(テンプレート)を用意しよう
先日、読者の方から「記事中の関数を使ってみようとしたけど、コンパイルエラーになった」というご指摘をいただきました。
確かに、関数だけを抜き出して使用しちゃうとコンパイルエラーが発生してしまうことがあります。
理由はEA共通のグローバル変数を引数渡しせずに関数内で使っているからなのですが、該当の記事だけではそんなの分からないですよね。
というわけで、EAを作成する際のベースとなるコードを公開します。
といっても別に目新しいものではなく、過去の記事にもちょくちょく登場していますが、独立した1つの記事として残しておきたいと思います。
注意事項として、このベースEAは2016/6/4時点のものであり、今後も進化していくかもしれないということです(他のも同様)。
最新のMQLファイルをダウンロードできる環境を近いうちに構築する予定ですので、それまでは必要なものを各記事から見つけてお使いいただければ幸いです。
//+------------------------------------------------------------------+ //| Sample.mq4 | //| Copyright (c) 2016, りゅーき | //| https://autofx100.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright (c) 2016, りゅーき" #property link "https://autofx100.com/" #property version "1.00" //+------------------------------------------------------------------+ //| ライブラリ | //+------------------------------------------------------------------+ #include <stderror.mqh> #include <stdlib.mqh> #include <WinUser32.mqh> #include <Original/Application.mqh> #include <Original/Basic.mqh> #include <Original/DateAndTime.mqh> #include <Original/LotSizing.mqh> #include <Original/OrderHandle.mqh> #include <Original/OrderReliable.mqh> //+------------------------------------------------------------------+ //| 定数 | //+------------------------------------------------------------------+ // #define //+------------------------------------------------------------------+ //| EAパラメータ設定情報 | //+------------------------------------------------------------------+ extern string Note01 = "=== General =================================================="; extern int MagicNumber = 7777777; extern int SlippagePips = 5; extern string Comments = ""; extern double FixLotSize = 0.01; extern string Note02 = "=== Entry ===================================================="; extern string Note03 = "=== Exit ===================================================="; //+------------------------------------------------------------------+ //| グローバル変数 | //+------------------------------------------------------------------+ // 共通 double gPipsPoint = 0.0; int gSlippage = 0; color gArrowColor[6] = {Blue, Red, Blue, Red, Blue, Red}; //BUY: Blue, SELL: Red //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { gPipsPoint = currencyUnitPerPips(Symbol()); gSlippage = getSlippage(Symbol(), SlippagePips); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { // EAを削除する際に動作させたいロジックを記述 } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // 売買ロジック等を記述 }