dポイントプレゼントキャンペーン実施中!

MT4のEAのプログラムで両建てする事は可能ですが、決済になると売玉しか決済できません。
決済関数が買ポジも売りポジもOrderCloseで決済します。
OrderClose(OrderTicket(),OrderLots(),Bid,SPP,EXcolor1);
で買ポジを決済しようとしましたが、
OrderClose error 138
というエラーになりできません、ちなみに売玉は決済出来ました。
つまり正確に両建ての決済が可能なプログラムの習得が色々試して見ましたが不可能なので、両建てEAのプログラムソースをネット上から探してますが見つけにくく質問させて戴いた次第であります。
両建てEAで正確に買玉も売玉も決済も出来るEAをプログラムするにはどう書けば宜しいのでしょうか?
ご回答宜しくお願いします。

A 回答 (1件)

両建てはやったことはないですが


なぜそうなるかというと
mt4では
両建てで、例え同時に発注したとしても
一つの注文として扱われません。

売りと買いの注文が一つずつ発注された
という扱いになります。

そうなるとポジション毎に固有のチケット番号も当然、売りと買いで別々ですので
同じチケット番号でOrderSelect出来ません。

それが原因で片方だけが決済されるという状況になっているのかと思います。

ではどうすればいいかですが
発注時にOrderSendが戻り値として返してくれる固有のチケット番号を
グローバル変数なり、static変数なり
静的な変数に保存します。
(おすすめはグローバル変数)
そして、そのチケット番号を決済時に利用します。

発注時

saver_TicketNumLP = OrderSend(買い注文);

saver_TicketNumSP = OrderSend(売り注文);

決済時

買い決済
OrderClose(saver_TicketNumLP,‥‥);

売り決済
OrderClose(saver_TicketNumSP,‥‥);

こんな感じでやればうまくいくと思います。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございました。
OrderSelectが記述されてませんでした、OrderSelectにより両建て同時決済ができました。

お礼日時:2016/03/27 11:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!