*

EAが動かないときのその原因 一覧

公開日: : 初心者EA自作 ,

「EAが動かな~い」というときには様々な原因と可能性がありますが、それらを一個一個解消していかないとEAを稼働させることができません。

今回は利用者によくある原因と、プログラマがやりがちなデバッグミスについてご紹介します。

トレーダーが原因のもの

EAが許可されていない

EAをチャートにセットした際に「EAに自動売買を許可する」というチェックボックスがあるのですが、それが外れているとトレードが始まりません。

チャート右上のニコちゃんマークが笑っていなかったら、これが原因です。

 

MT4の自動売買が許可されていない

MT4の上部のタブの「自動売買」が赤くなっていたら、これが原因です。EAの自動売買の許可には、EAベースのものとMT4ベースのものがあります。

こちらはMT4全体で自動売買を許可/不許可にする設定です。

 

そもそもログインできていない

MT4の右下がInvalid Accountとか回線不通になっている場合は、そもそもログインできていないのでトレードできません。

逆にMT4に慣れている人がうっかりミスるタイプのやつです。

FX業者にアカウントを確認するか、ネット通信が切れていないか確認しましょう。

 

資金が足りてない

Not Enough Moneyってやつです。ライブ口座なら資金を入れるかロットを下げましょう。

デモ口座なら新しく口座を作り直すか、資金を入れましょう。

 

VPSがトレード用じゃない&通信環境が悪い

トレード用のVPSの場合は問題ないですが、それ以外のVPSの場合は「ちょっとくらい回線落ちてもそこまで問題ないよね」ってスタンスのところもあるので、エントリータイミングと回線が落ちているタイミングがバッティングすると、エントリーされないことがあります。

FX業者の無料VPSを使うとか、MetaQuotesのVPS(お試し期間あり)を使うとかすると良いと思います。

ターミナルのジャーナルにログインを繰り返した履歴があればこれです。

 

VPS/パソコンのメモリがいっぱい&フリーズしてる

MT4を同時に大量に起動しているとか、他に重たいソフトを起動しているとか、EAが滅茶苦茶重いとかでなければ、最近のPCでは起こりにくいと思います。

エラーは出ないので、Akabeiメモリチェッカーのような表示ソフトを入れてチェックしてみると良いと思います。


プログラマが原因のもの

注文レートの少数桁数がおかしい

現在ではすべてのFX業者が少数第3桁&5桁のレートを提供していますが、かつては2桁&4桁のFX業者も混在している時代がありました。

USDJPY:110.111で発注すれば問題ないところに、USDJPY:110.1111で発注してしまうためにエラーが発生しているような状態です。

エラー番号は130とかだったかな。

NormalizeDoubleとDigitsで桁を丸めましょう。

セットしているチャート以外のシンボルをトレードする場合は、Digitsの代わりにMarketInfo(“シンボル名”,MODE_DIGITS)を使いましょう。

(トレーダー)ユーザー側ができることはありません。

 

ロットの単位の不備(少数桁数とか)

多くのFX業者は0.01~100ロットを受け付ける業者が多いので、それ以外の数値(0.011とか)はエラーになります。

少数第三桁に数値が入っている場合はもちろんですが、仮想通貨や商品先物や株式CFDなど為替以外のチャートの場合にはロットの最小ロットなどが変わったりするので、出やすいエラーです。

プログラマはエラーになるようなロットを修正するプログラムを書くべきですが…(そこまで頭が回ってないときもあるよね)

このエラーが出た場合、ユーザー側ができることはありません。開発者に相談しましょう。

 

通貨ペアのあとにサフィックスがある

USDJPY.やUSDJPY_mなどのように通貨ペアのあとに文字列がついているFX業者の場合、動かなくなるEAがあります。

これは開発者の考慮不足が原因ですが、トレードする通貨ペアを指定するタイプのEAだと起こりやすい現象です。(通貨相関システムとか通貨強度システムとか)

 

通貨ペアの後ろにサフィックスがないFX業者かアカウントに変更すれば動くようになります。

 

SL/TPをOrderSendと同時に行っている

SL/TP(損切レート/利確レートの予約注文)はOrderSendの関数の引数に指定する箇所がありますが、FX業者によってはOrderModifyでSLTP指定しないとエラーになるところがあります。(最近はあまり見かけませんが…)

 

昔はよくある話だったので、OrderSendでSLTPを0指定しておいて直後にOrderModifyする文化がありましたが、最近は見かけないのでそういうFX業者自体が減ってきているのかもしれませんね。

エラー文にはInvalid StopLossとかって表示されると思います。

対処法としては、OrderModifyでSLTPしましょう、ってことだけです。

 


FX業者が原因のもの

FX業者による約定拒否

こればっかりはどうしようもありません。レートが急激に変動している場合に起こりやすいです。何にも悪くてなくてもFX業者がオーダーを拒否しているということなので、諦めましょう。

ターミナルのジャーナルにエラー(requote)が表示されます。

めっちゃ儲かっている場合、大量オーダーしている場合は拒否されるかもしれません。

 

FX業者のストップレベルが大きい

現在レート近くに予約注文を出すEAの場合、ストップレベルが大きいFX業者だと(XMとか)、オーダーが通らないことがあります。

ストップレベルとは、予約注文を発注する際の現在レートからの最小幅のことです。

要するに、現在レートから近すぎるレートには予約注文が出せないように制限がかかっているってことです。

ストップレベルが小さいFX業者に移れば動くと思います。

 

スリッページを超えたスリップ

レート変動が激しい場合は、EAが内部で指定したスリッページ(最大許容スリップ)を超えてしまう場合があります。大抵は3point~30pointに設定しているEAが多いので、エントリータイミングなのにエントリーしなかったら、これが原因の可能性があります。

スリッページを変更できるEAの場合は少し広めに設定しなおしてみてください。

また、この場合エラー表示はないので、これが原因であると特定するのが困難ですが、確率としては比較的高い部類の原因です。

 

FX業者の一時的サーバーダウン

あんまりこの業界では聞いたことないですね。(隠したり、なかったことにしますからね) ただ、稀にMT4が回線不通になったりログインとログアウトを繰り返すのはこれが原因の可能性があります。

通信ができていない場合、ユーザー側のネットワークに不備があるか、FX業者側に不備があるか、どちらかになりますが、

FX業者以外にアクセスできている場合は、FX業者が原因だと考えられます。

 

MT4のエラー一覧

検索すればいくらでも出てくるんですけどね、一応…

定数説明
ERR_NO_ERROR0エラーなし
ERR_NO_RESULT1エラーは無いが、結果は未知
ERR_COMMON_ERROR2共通エラー
ERR_INVALID_TRADE_PARAMETERS3無効なトレード変数
ERR_SERVER_BUSY4トレードサーバーがビジー状態
ERR_OLD_VERSION5クライアント端末が古いバージョン
ERR_NO_CONNECTION6トレードサーバーと接続できない
ERR_NOT_ENOUGH_RIGHTS7権限が無い
ERR_TOO_FREQUENT_REQUESTS8要求が多すぎる
ERR_MALFUNCTIONAL_TRADE9不適合な関数によってトレードがなされた
ERR_ACCOUNT_DISABLED64アカウント無効化
ERR_INVALID_ACCOUNT65無効なアカウント
ERR_TRADE_TIMEOUT128トレード時間切れ
ERR_INVALID_PRICE129無効な価格値
ERR_INVALID_STOPS130無効なストップ値
ERR_INVALID_TRADE_VOLUME131無効なロット数
ERR_MARKET_CLOSED132市場が閉じている
ERR_TRADE_DISABLED133トレード無効化
ERR_NOT_ENOUGH_MONEY134資金不足
ERR_PRICE_CHANGED135価格値変更
ERR_OFF_QUOTES136相場価格から離れている
ERR_BROKER_BUSY137仲介側がビジー状態
ERR_REQUOTE138再見積り
ERR_ORDER_LOCKED139注文がロックされた
ERR_LONG_POSITIONS_ONLY_ALLOWED140買いポジションだけ有効
ERR_TOO_MANY_REQUESTS141要求が多すぎる
ERR_TRADE_MODIFY_DENIED145市場が閉じている為、変更できない
ERR_TRADE_CONTEXT_BUSY146トレード状況がビジー状態
ERR_TRADE_EXPIRATION_DENIED147仲介側の契約が終了している
ERR_TRADE_TOO_MANY_ORDERS148オーダー数が仲介側の限度を超えている

MQL4の実行エラー

定数説明
ERR_NO_MQLERROR4000エラーなし
ERR_WRONG_FUNCTION_POINTER4001不正な関数ポインタ
ERR_ARRAY_INDEX_OUT_OF_RANGE4002配列のサイズを超えたインデックス
ERR_NO_MEMORY_FOR_CALL_STACK4003関数呼び出しのスタックメモリが無い
ERR_RECURSIVE_STACK_OVERFLOW4004再帰的スタックオーバーフロー
ERR_NOT_ENOUGH_STACK_FOR_PARAM4005変数のためのスタックメモリが十分ではない
ERR_NO_MEMORY_FOR_PARAM_STRING4006文字列変数のメモリが無い
ERR_NO_MEMORY_FOR_TEMP_STRING4007一時文字列のメモリが無い
ERR_NOT_INITIALIZED_STRING4008初期化されていない文字列
ERR_NOT_INITIALIZED_ARRAYSTRING4009配列中の初期化されていない文字列
ERR_NO_MEMORY_FOR_ARRAYSTRING4010文字列配列用のメモリが無い
ERR_TOO_LONG_STRING4011長すぎる文字列
ERR_REMAINDER_FROM_ZERO_DIVIDE40120で割った余り
ERR_ZERO_DIVIDE40130での除算
ERR_UNKNOWN_COMMAND4014未知の命令
ERR_WRONG_JUMP4015不正な変化 (エラーは生成されていない)
ERR_NOT_INITIALIZED_ARRAY4016配列が初期化されていない
ERR_DLL_CALLS_NOT_ALLOWED4017DLLの呼び出しが許可されていない
ERR_CANNOT_LOAD_LIBRARY4018ライブラリが読み込めない
ERR_CANNOT_CALL_FUNCTION4019関数が呼び出せない
ERR_EXTERNAL_CALLS_NOT_ALLOWED4020エキスパート関数の呼び出しが許可されていない
ERR_NO_MEMORY_FOR_RETURNED_STR4021関数からの返り値である一時文字列用のメモリが不足している
ERR_SYSTEM_BUSY4022システムがビジー状態 (エラーは生成されていない)
ERR_INVALID_FUNCTION_PARAMSCNT4050関数への引数が無効と見なされた
ERR_INVALID_FUNCTION_PARAMVALUE4051関数への引数値が無効
ERR_STRING_FUNCTION_INTERNAL4052文字列関数の内部エラー
ERR_SOME_ARRAY_ERROR4053エラーのある配列がある
ERR_INCORRECT_SERIESARRAY_USING4054正しくない系統配列が使われている
ERR_CUSTOM_INDICATOR_ERROR4055カスタムインジケーターエラー
ERR_INCOMPATIBLE_ARRAYS4056配列の相互性がない
ERR_GLOBAL_VARIABLES_PROCESSING4057グローバル変数の処理エラー
ERR_GLOBAL_VARIABLE_NOT_FOUND4058グローバル変数が見つからない
ERR_FUNC_NOT_ALLOWED_IN_TESTING4059テストモードで使えない関数を使った
ERR_FUNCTION_NOT_CONFIRMED4060関数が確認できない
ERR_SEND_MAIL_ERROR4061メール送信エラー
ERR_STRING_PARAMETER_EXPECTED4062文字列変数を要求している
ERR_INTEGER_PARAMETER_EXPECTED4063整数変数を要求している
ERR_DOUBLE_PARAMETER_EXPECTED4064浮動小数変数を要求している
ERR_ARRAY_AS_PARAMETER_EXPECTED4065配列型変数を要求している
ERR_HISTORY_WILL_UPDATED4066更新状態から過去データを要求された
ERR_TRADE_ERROR4067トレード関数においてエラーが生じた
ERR_END_OF_FILE4099ファイルの終端
ERR_SOME_FILE_ERROR4100ファイルエラーがある
ERR_WRONG_FILE_NAME4101不正なファイル名
ERR_TOO_MANY_OPENED_FILES4102ファイルを開きすぎ
ERR_CANNOT_OPEN_FILE4103ファイルが開けない
ERR_INCOMPATIBLE_FILEACCESS4104ファイルアクセスに相互性がない
ERR_NO_ORDER_SELECTED4105注文が選択されていない
ERR_UNKNOWN_SYMBOL4106未知の通貨
ERR_INVALID_PRICE_PARAM4107不正な価格値
ERR_INVALID_TICKET4108不正なチケット
ERR_TRADE_NOT_ALLOWED4109トレードが許可されていない。エキスパートプロパティの”Allow live trading”にチェックを入れることで許可される
ERR_LONGS_NOT_ALLOWED4110買い注文が許可されていない。エキスパートプロパティをチェック
ERR_SHORTS_NOT_ALLOWED4111売り注文が許可されていない。エキスパートプロパティをチェック
ERR_OBJECT_ALREADY_EXISTS4200オブジェクトが既に有る
ERR_UNKNOWN_OBJECT_PROPERTY4201未知のオブジェクトプロパティ
ERR_OBJECT_DOES_NOT_EXIST4202オブジェクトが存在しない
ERR_UNKNOWN_OBJECT_TYPE4203未知のオブジェクト型
ERR_NO_OBJECT_NAME4204オブジェクト名がない
ERR_OBJECT_COORDINATES_ERROR4205オブジェクトの座標エラー
ERR_NO_SPECIFIED_SUBWINDOW4206指定されたウィンドウが無い
ERR_SOME_OBJECT_ERROR4207オブジェクト関数内でエラーが起きた

 

 

この投稿は役に立ちましたか? 役に立った 役に立たなかった 1 人中 1 人がこの 投稿 は役に立ったと言っています。

Message

メールアドレスが公開されることはありません。

CAPTCHA


このコメントはWEBに公開されるので、問い合わせ等はメールなどでお願いします。

関連記事

(MQL4)MT4のチャート上にボタンを作るやり方[EA自作]

現在のMT4は比較的いろいろな機能が追加されていて、DLLや拡張ファイルを使わずに、EA単体でボタン

記事を読む

MT4チャート上にバイナリーオプションのようなボタンパネルを作ってみた

注:これは、MT4のチャート上でバイナリーオプションのような操作パネルを表示させているだけで、実際に

記事を読む

ティック更新の最大の時間間隔を調べるEA

EAというのはどうしても演算をティック到達に依存しているので、ティックが長時間到達しないというのは意

記事を読む

テクニカル指標(RSI)を使ったEAの作り方[EA自作]

今回はテクニカル指標によるEAの一つとして、RSIのEAを作ります。 ※実際に稼働させるEAには他

記事を読む

(MQL4)初めてのEA自作のための教科書~実用編~[EA自作]

実用に向けたEAのコーディングについて説明します。本当に1からEAの開発について知りたい方はこちら。

記事を読む

 
  • (↑広告です。このサイトの管理者の運営ではありません)

     


  • 横瀬兼元(ペンネーム)です。

    プロフィール
    商材を買わせようとする偽者がいるらしいのでご注意ください。
    ツイッター始めました(イマサラー)
    https://twitter.com/FxantennaC
    (埋め込みするとページ表示が極端に遅くなるので、リンクでご容赦を)

Translate »
ページトップへ