スポンサーサイト





上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

まとめて決済する





複数のオーダーをまとめて決済するスクリプトを作ってみましょう。

プログラミング文法と、注文関係の関数の知識を応用します。

まずは、今回必要になる関数を勉強します。
int OrdersTotal( ) : 現在、持っている注文数を返します。取引タブに残っている未決済注文数です。

double OrderClosePrice( ) : 現在、選択されているオーダーの決済価格を返します。注文情報の取得でも出てきましたが、決済注文でこの関数を使う場合、買いポジションを選択したら Bid、売りポジションを選択したら Ask を返してくれます。


では、デモ口座に適当に複数のポジションを作ってください。OrderClosePrice( )関数を試すので、買いと売り両方作ってみましょう。

20110228_1



処理の手順としては、オーダーを選択して決済するのをfor文で繰り返すことになります。

int start()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS);
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), NULL);
}
return(0);
}


オセロのようにオーダーがパタパタ消えていきますね。

上のコードでは、for文を降順でループしています。

int i=OrdersTotal()-1; i>=0; i--

これには理由があって、下のように昇順にするとうまくいかないのです。

int i=0; i<OrdersTotal(); i++

今回の例でいうと、2つのポジションをまとめて決済しようとしても、決済されるのは注文番号 2491708 のみで、注文番号 2491710 は決済されずに残るはずです。

for文を昇順で書くやり方と降順で書くやり方については、移動平均線の描画 (2)でも少し触れました。

なぜうまくいかないのかは、それなりに複雑な問題なので別の記事に書きます。

スポンサーサイト

タグ :

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://metatradermania.blog24.fc2.com/tb.php/54-f8a23a6a
Listed below are links to weblogs that reference
from ど素人のMetaTrader入門
Bookmark
検索フォーム
RSSリンクの表示
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。