MT5のOrderSend ERRORについて

2024/02/08 14:04
336

EAつくーるでMT5のEAを作成したのですが、条件を満たして注文が入ると必ず下記のエラーが表示されます。
Alert: [OrderSend Error] : 4014 Function is not allowed for call

実際に注文は入っているのですが、エラーが出るのが気になります。

OrderSend関数は、Tkool.mqhの中に組み込まれている関数を読み込んでいるので
自分で関数を追加したりはしていません。
調べると、このエラーは「関数呼び出しの許可がありません」という内容のようですが、
対応策が分かりません。

ご存じの方、ご教授いただけると幸いです。

コメント

GogoJungle
2024/02/08 17:53

恐れ入りますが原因の切り分けのため、発生している状況について、下記ご教示いただければ幸いです。
もし、リアル口座の場合は、デモ口座、バックテストも発生するかご確認をお願いできればと存じます。

  • リアル口座
  • デモ口座
  • バックテスト

お手数をおかけしますが、何卒よろしくお願い申し上げます。

ごる
2024/02/09 10:09

リアル口座で発生しております。

デモ口座は基本的には使用しません。

バックテストでは発生しません。

実際に注文が入ったあとの処理で発生しているように感じます。
GogojungleさんのソースコードはRetry3回の初期設定になっている為、
このエラーが出たあとにループして同じポジションを3回持ちます。

GogoJungle
2024/02/09 11:14

情報共有ありがとうございます。

恐れ入りますが原因の切り分けのため、追加で質問がございます。
EAつくーる以外の場合は4014のエラーは発生しない状況でしょうか?

差し支えなければ、下記のような情報もご教示いただければ幸いです。

  • ネッティングタイプ
  • ヘッジタイプ

リトライしない状況となりますが、もし、可能でしたら
下記3の値を1に変更の上、ご確認をお願いできればと存じます。

#define RETRY_COUNT 3

ご不便をおかけしますが何卒よろしくお願い申し上げます。

GogoJungle
2024/02/09 15:38

別のエラーでございますが、デモ口座にて同じような事象が再現いたしました。
リトライ回数を1に変更することでエントリーは1回になることを確認済みです。

引き続き調査を行い、状況についてご報告いたします。

ご不便をおかけしますが、何卒よろしくお願い申し上げます。

ごる
2024/02/12 00:00

Retry回数を1にすることで暫定対策出来ることは分かっております。
現状は、Retry回数を1にせず、Ordersend直前にif分でロット数チェックを行い
0の場合だけOrdersendが有効になるように暫定対策しています。

でも余計なことはしたくないので、早急な原因究明と対応策を望みます。

GogoJungle
2024/02/12 15:27

情報共有ありがとうございます。
引き続き調査、改善いたします。

ご不便をおかけしますが、何卒よろしくお願い申し上げます。

GogoJungle
2024/02/16 10:40

引き続き検証をしておりまして、状況のご報告でございます。

同様の現象が発生する会社と発生しない会社があるところまでは、
原因の切り分けができております。

来週を目途に改善いたしますので、お待ちくださいますようお願い申し上げます。

ご不便をおかけしますが何卒よろしくお願い申し上げます。

GogoJungle
2024/02/20 17:19

大変お待たせいたしました。
MT5取引時のエラーにつきまして、改善が完了しましたので下記にご報告いたします。

MT5取引時のエラーを改善しました
https://labo.gogojungle.co.jp/articles/1653

お手数をおかけしますが、何卒よろしくお願い申し上げます。

ごる
2024/10/15 18:34

先日は上記改善対応ありがとうございました。

その後しばらく発生はなかったのですが、再度発生してしまいました。
レイテンシが低い(だいたい50ms以下)では発生がないのですが、
200ms以上だと発生してしまうようです。
レイテンシが影響しているか確実ではないですが、何か知見はお持ちでしょうか?

ちなみに、ordersend errorの4014どのような状態のエラーなのでしょうか?
調べてみると、関数呼び出しの許可がない時に出るエラーのようですが、
いまいちわかりません。

GogoJungle
2024/10/17 17:15

レイテンシが200ms以上のときに発生するという状況から、ネットワーク遅延や通信タイミングが影響している可能性があります。
一般に、4014エラーは関数を利用できないとき(例えば「多重定義された関数を利用しようとしたが、引数の数が間違っており該当する定義がない場合」など)に発生するエラーであり、通信状況が関係していると仮定すると「includeファイルの中に記述してある通信を行う処理に何らかの不具合が生じており、関数の呼び出しができなくなっている」という状態であると考えられます。
ただし、EAつくーるが読み込んでいるデフォルトのファイルは公式が配布しているものであり、調査が難しい状況となっております。
恐れ入りますが、安定した通信環境でのご利用をお願いできればと存じます。

ごる
2024/10/17 21:43

ご返信ありがとうございます。

レイテンシが低い環境下では発生しないと書きましたが、
今朝、レイテンシが1msという状況下で発生しました。
発注コード及びインクルードファイルもEAつくーるにより
作成したEAで発生しているのです。
それで調査が難しいというのはどうなのでしょうか?
![ordersend error.png](ordersend error.png)

GogoJungle
2024/10/18 09:06

発注コード及びインクルードファイルもEAつくーるにより
作成したEAで発生しているのです。

こちらに関してですが、前回の回答の「 公式 が配布している」の部分の説明が誤解を与えるものとなってしまっておりました。大変失礼いたしました。

EAつくーるは、弊社が配布しているTkool.mqhだけでなく、MQL5公式 が配布しているファイルも読み込んで使用しております。(MT5をダウンロードした際に初めから用意されているファイルです。これを「デフォルトのファイル」と呼んでおりました。)

MQL5の4014エラーが出現する状況について調査しましたところ、こちら
https://www.mql5.com/ja/docs/network/socketcreate
のようにネットワーク関数に関わるものしか発見できず、EAつくーるが出力するEA本体のmq5ファイル・Tkool.mqhではこの関数を利用していないため、MQL5公式配布のファイルに原因があると推定し、前回の回答をさせていただきました。この場合は、MQL5公式配布のファイルを更新することで解決する可能性がございます。

しかしながら、レイテンシに関係なく発生する場合は話が変わってきますので、調査を実施したく存じます。
調査のためにはご作成いただいたEAのソースコード(mq5ファイル)を拝見する必要があるのですが、ご提供いただくことは可能でしょうか?

差し支えなければ、弊社公式のメールアドレス
support★gogojungle.co.jp(★を@マークにご変換ください)
宛てに、zipに圧縮したファイルをお送りいただければ幸いでございます。
(送っていただきましたら、こちらのスレッドにてメールのタイトルをお教えください。)

引き続きよろしくお願いいたします。

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。