C#でMT4操作したいから何とかしてくれと言われた話
C#でMT4操作する方法考えてみました
知り合いにいきなりMT4をC#から操作できるようにしてくれ!
と、言われたのでちょっと調べてみました
最初はDLL使ってつないでくれと言われたので、
DLL? c++のDLLなら使えるみたいだけど、もう長い間触ってないからわからん……というかDLL使ったところでどうやって操作するの?
プロセス間通信使う?
あれでも、それ用のオブジェクト作ったとして、MT4側でクラスとかそのまま使えるの???
という感じでいろいろ迷った結果、ソケット通信ならDLLとか無しで使えるっぽいのでソケット通信使うことにしました
MT4側の参考サイト
使ってるのはPythonでしたが、MT4側のソケット通信のやり方だけわかればオッケーなので、こちらのソースを使わせてもらいました
MQLのライブラリ実装のところのソースをヘッダーで保存して、
サーバ用EAの方をEAにして、ヘッダーファイルをインクルード
読んでてもしかしてMT4の方でライブラリファイルみたいなのがあるのかな?と思ったけど、まあヘッダーファイルに保存しても動いたので気にしない
C#側はこっちを参考に
MT4と違ってC#はいくらでも参考サイトがあって楽ちんですね
アドレスはどっちもローカルホストになってるので、ポート番号だけ合わせたらアクセスできる感じです
EAにサーバをやらせるのかc#にサーバをやらせるのか、
どっちがいいのかはわかりませんが、とりあえず好みでC#側をサーバに
後は文字列を送信したときに、その文字列が1だったら買いだったり、2だったら決済だったりと、何をするかをC#側から送信して、MT4側でその文字列に合わせた命令を実行するだけの簡単なお仕事
久しぶりにMQL書いたので、これまた完全に忘れてましたわ
まあしかしソースコピペで動くのはいいけど、仕組みというか本来なら中身もちゃんと理解しないといけないんだけど、まあとりあえず動くからいっか、ってことで
とりあえず参考サイトの備忘録代わりに