アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のように、OrderSendで新規注文を行うプログラムを作成してみましたが、GetLastError()でエラー(4055)になってしまいます。
4055は、「カスタムインジケータエラー」とのことですが、どのように修正すればよいのか分かりません。
どうか、ご教示頂きたくよろしくお願い致します。
ちなみに、FXDD(デモ口座)のEURJPY(5分足)でテストしています。

bool EFlg=true;
int start()
{
if(EFlg)
{
EAticket = OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green);
if(EAticket < 0 )
Alert("Order Failed #",GetLastError());
else
Alert("OK!!");

EFlg = false;
}

return(0);
}

A 回答 (3件)

ANo.2 okw201114です



カスタムインジケータから使われたのでしょうか? お気づきになられて良かったです。

私も、ウェブ上にマニュアルの様なものを見つけ..
エラーコードには「トレード サーバーから返されるエラーコード」と「ランタイムエラー」があると知り..
関数ごとのエラーコード表で OrderSend は 4055 ~ 4111と「トレード サーバーから返されるエラーコード」があると知り..
エラーコードが 4055 のみの比較的仕様の小さいSleep()関数をみると..
「Sleep() 関数は、カスタム インディケータから呼び出すことはできません~」とありましたので^^;;
やっぱり英語は苦手です;;

http://www.metasys-seeker.net/MQL4_Reference_ver … <-- エラーコード【Error codes】
http://www.metasys-seeker.net/MQL4_Reference_ver … <-- ランタイムエラー【Runtime errors】
http://www.metasys-seeker.net/MQL4_Reference_ver … <-- 実行待機【Sleep】


PC関係だと長年のナントカがありますからw
そんな私でもネットなど下調べしてたり、参考もなしで実装はしません。
ぜひそうしてください。

業者によっては デモは 1 ロット指定とか、Modify でしか T/P, S/L 設定できない所もあるらしいのですが..



自作インジケータを持っているなんてすごいです。私は自作EAのトレードに呆然としてますまだまだですw


あとわからないとのことで参考になるかですが

ネット検索すると MT4 紹介や、EA/カスタムインジケータの作り方を紹介されているブロブなどがヒットします。

国内の http://jp.forex.com/jp/learn/mt4_expertadvisor.s … やあたりのリンクを読み倒す。というか国内業者はその辺強いかと。

カスタムインジケータ作成経験がおありならば、その場所の親フォルダの "experts" に MA や MACD を使ったサンプルEAがあるので、
テンプレートに使ったり、Tester したりデモで確認したりする。

MT4エディターで公開されているカスタムインジケータや EA を見つけられる。

カスタムインジケータを EA から使用する場合は iCustom 関数を使います。Tester で遅いらしい.. 


などなど、ただ鵜呑みようなことは危険だと思います。ハイリスクですよね

楽しかったですw
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

マニュアルのSleep関数には、カスタムインジケータから呼び出すことができないことが書いてあるんですね。
OrderSend関数にも書いてあれば、ここまではまらずに済んだかもしれないですね、はぁ…。

なるほど、iCustom関数でカスタムインジケータを使用できるんですね。
この関数は、カスタムインジケータから別のカスタムインジケータを使用する時に、利用したことがあります。
EAからカスタムインジケータを使用するイメージが出来てきました!
いろいろとご教示頂きありがとうございました。
回答内容を何度も読み返して、とても勉強になりました。

FXって、なんだか孤独だなぁと感じることもあり、そういう意味でも回答を頂けてとても嬉しかったです。
ブログで毎日デモ口座の負けトレードをアップしてますが、勝ちトレードをアップできるようにEAの勉強を頑張ろうと思います(笑)

ありがとうございました!

お礼日時:2011/07/16 21:27

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 と言う事ですよね?


あなたに思い当たる事がないのであれば「システム障害」レベルと思うので、

まったくないのであればシステム障害とお考えになられた方が良いかと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
どうやら、基本的なところから間違えているのではないかと思い始めました。
今まで自分でインジケータを作成し表示させて、それを見て別のデモ口座でトレードしてました。
その自作のインジケータの中で自動発注はできないのか?というところから始まりまして、その自作のインジケータの中でOrderSendを実行してみたのです。
上手く発注されないので、余計な部分をすべて省いて、質問時のサンプルコードになりました。

が…、どうやら、自作のインジケータの中でOrderSendを実行すること自体が間違えなのでは?と。
いろいろ調べたところ、自作のインジケータではなく「Expert Advisors」を作成しなければいけないことが分かってきました。

ただ、自作のインジケータを表示し「Expert Advisors」で自動発注(OrderSend)するにはどうすればよいのかわかりません。
今後、まだまだ勉強しなければいけませんが、とりあえず、道は開けたような気がします。

okw201114さん、ありがとうございました!

お礼日時:2011/07/16 14:34

自分も勉強中なのでトライしてみました..


要は 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);
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
もう、誰も回答してもらえないのではないかと悲しく思っていたところでした!

早速、コピペしてやってみたのですが、結果は改善しませんでした…。
MODE_STOPLEVEL=40 Point=0.001
は、同じでした。
エラーは、以下のように。
Order Failed #4055 custom indicator error

70をさらに100に増やしたり、ロット数を1にしたり、スリッページを30にしたりもしましたが、ダメでした…。
環境の問題なのでしょうか…。
okw201114も、FXDD(デモ口座)のEURJPY(5分足)の環境でテストをされたのでしょうか?
現在も試行錯誤中ですので、また、アドバイスなどがありましたら、よろしくお願い致します。

お礼日時:2011/07/15 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!