いう説明だけで分かれば苦労はしないので、もう少し分かりやすくいきましょう。これもよく取り上げられる例ですが、「車」に例えましょう。車の設計図が「クラス」。それを元に実際に作られた車が「インスタンス」です。当たり前ですが、車の設計図だけでは車として乗ることはできません。実際に作られて車という「モノ」になって初めて乗ることができます。設計図の時点では車としての役には立ちません。設計図は何のためにあるのでしょう。設計図は必要ないのでしょうか?もし設計図がなければ、全く同じものは作れないでしょう。作られた1台を元に、何とかそれらしいものを作ることは出来るかもしれませんが、その全ての車が全く同じに作られていて、全く同じ動きをする保障はできないでしょう。何か問題があった時に、解決するのにも大変な労力がかかることは容易に想像できると思います。同じ車の設計図からは、当然同じ車が作られます。同じ設計図から作られていても、作られた2台の車は当然別の「モノ」です。車Aのアクセルを踏んだら、車Bも一緒に動くなんてこともありません。車としての作りや機能は保障しながら、「モノ」としては完全に独立させることができます。運転者はアクセルを踏んだらなぜ車が進むのかを知っている必要はありません。内部的な仕組みを知らなくても、使い方を知っていれば使える、というは大きなメリットです。仕組みがどうなっていて、どのような根拠があって、どのような試験をしてきたか、というのはメーカーが情報を持っていて、必要があれば提供できればそれでよいでしょう。注文クラスに話を戻すと、例えばSendOrder()は「注文をする」という関数ですが、その中では証拠金不足のチェックやトレードが許可されているか等、様々な考慮をしています。使う側にはそのことを一切知らなくても、全て考慮された上で注文することができます。複雑な処理でも使う側はそのことを知らずにシンプルに使える、というようにプログラムを作れるということです。このように、ただ想定どおり動くだけでなく、問題が発見しやすい、後から修正がしやすいなども考えることができると、質の高いプログラムが作れると思います。ものすごーーーく簡単に、色々すっ飛ばして説明したので、興味のある方は「オブジェクト指向」というものを調べてみてください^^;次の回へ「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。インジケータ一覧Twitterもよろしくお願いします。https://twitter.com/mt4programブログランキングにご協力よろしくお願いします。m(._.)mにほんブログ村お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。やってみよう!簡単EA作成5作成した簡単EAのコード説明の後半です。長くなりましたが、これで簡単EA作成は終わります。実際に取引を行うコードを見てみます。}順を追って見ていきましょう。);注文クラスのGetPositionCount()関数を呼んで、保有ポジションがあるかどうかを判断しています。GetPositionCount()関数は名前のとおり保有ポジション数を取得する関数です。ここで、取得した数が0より大きいかというif文のような書き方をしていますが、これはこの条件を満たすかどうかのbool型の値を返すという意味になります。bool型が分からない方はこちらを見てください。)ここで、!(びっくりマーク)が出てきました。これは論理否定演算子、NOT演算子と言い、論理(bool)値を反転させるという意味です。)と同じ意味になります。保有しているポジションがない場合、という条件です。);今度は?(はてなマーク)が出てきました。}と同じ意味になります。実はこの書き方には、「1行で書けるから良い」「いや読みにくいから嫌だ」など賛否ありますが、個人的にはすっきり書けるので好きです。ここでorderCmdに代入している値が、今から行う取引の種類です。OP_BUYが成行買い、OP_SELLが成行売りです。急に取引のプログラムらしくなってきましたね。);注文クラスのSendOrder()関数が、実際に注文を行う命令です。引数は以下のとおりです。種別には以下のものがあります。volume売買ロット。price注文価格(成行き時は現在値を自動設定)。slippage許容スリッページ(Pips単位)。stoplossストップロス(Pips単位)。takeprofit利益確定値(Pips単位)。売買種別と注文価格以外は、入力パラメータとしています。(このEAでは成行注文しかしないので注文価格は固定で0としています)このへんもパラメータになっていたほうが後で調整しやすいので、こうしておくのがよいと思います。!isBuy;買いと売りを交互に行わせるために売買のフラグを反転させています。これも特に意味はありません。);最後が、決済を行う命令です。注文クラスのCloseOrder()関数で決済をします。引数は以下のとおりです。index決済するポジションのインデックス。slippage許容スリッページ(Pips単位)。注文クラスでは、保有ポジションのリストを注文した順に管理しています。1つめの引数には、0から始まるこの順番で、どのポジションを決済するかを指定します。このEAでは必ず1ポジションしか持たないので、固定で0を指定しています。注文クラスにはCloseOrderAll()という全てのポジションを決済する関数もありますので、全決済の場合にはこちらを使っても構いません。いう事で、やっと一通りの説明が終わりました。取引自体は結局はSendOrder()とCloseOrder()を呼ぶだけなので、あとはどういうルールで取引するか、つまりどんな条件でこれらの関数を呼ぶか、という話になります。このEAではその取引ルールが適当で役に立ちませんので、これからはテクニカル指標などを使いながら取引するプログラムを書いていきましょう。次回はひとまず、説明を飛ばしていたクラスとインスタンスについてのお話をしようかなと思います。次の回へ「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。インジケータ一覧Twitterもよろしくお願いします。https://twitter.com/mt4programブログランキングにご協力よろしくお願いします。m(._.)mにほんブログ村お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。★相互リンク募集中★トレードステーションと株・FX自動売買で暮らす茶トラがFX検証中。人気の投稿[MT4プログラミング]MT4のチャート上に矢印を表示する。