読者です 読者をやめる 読者になる 読者になる

マネー報道 MoneyReport

マネーにまつわる報道を取り上げ、自分の切り口で切り取り、噛み砕いてお伝えします。

MT4のEA動作エラー「133」と「4109」のエラーコードから原因を追う!

スポンサーリンク
あとで読む

MT4でEA初動作!

FXの自動売買をすべくMT4をインストールし、海外FX業者のデモ口座を開いて実際に使い始めました!
購入したEAをいざMT4にインストールして稼働!

結果は・・・Open Error Code : 133

あれれ(-_-;
前回記事を振り返っておくと・・・

EAは稼働し、自動売買がスタートしました!
どんな塩梅かみてみましょう!


あれ?
ターミナルの「エキスパート」タブを開くとエラーコードを吐いていますね、ZigzagBreakoutが(^o^;
Open Error Code : 133
ってなんなんでしょうね!?
駄目だ分かんない(>_<)


ついでに操作履歴も見てみると・・・
failed [Trade is disabled]
の文字が(^o^;
あ、でもこれは普通なのかな?
「Trade is disabled」という事は、Tickデータが来てEA動かしてみたけど、条件に合致しなかったから「取引不成立」みたいな意味かと(^-^)v
いずれにしても、もう少しきちんと勉強しないとMT4でEAを動かして自動売買なんて出来ませんね(^-^;


MT4にEAを導入してみよう!FXの自動売買プログラムの導入! - マネー報道 MoneyReport

という感じでEAをうまく動かせず(;_;)

EAを購入させて頂いたid:emijaさんに教えを請うと・・・

id:emijaさん
エラー MT4 とかでググればエラーコードの意味がわかったりします。で、トレード無効化・・・うーん?有効にしてあるっぽいですけどね。ググってみたら取引時間外の場合に出るみたいですけど。今もまだ動いてません?

「エラー MT4」とかでググレカスとの事(ToT)
133エラーはトレード無効化?それとも取引時間外?
んー、一応平日(火曜日)の夕方に試したので取引時間内だと思うんですけどね~。
海外FX業者とはいえ、FXは平日は24時間トレード出来ますしねぇ(^-^;

という訳で自分でもググってみようと思います(^^)/

エラーコード133

「MT4 EA 133 エラー」みたいなキーワードでGoogle先生に聞いてみました。
色んなサイトを見た中で、下記のサイトがエラーコードについては充実していました(^-^)v

Error codes (エラーコード)
GetLastError()関数によって返されるコード。
エラーコードはstderror.mqhファイルによって定義されている。
エラーメッセージを出力させたい時は、ErrorDescription()関数が定義されているstdlib.mqhファイルを使う。


mt4 (MetaTrader4)使い倒シストレError codes (エラーコード)

との事で、MT4が吐き出すMQL4のエラーコード一覧を転載させて頂きます。

【MT4エラーコード一覧】

定数 説明
ERR_NO_ERROR 0 エラーなし
ERR_NO_RESULT 1 エラーは無いが、結果は未知
ERR_COMMON_ERROR 2 共通エラー
ERR_INVALID_TRADE_PARAMETERS 3 無効なトレード変数
ERR_SERVER_BUSY 4 トレードサーバがビジー状態
ERR_OLD_VERSION 5 クライアント端末が古いバージョン
ERR_NO_CONNECTION 6 トレードサーバと接続できない
ERR_NOT_ENOUGH_RIGHTS 7 権限が無い
ERR_TOO_FREQUENT_REQUESTS 8 要求が多すぎる
ERR_MALFUNCTIONAL_TRADE 9 不適合な関数によってトレードがなされた
ERR_ACCOUNT_DISABLED 64 アカウント無効化
ERR_INVALID_ACCOUNT 65 無効なアカウント
ERR_TRADE_TIMEOUT 128 トレード時間切れ
ERR_INVALID_PRICE 129 無効な価格値
ERR_INVALID_STOPS 130 無効なストップ値
ERR_INVALID_TRADE_VOLUME 131 無効なロット数
ERR_MARKET_CLOSED 132 市場が閉じている
ERR_TRADE_DISABLED 133 トレード無効化
ERR_NOT_ENOUGH_MONEY 134 資金不足
ERR_PRICE_CHANGED 135 価格値変更
ERR_OFF_QUOTES 136 相場価格から離れている
ERR_BROKER_BUSY 137 仲介側がビジー状態
ERR_REQUOTE 138 再見積り
ERR_ORDER_LOCKED 139 注文がロックされた
ERR_LONG_POSITIONS_ONLY_ALLOWED 140 買いポジションだけ有効
ERR_TOO_MANY_REQUESTS 141 要求が多すぎる
ERR_TRADE_MODIFY_DENIED 145 市場が閉じている為、変更できない
ERR_TRADE_CONTEXT_BUSY 146 トレード状況がビジー状態
ERR_TRADE_EXPIRATION_DENIED 147 仲介側の契約が終了している
ERR_TRADE_TOO_MANY_ORDERS 148 オーダー数が仲介側の限度を超えている
ERR_NO_MQLERROR 4000 エラーなし
ERR_WRONG_FUNCTION_POINTER 4001 不正な関数ポインタ
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 配列のサイズを超えたインデックス
ERR_NO_MEMORY_FOR_CALL_STACK 4003 関数呼び出しのスタックメモリが無い
ERR_RECURSIVE_STACK_OVERFLOW 4004 再帰的スタックオーバーフロー
ERR_NOT_ENOUGH_STACK_FOR_PARAM 4005 変数のためのスタックメモリが十分ではない
ERR_NO_MEMORY_FOR_PARAM_STRING 4006 文字列変数のメモリが無い
ERR_NO_MEMORY_FOR_TEMP_STRING 4007 一時文字列のメモリが無い
ERR_NOT_INITIALIZED_STRING 4008 初期化されていない文字列
ERR_NOT_INITIALIZED_ARRAYSTRING 4009 配列中の初期化されていない文字列
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 文字列配列用のメモリが無い
ERR_TOO_LONG_STRING 4011 長すぎる文字列
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 0で割った余り
ERR_ZERO_DIVIDE 4013 0での除算
ERR_UNKNOWN_COMMAND 4014 未知の命令
ERR_WRONG_JUMP 4015 不正な変化 (エラーは生成されていない)
ERR_NOT_INITIALIZED_ARRAY 4016 配列が初期化されていない
ERR_DLL_CALLS_NOT_ALLOWED 4017 DLLの呼び出しが許可されていない
ERR_CANNOT_LOAD_LIBRARY 4018 ライブラリが読み込めない
ERR_CANNOT_CALL_FUNCTION 4019 関数が呼び出せない
ERR_EXTERNAL_CALLS_NOT_ALLOWED 4020 エキスパート関数の呼び出しが許可されていない
ERR_NO_MEMORY_FOR_RETURNED_STR 4021 関数からの返り値である一時文字列用のメモリが不足している
ERR_SYSTEM_BUSY 4022 システムがビジー状態 (エラーは生成されていない)
ERR_INVALID_FUNCTION_PARAMSCNT 4050 関数への引数が無効と見なされた
ERR_INVALID_FUNCTION_PARAMVALUE 4051 関数への引数値が無効
ERR_STRING_FUNCTION_INTERNAL 4052 文字列関数の内部エラー
ERR_SOME_ARRAY_ERROR 4053 エラーのある配列がある
ERR_INCORRECT_SERIESARRAY_USING 4054 正しくない系統配列が使われている
ERR_CUSTOM_INDICATOR_ERROR 4055 カスタムインジケータエラー
ERR_INCOMPATIBLE_ARRAYS 4056 配列の相互性がない
ERR_GLOBAL_VARIABLES_PROCESSING 4057 グローバル変数の処理エラー
ERR_GLOBAL_VARIABLE_NOT_FOUND 4058 グローバル変数が見つからない
ERR_FUNC_NOT_ALLOWED_IN_TESTING 4059 テストモードで使えない関数を使った
ERR_FUNCTION_NOT_CONFIRMED 4060 関数が確認できない
ERR_SEND_MAIL_ERROR 4061 メール送信エラー
ERR_STRING_PARAMETER_EXPECTED 4062 文字列変数を要求している
ERR_INTEGER_PARAMETER_EXPECTED 4063 整数変数を要求している
ERR_DOUBLE_PARAMETER_EXPECTED 4064 浮動小数変数を要求している
ERR_ARRAY_AS_PARAMETER_EXPECTED 4065 配列型変数を要求している
ERR_HISTORY_WILL_UPDATED 4066 更新状態から過去データを要求された
ERR_TRADE_ERROR 4067 トレード関数においてエラーが生じた
ERR_END_OF_FILE 4099 ファイルの終端
ERR_SOME_FILE_ERROR 4100 ファイルエラーがある
ERR_WRONG_FILE_NAME 4101 不正なファイル名
ERR_TOO_MANY_OPENED_FILES 4102 ファイルを開きすぎ
ERR_CANNOT_OPEN_FILE 4103 ファイルが開けない
ERR_INCOMPATIBLE_FILEACCESS 4104 ファイルアクセスに相互性がない
ERR_NO_ORDER_SELECTED 4105 注文が選択されていない
ERR_UNKNOWN_SYMBOL 4106 未知の通貨
ERR_INVALID_PRICE_PARAM 4107 不正な価格値
ERR_INVALID_TICKET 4108 不正なチケット
ERR_TRADE_NOT_ALLOWED 4109 トレードが許可されていない。エキスパートプロパティの"Allow live trading"にチェックを入れることで許可される
ERR_LONGS_NOT_ALLOWED 4110 買い注文が許可されていない。エキスパートプロパティをチェック
ERR_SHORTS_NOT_ALLOWED 4111 売り注文が許可されていない。エキスパートプロパティをチェック
ERR_OBJECT_ALREADY_EXISTS 4200 オブジェクトが既に有る
ERR_UNKNOWN_OBJECT_PROPERTY 4201 未知のオブジェクトプロパティ
ERR_OBJECT_DOES_NOT_EXIST 4202 オブジェクトが存在しない
ERR_UNKNOWN_OBJECT_TYPE 4203 未知のオブジェクト型
ERR_NO_OBJECT_NAME 4204 オブジェクト名がない
ERR_OBJECT_COORDINATES_ERROR 4205 オブジェクトの座標エラー
ERR_NO_SPECIFIED_SUBWINDOW 4206 指定されたウィンドウが無い
ERR_SOME_OBJECT_ERROR 4207 オブジェクト関数内でエラーが起きた

結構ありますねぇ(^-^;

私のMT4の吐き出したエラーコードの確認

エラーコード一覧表が手に入ったので、私のMT4環境で発生したエラーコードをチェックしていきたいと思います(^^)/

本日改めて実行してみるも、やはり133エラーが発生していてダメですね(-_-;;
f:id:MoneyReport:20160602172650j:plain

Logでも追ってみましょう。
「MQL4\Logs」フォルダ内の本日の日付のログを見てみます。
ファイル名は「20160602.log」です。

開いてみると・・・

0	16:07:41.723	Expert ZigZagBreakout EURUSD,H1: loaded successfully
0	16:07:41.723	ZigZagBreakout EURUSD,H1 inputs: Magic=8121570; EAComment=ZigZagBreakout_PF; Slippage=3; UseAutoLots=true; Lots=0.01; Risk=5.0; StopLoss=20; TakeProfit=800; MaxSpread=20.0; StopHour=; WeekEndDayOfWeek=7; WeekEndHour=23; TrailingStop=30.0; TrailingDistance=10.0; ZigzagDepth=12; ZigzagDeviation=5; ZigzagBackstep=3; OrderBuffer=250.0; MinVolume=4000; 
0	16:07:47.349	ZigZagBreakout EURUSD,H1: initialized
3	16:07:54.027	ZigZagBreakout EURUSD,H1: trade operations not allowed by settings
0	16:07:54.027	ZigZagBreakout EURUSD,H1: ZigZagBreakout_PF Open Error Code:4109
0	16:07:55.338	ZigZagBreakout EURUSD,H1: ZigZagBreakout_PF Open Error Code:4109
0	16:07:57.574	Automated trading enabled
0	16:08:01.426	ZigZagBreakout EURUSD,H1: ZigZagBreakout_PF Open Error Code:133
0	16:08:01.782	ZigZagBreakout EURUSD,H1: ZigZagBreakout_PF Open Error Code:133
0	16:08:02.226	ZigZagBreakout EURUSD,H1: ZigZagBreakout_PF Open Error Code:133
0	16:08:02.575	ZigZagBreakout EURUSD,H1: ZigZagBreakout_PF Open Error Code:133
・・・

ふむふむ。
Loadは成功していて、EAの読み込みもOK。
「initialized」もOKで、その次の「trade operations not allowed by settings」で失敗している模様。
その後、「Open Error Code:4109」を吐き続け、自動売買ボタンをONにしたところで「Automated trading enabled」でEA実行
EA実行後は「Open Error Code:133」のエラーを吐き続けるという塩梅ですね(^-^;

前回は133エラーだけかと思っていましたが、改めてログを確認すると4109エラーも発生していた模様(>_<)
エラーコードを確認してみると・・・

定数 説明
ERR_TRADE_DISABLED 133 トレード無効化
ERR_TRADE_NOT_ALLOWED 4109 トレードが許可されていない。エキスパートプロパティの"Allow live trading"にチェックを入れることで許可される

133が「トレード無効化」。
4109が「トレードが許可されていない。エキスパートプロパティの"Allow live trading"にチェックを入れることで許可される」。
どちらにしてもトレードが出来ない状況になっているようですね~。
なんで(T_T)?

原因追究

ちょっとエラーコードから見えてくる内容だけでは、はっきりしませんね~(-_-;
何れにしてもトレードが出来ない状況になっているのは間違いないようです。
EAが悪いとかって言うよりは、そもそもトレードが出来る状況になっていないような・・・

ちょっと色々やってみましょう!

自動売買が出来ないのか、そもそも売買が出来ないのかをチェックしてみたいと思います。
MT4の通貨ペアの上で右クリックし「新規注文」を選んでみます。
f:id:MoneyReport:20160602231935j:plain

「オーダーの発生」画面が現れて、ここで成行注文で買ったり売ったり出来たはずです(数年ぶりのMT4なのでうろ覚え(^^;)。
f:id:MoneyReport:20160602231452j:plain
あれ?
でもチャートはEURUSD(ユーロ/米ドル)を表示していたはずなのに、新規注文で出てきたのはUSDJPY(米ドル/円)ですねぇ・・・。

通貨ペアを選ぼうと「通貨ペア」ドロップダウンリストを開いてみると・・・
f:id:MoneyReport:20160602232618j:plain
な・なんですと!?
通貨ペアが空っぽです(>_<)
なんだ、コレ?
完全に壊れてる様な感じですね~(^-^;

そもそもが、現状注文が出来ない状態になっています。
私のMT4は。
何が悪いんでしょう?

思考を巡らせます・・・

「デモ口座にログイン出来ていないか?」

・・・何度か確認するもAXIORYのデモ口座にはログイン出来ている模様。

「デモ口座の気配値が取得出来ていない?」

・・・気配値が取れていないなら、そもそも通貨ペア欄にTickのリアルタイム売値、買値なんて表示されないでしょうし。

「表示されている気配値が、そもそもデモ口座の物とは違う?」

・・・メニュー「表示」→「通貨ペアリスト」をクリックして、
f:id:MoneyReport:20160602233519j:plain

通貨ペアリストを表示させてみました。
f:id:MoneyReport:20160602233612j:plain
大抵の物は表示されていそう。
左端の「+」マークをクリックしてそれぞれ開いて確認していくと、どうも「ECN Forex」という物だけが1つも表示されていないようです。

試しに「ECN Forex」の中の「EURAUD」(ユーロ/豪ドル)を選んで右上の「表示」ボタンを押して、「閉じる」をしてみると。
f:id:MoneyReport:20160602233813j:plain

メニュー「ファイル」→「新規チャート」で先ほど追加した「ECN Forex」→「EURAUD」を選んでチャートを表示させ、EAを適用し「自動売買」を開始にしてみると・・・
f:id:MoneyReport:20160603000259j:plain
注文キタ━━━━(゚∀゚)━━━━!!
分かりますかね!?
下部のターミナルの「取引」タブ内に新しい注文が表示されました!!!

コレです、コレが見たかったんです!

うまくEAが動かなくて133エラーと4109エラーが出ていたのは、自分が開設したデモ口座とは違う気配値通過ペアを選んでいたから!
というのが原因の様です(^o^;

だって初期表示で「EURUSD」とか普通に気配値に出ていたじゃないですか!
しかも今回はAXIORYのサイトからダウンロードしたMT4を動かしていたので、初期状態で表示されている気配値がAXIORYのデモ口座のものだと早トチリしていたから、なおさら気付くのが遅れました(>_<)
MT4に最初から表示されている気配値はあくまでも何か別の気配値であって、自分の取引先の気配値とは限らないから、きちんと確認して自分のFX口座の気配値だけにしておかないと、間違うぞ、と(^o^;

皆様、MT4を入れてすぐはご注意下さい(-_-;

EA動作させる!

他の通貨ペアも足しましょう!
「EURUSD」や「EURJPN」も追加したいです♪
f:id:MoneyReport:20160602234431j:plain

追加後に「新規注文」を選ぶと通貨ペアも選べるようになり、成行注文で売りや買いが出来るようになりました!
f:id:MoneyReport:20160602235152j:plain

こんな風に「EURUSD」が2つも出るから分かりにくいんですよね(^o^;
f:id:MoneyReport:20160602235252j:plain
私の正しいデモ口座の通貨ペアは「EURUSD_ecn」という上の赤丸の方です。

いざEAを動かしてみた時のログを見ると・・・

0	23:01:56.611	'11024620': pending order buy stop 0.50 EURUSD_ecn at 1.12202 sl: 1.12182 tp: 1.13002
0	23:01:56.981	'11024620': order was opened : #7570916 buy stop 0.50 EURUSD_ecn at 1.12202 sl: 1.12182 tp: 1.13002
0	23:03:27.469	'11024620': delete pending order #7567415 buy stop 0.10 EURUSD_ecn at 1.12202 sl: 1.12102 tp: 1.13002

という感じでエラーが出ていません(^-^)v

ようやくこれでEAが稼働させられる様になりました!
今晩はEAを動かしっぱなしにして、パソコンも起動しっぱなしで放置して自動売買されるか試してみます(^o^)/