しかしながら、消せないコードがあったり、色々と不都合があることがわかりました。勉強不足ですみません。。。

そこで、方向転換を行います。
MetaEditorで空っぽのテンプレートを一旦作成して、Meta Trader 4 のサンプルEA「Moving Average.mq4」から良いとこ取りをしたいと思います。
まず空っぽのテンプレートを作る上で最も分かり易いサイトは下記でした。
MQL4プログラミングの扉を開けよう
この 「Hello World!」から始めよう」 が参考になります。
これで空っぽのテンプレートが作成できます。
//+------------------------------------------------------------------+
//| test.mq4 |
//| sysfxtry1 |
//| https://github.com/sysfxtry1/ |
//+------------------------------------------------------------------+
#property copyright "sysfxtry1"
#property link "https://github.com/sysfxtry1/"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
ここで用意される関数は下記の3つです。- OnInit
- OnDeinit
- OnTick
int OnInit(), void OnDeinit(const int reason), void OnTick() を理解しよう - MT4 EA開発・運用ブログ
他のサイトでは、MQL4では start 関数、MQL5の場合は OnTick 関数がメインの処理部分となると記載があったりします。
ですが、実際問題 MT4 でOnTickを使っても動作するようです。どうなってるのかは分からないですが・・・
これに下記の3つの関数を加えて構成したいと考えます。
- CheckForOpen
- ポジションのエントリータイミングをチェックする
- CheckForClose
- 各ポジションの決済タイミング(利益確定/損切り)をチェックする
- LotsOptimized
- 発注するポジション数を計算する
- CheckMarketTrend
- 市場のトレンドを判断する
具体的な処理内容については、各関数を作りながら詳しく検討したいと思います。