• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MT4のOrderSendでエラーになります…)

MT4のOrderSendでエラーになる原因とは?

このQ&Aのポイント
  • MT4のOrderSendを使用して新規注文を行うプログラムでエラーが発生しています。
  • エラーコード4055は「カスタムインジケータエラー」を示しており、修正方法を知りたいです。
  • テスト環境はFXDD(デモ口座)のEURJPY(5分足)です。

質問者が選んだベストアンサー

  • ベストアンサー
  • okw201114
  • ベストアンサー率100% (1/1)
回答No.3

ANo.2 okw201114です カスタムインジケータから使われたのでしょうか? お気づきになられて良かったです。 私も、ウェブ上にマニュアルの様なものを見つけ.. エラーコードには「トレード サーバーから返されるエラーコード」と「ランタイムエラー」があると知り.. 関数ごとのエラーコード表で OrderSend は 4055 ~ 4111と「トレード サーバーから返されるエラーコード」があると知り.. エラーコードが 4055 のみの比較的仕様の小さいSleep()関数をみると.. 「Sleep() 関数は、カスタム インディケータから呼び出すことはできません~」とありましたので^^;; やっぱり英語は苦手です;; http://www.metasys-seeker.net/MQL4_Reference_ver1/02-19_ErrorCodes.html <-- エラーコード【Error codes】 http://www.metasys-seeker.net/MQL4_Reference_ver1/04-03_RuntimeErrors.html <-- ランタイムエラー【Runtime errors】 http://www.metasys-seeker.net/MQL4_Reference_ver1/09-10_Sleep.html <-- 実行待機【Sleep】 PC関係だと長年のナントカがありますからw そんな私でもネットなど下調べしてたり、参考もなしで実装はしません。 ぜひそうしてください。 業者によっては デモは 1 ロット指定とか、Modify でしか T/P, S/L 設定できない所もあるらしいのですが.. 自作インジケータを持っているなんてすごいです。私は自作EAのトレードに呆然としてますまだまだですw あとわからないとのことで参考になるかですが ネット検索すると MT4 紹介や、EA/カスタムインジケータの作り方を紹介されているブロブなどがヒットします。 国内の http://jp.forex.com/jp/learn/mt4_expertadvisor.shtml やあたりのリンクを読み倒す。というか国内業者はその辺強いかと。 カスタムインジケータ作成経験がおありならば、その場所の親フォルダの "experts" に MA や MACD を使ったサンプルEAがあるので、 テンプレートに使ったり、Tester したりデモで確認したりする。 MT4エディターで公開されているカスタムインジケータや EA を見つけられる。 カスタムインジケータを EA から使用する場合は iCustom 関数を使います。Tester で遅いらしい..  などなど、ただ鵜呑みようなことは危険だと思います。ハイリスクですよね 楽しかったですw

sheep_777
質問者

お礼

回答ありがとうございます。 マニュアルのSleep関数には、カスタムインジケータから呼び出すことができないことが書いてあるんですね。 OrderSend関数にも書いてあれば、ここまではまらずに済んだかもしれないですね、はぁ…。 なるほど、iCustom関数でカスタムインジケータを使用できるんですね。 この関数は、カスタムインジケータから別のカスタムインジケータを使用する時に、利用したことがあります。 EAからカスタムインジケータを使用するイメージが出来てきました! いろいろとご教示頂きありがとうございました。 回答内容を何度も読み返して、とても勉強になりました。 FXって、なんだか孤独だなぁと感じることもあり、そういう意味でも回答を頂けてとても嬉しかったです。 ブログで毎日デモ口座の負けトレードをアップしてますが、勝ちトレードをアップできるようにEAの勉強を頑張ろうと思います(笑) ありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • okw201114
  • ベストアンサー率100% (1/1)
回答No.2

ANo.1 okw201114です EURJPY(5分足)ですね、80 でエラー(Order Failed #130 invalid stop) 90で OK!! となりました S/L は数十Pips 離すと思うので 80Point(8Pips) でもなんとか、 でも Stop Level は 40 なのですが。 さて OrderSend で エラー ”Order Failed #4055 custom indicator error” となる? <--実はこの辺から意味不明です.. 4055 custom indicator error とは? custom indicator とは 追加または自作インジケータのことですよね? GetLastError() は最後に発生したエラー番号を返す仕様ですが、最後の発生したエラーが 4055 と言う事ですよね? あなたに思い当たる事がないのであれば「システム障害」レベルと思うので、 まったくないのであればシステム障害とお考えになられた方が良いかと思います。

sheep_777
質問者

お礼

回答ありがとうございます。 どうやら、基本的なところから間違えているのではないかと思い始めました。 今まで自分でインジケータを作成し表示させて、それを見て別のデモ口座でトレードしてました。 その自作のインジケータの中で自動発注はできないのか?というところから始まりまして、その自作のインジケータの中でOrderSendを実行してみたのです。 上手く発注されないので、余計な部分をすべて省いて、質問時のサンプルコードになりました。 が…、どうやら、自作のインジケータの中でOrderSendを実行すること自体が間違えなのでは?と。 いろいろ調べたところ、自作のインジケータではなく「Expert Advisors」を作成しなければいけないことが分かってきました。 ただ、自作のインジケータを表示し「Expert Advisors」で自動発注(OrderSend)するにはどうすればよいのかわかりません。 今後、まだまだ勉強しなければいけませんが、とりあえず、道は開けたような気がします。 okw201114さん、ありがとうございました!

すると、全ての回答が全文表示されます。
  • okw201114
  • ベストアンサー率100% (1/1)
回答No.1

自分も勉強中なのでトライしてみました.. 要は MarketInfo(Symbol(), MODE_STOPLEVEL) で離さなければいけない Point が見れます 結果は 40 でよいはずですが 60 までエラーが出て 70 で Ok でした 環境にも依存すると思うのですが? 念のため Point は 0.001 になります。 以下コピベで確認出来ると思います #include <stdlib.mqh> bool EFlg=true; int start() { Comment("MODE_STOPLEVEL=",MarketInfo(Symbol(), MODE_STOPLEVEL), " Point=", Point); if(EFlg) { int EAticket = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-70*Point,Ask+25*Point,"My order #2",16384,0,Green); if(EAticket < 0 ){ int check=GetLastError(); Alert("Order Failed #",check, " ",ErrorDescription(check)); }else Alert("OK!!"); EFlg = false; } return(0); }

sheep_777
質問者

お礼

回答ありがとうございます。 もう、誰も回答してもらえないのではないかと悲しく思っていたところでした! 早速、コピペしてやってみたのですが、結果は改善しませんでした…。 MODE_STOPLEVEL=40 Point=0.001 は、同じでした。 エラーは、以下のように。 Order Failed #4055 custom indicator error 70をさらに100に増やしたり、ロット数を1にしたり、スリッページを30にしたりもしましたが、ダメでした…。 環境の問題なのでしょうか…。 okw201114も、FXDD(デモ口座)のEURJPY(5分足)の環境でテストをされたのでしょうか? 現在も試行錯誤中ですので、また、アドバイスなどがありましたら、よろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A