【MT4】ブローカー依存の仕様と「困った」挙動まとめ

アイキャッチ画像 お役立ち集
この記事は約7分で読めます。

MT4においては、ブローカー (FX業者) を変えたら「挙動が違う」「バグとも思える動きをする」等で、困った経験がある方はいらっしゃいませんか?

私Canaryも困ったことがある一人です💧

ブローカー依存の困った挙動の例
  • ある程度ポジションが建ったら、それ以上注文が通らなくなった。
  • 約定拒否が発生し、取りこぼしや決済されない事象が起こった。


Canaryが知っている限りで、ブローカーで異なる仕様/挙動/バグ等を本記事にまとめました

「ブローカーを変えたらEAの成績が落ちた」などの要因も、もしかしたらここで発見できるかも!?

スポンサーリンク

【「最大オーダー数制限」の違い】

ブローカーごとの「最大オーダー数制限」の値は?

最大オーダー数制限 について、現在までにCanaryが確認した数値は以下のようになります。

種別ブローカー口座仕様上の値 (※1)実際確認した制限値
国内FXTFMT40 (無制限)200以上 (※2)
FOREX EXCHANGE俺のMT40 (無制限)未確認
OANDA JapanMT4
ベーシック
0 (無制限)未確認
サクソバンクMT40 (無制限)100
海外TradeviewX Leverage200200
XMMT4
micro / zero
200未確認
GemForexMT40 (無制限)30 (※3)
AxioryMT4 nano0 (無制限)未確認
TitanFXMT4 Blade200未確認
AlpariMT4 デモ500100
ブローカー別の「最大オーダー数制限」

上の表で赤字で示しているものが、仕様と実際の挙動が異なるため特に要注意です。

(※1) MT4のAPI「AccountInfoInteger(ACCOUNT_LIMIT_ORDERS)」経由でブローカーから取得した値です。
(※2) 実際に200以上オーダーしても制限が掛からないことを確認済み。
(※3) GemForexの公式サイト情報より。


最大オーダー数制限とは?

最大オーダー数制限 とは、その口座で同時に持つことが可能な「ポジション数 + 待機注文数(※)」の最大値で、プログラム上では AccountInfoInteger(ACCOUNT_LIMIT_ORDERS) で取得できます。
※「待機注文」は、指値または逆指値注文のことです。

Canary
Canary

ポジション数だけでなく、待機注文数も含まれることに注意してね!

この値を超えて新規注文を行うと「148: ERR_TRADE_TOO_MANY_ORDERS」等が返ってきてエラーになります。(エラー種別はブローカーで異なる可能性があります。)

これに関して困るのは、エラーを引き起こすかも知れない重要な数値であるにも関わらず、ほとんどのブローカーが公表していない と言うことです。

  • GemForexは「30個まで」と公表しています。#少なっw!

【参考】仕様と実際が異なる場合の対策方法

Canaryが作成したEA GdTraderでは、以下のような「本当の」最大オーダー数制限値 を返すAPIを作成して対策しています。

/* ------------------------------------------------------------------
 * [Function] GetActualMaxOrderLimit
 * ------------------------------------------------------------------ */
int GetActualMaxOrderLimit() {
  const string serverName = AccountServer();
  if (StringCompare(serverName, "SaxoBank-Live") == 0) { return 100; }
  if (StringCompare(serverName, "Alpari-Demo") == 0) { return 100; }

  return int(AccountInfoInteger(ACCOUNT_LIMIT_ORDERS));
}


力技で全く美しくないですが、こんな対応策しかできないかと。

スポンサーリンク

【「許容スリッページ幅設定」が効くかどうか】

「許容スリッページ幅設定」が効くかどうかは、使用するブローカーによって変わってきます。

Canaryがこれまで確認した限り、許容スリッページ幅設定が効くブローカーは少なそう です。

  • 唯一効くことを確認したのは、海外ブローカーの Alpari だけ。
  • FXTF、サクソバンク、OANDA、XMでは「許容スリッページ幅設定」を設定しても効果せずでした。
Canary
Canary

多くのブローカーで効かない設定って…💧

「許容スリッページ幅設定」とは?

スリッページ (Slippage) は、英語で「滑ること」を意味しています。

Q:スリッページとはなんですか?

A:スリッページとは、ストリーミング注文や逆指値注文を発注する際に生じる、注文を発注したときのレートと、実際に注文が約定するときのレートの差(ズレ)をいいます。

例えば、100.000で発注した注文が100.005で約定した場合、0.5pipsのスリッページが発生したこととなります。

ストリーミング注文では、注文の発注時にスリッページの許容幅を設定することができます。設定したスリッページ幅以内であれば注文が約定しますが、設定幅を超えたスリッページが発生した場合、注文が不成立となります。

※スリッページは、お客様端末と当社システムの間の通信及び、お客様の注文を受け付けた後の当社システムにおける約定処理に要する時間の経過に伴い発生するもので、お客様に有利になる場合もあれば、不利になる場合もあります。

引用元:DMM FX

許容スリッページ幅設定とは、このスリッページをどのくらいまで許容するかを指定するパラメータです。

  • MT4の手動注文では設定できないようですが、プログラム上はパラメータがありますので、EAからは設定が可能です。
  • このパラメータを (ちゃんと効くブローカーで) 設定すれば 不利な方向に滑ることを抑制できる と言うメリットがある反面、約定拒否が発生して取引機会損失 というデメリットも発生し得ますので、注意が必要です。

なお、無料公開中の GdTrader EAは、機会損失を避けることを優先し、許容スリッページ幅は「0」に設定しています。

スポンサーリンク

【「指値が有利な方向にも滑る」かどうか】

指値が有利な方向にも滑るかどうかも、使用するブローカーによって変わってきます。

結果から言いますと、「指値が有利な方向にも滑る」ことを確認できたのは、Alpariだけ でした。

Canary
Canary

一つ前の「許容スリッページ幅設定」と同じ結果だね!


「指値が有利な方向に滑る」とは?

下のキャプチャ画像に示す取引履歴が、実際にAlpariで観測した「有利に滑ったケース」です。

【有利に滑った例】
※左右にスクロール可能です。

上の例では、ロングポジションの新規指値注文を108.4円で待機していたところ、108.397円とそれより低い値 「=有利な値」 で約定しています。

  • 即ちこのケースは 指値が有利な方向に滑った と言えます。
スポンサーリンク

【おわりに】

現時点でCanaryが知ってる限りですが、ブローカーに依存した仕様と「困った」挙動を記載しました。

スプレッドやスワップポイント等、ブローカーが公表している値は比較しやすいですが、今回取り上げた

等は、(取引エラーにつながったり、取引パフォーマンスに影響したりと結構重要であるにも関わらず) ブローカーがWebサイト等で公表していなかったり、注意して見ないと分からないのが怖いところ ですね。

他にもこのようなパラメータはあると思いますので、見つけ次第、本記事はアップデートしていくつもりです。

Canary
Canary

間違いや追記して欲しい内容があれば、下方のコメントまたはTwitterまでご連絡ください! ではでは~




コメント

タイトルとURLをコピーしました