OrderClose関数に標準装備されていました
分割決済の方法の中でMT4には分割決済の仕組みがないと書きましたが、普通にありました…。
ごめんなさい。私が完全に間違っておりました。
なぜこんな盛大な誤解をしていたかはもはや思い出せません。
OrderClose関数の仕様を最近たまたま確認する機会がありまして、引数をよく見てみたら、lotsの文字があるではないですか。
「あれ?何で分割決済できないのにロットの引数があるんだろ?」と思ったのですが、サンプルプログラムを書いてみたら見事に分割決済でき、自分の誤解であったことが判明した次第です。
「昔は無くて最近追加されたのかもなー」なんて自分を擁護しようとしたのですが、大昔に出版されたFXメタトレーダー実践プログラミングにもlotsの文字がありました。無念…orz
OrderCloseで部分決済した場合、残りのポジションのチケット番号は変わってしまうので(古いのは決済されて新しくポジションができるイメージ)、その点は要注意です。
しかし、決済タイミングを分けるという使用方法を考えると、マジックナンバーを分けた方が汎用性が高いので、今後も分割決済の方法を採用することになりそうです。