StopLevelとは
業者によって、StopLevelなるものが設定されていることがある。
StopLevelとは、StopLoss価格を設定するときに参照される制約である。
StopLevelによる制約に抵触する条件は以下のとおり、
現在の決済レート±StopLevel値幅 ∋ StopLoss価格
※
∋ は以内を意図する
現在の決済レートとは
買いポジションなら決済レートはBIDとなり、
売りポジションなら決済レートはASKとなる。
ポイントは、約定価格ではない、という点。
StopLevel値幅とは
例えばUSDJPYならば、MarketInfo("USDJPY", MODE_STOPLEVEL)で取得された値である。単位はMarketInfo("USDJPY", MODE_POINT)で得られる。
なお、StopLevelは、各通貨ごとに設定されている。
StopLoss価格とは
そのままの意味で、損切り注文の価格である。
補足というかコメント
StopLoss価格は、一般的には損失幅を確定するために約定価格から計算されると思われる。
しかし、MT4のStopLevelにおける制約は、あくまで現在の決済レートを基準に適用される。
このため、約定価格から損失幅を差し引いて得られたStopLoss価格(約定価格-StopLoss幅)とStopLevelの制約範囲(決済レート±StopLevel値幅)は、整合しない。
OrderSendの時点で、StopLossも合わせて設定するのであれば、あまり問題は無いのだろうが、ブローカーごとに処理を分けるよりは、毎回OrderSend、OrderModifyで解決を図ろうとしたところ、この問題に遭遇した。
[0回]
PR