最近、MetaTrader 4を使っているトレーダーの皆さんから、MA(移動平均)を価格と組み合わせたシステムについての質問をよく耳にします。このシステム自体は新しいものではありませんが、実際に適切にテストするための実装が難しいことに気づきました。また、他のATS(自動取引システム)でもこの機能が必要だと感じています。
具体的には、ポジションの反転を実装できていないのが悩みの種です。現在のプログラムでは、次のような処理が行われています:
例えば:
- ショートポジションの1本目のキャンドル:クローズ価格がMAを上回っている(買いシグナル)
- 2本目のキャンドル:新しいキャンドルのオープン価格でショートポジションをクローズ(ここでロングポジションをオープンすべき)
- 3本目のキャンドル:(ここが問題の部分です)このキャンドルのオープン価格でロングポジションをオープン(2本目のキャンドルではなく)。
このプロセスは、下記の画像で示されています(「BUY」の状況についての説明ですが、「SELL」についても同様です)。

もし、私よりも優れた知識を持つ方がいらっしゃれば、この課題を解決するためにご協力いただけると嬉しいです。可能であれば、添付したコードを修正していただけると大変ありがたいです。また、シンプルなアドバイスも大歓迎です!(ただし、シンプルなアドバイスをコードに変える自信はあまりありませんが…笑)