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を動かして自動売買なんて出来ませんね(^-^;
という感じで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が吐き出す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エラーが発生していてダメですね(-_-;;
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の通貨ペアの上で右クリックし「新規注文」を選んでみます。
「オーダーの発生」画面が現れて、ここで成行注文で買ったり売ったり出来たはずです(数年ぶりのMT4なのでうろ覚え(^^;)。
あれ?
でもチャートはEURUSD(ユーロ/米ドル)を表示していたはずなのに、新規注文で出てきたのはUSDJPY(米ドル/円)ですねぇ・・・。
通貨ペアを選ぼうと「通貨ペア」ドロップダウンリストを開いてみると・・・
な・なんですと!?
通貨ペアが空っぽです(>_<)
なんだ、コレ?
完全に壊れてる様な感じですね~(^-^;
そもそもが、現状注文が出来ない状態になっています。
私のMT4は。
何が悪いんでしょう?
思考を巡らせます・・・
「デモ口座にログイン出来ていないか?」
・・・何度か確認するもAXIORYのデモ口座にはログイン出来ている模様。
「デモ口座の気配値が取得出来ていない?」
・・・気配値が取れていないなら、そもそも通貨ペア欄にTickのリアルタイム売値、買値なんて表示されないでしょうし。
「表示されている気配値が、そもそもデモ口座の物とは違う?」
・・・メニュー「表示」→「通貨ペアリスト」をクリックして、
通貨ペアリストを表示させてみました。
大抵の物は表示されていそう。
左端の「+」マークをクリックしてそれぞれ開いて確認していくと、どうも「ECN Forex」という物だけが1つも表示されていないようです。
試しに「ECN Forex」の中の「EURAUD」(ユーロ/豪ドル)を選んで右上の「表示」ボタンを押して、「閉じる」をしてみると。
メニュー「ファイル」→「新規チャート」で先ほど追加した「ECN Forex」→「EURAUD」を選んでチャートを表示させ、EAを適用し「自動売買」を開始にしてみると・・・
注文キタ━━━━(゚∀゚)━━━━!!
分かりますかね!?
下部のターミナルの「取引」タブ内に新しい注文が表示されました!!!
コレです、コレが見たかったんです!
うまくEAが動かなくて133エラーと4109エラーが出ていたのは、自分が開設したデモ口座とは違う気配値通過ペアを選んでいたから!
というのが原因の様です(^o^;
だって初期表示で「EURUSD」とか普通に気配値に出ていたじゃないですか!
しかも今回はAXIORYのサイトからダウンロードしたMT4を動かしていたので、初期状態で表示されている気配値がAXIORYのデモ口座のものだと早トチリしていたから、なおさら気付くのが遅れました(>_<)
MT4に最初から表示されている気配値はあくまでも何か別の気配値であって、自分の取引先の気配値とは限らないから、きちんと確認して自分のFX口座の気配値だけにしておかないと、間違うぞ、と(^o^;
皆様、MT4を入れてすぐはご注意下さい(-_-;
EA動作させる!
他の通貨ペアも足しましょう!
「EURUSD」や「EURJPN」も追加したいです♪
追加後に「新規注文」を選ぶと通貨ペアも選べるようになり、成行注文で売りや買いが出来るようになりました!
こんな風に「EURUSD」が2つも出るから分かりにくいんですよね(^o^;
私の正しいデモ口座の通貨ペアは「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^)/
連載目次:FX自動売買MT4稼働の軌跡
- MT4の有料EAを入手!これで私もFX専業トレーダーの仲間入りだ!
- FXのMT4稼働環境のVPSは「お名前.com」と「ABLENET」のどっちが良いの?
- MT4こと「メタトレーダー4」のインストール手順 for Windows
- MT4のチャートにテクニカル指標を表示する方法
- MT4にEAを導入してみよう!FXの自動売買プログラムの導入!
MT4のEA動作エラー「133」と「4109」のエラーコードから原因を追う!
- T4のEA自動注文内容を確認してみよう!
- FX自動売買向けに海外FX業者「AXIORY」の口座を開いてみた!
- 春はあけぼの、夏はバックテスト。MT4 EAの憂鬱。
- 初めてのヒストリーデータ取得選び。MT4の1分足から全ての足へ!
- MT4バックテストのやり直し!ヒストリーデータの再取得
- レバレッジ500倍、スプレッド0.0pipsの「TitanFX」に海外FX口座を開いた!
- MT4稼働VPS「ABLENET」を本契約!FX自動売買まで後一歩!
- VPS上にリモートデスクトップでMT4をインストール!FX自動売買まであと一息!
- FXの自動売買を遂に開始!VPS、MT4、EA、海外FX業者の全てが揃った!