12万作品が月額500円(税別)で見放題なのはdTVだけ!! >>dTV(外部リンク)

プログラムとか素人なのですが、独学で勉強してMT4のEAを作成しました。

Strategy Testerではちゃんと動くのですが、いざフォワードテストをと思いデモ口座で試してみたところ、売買のタイミングになってもEAが動いて売買してくれません。

ちなみにバックテストでは、こちらが売買して欲しいタイミングでちゃんと売買してくれるものが出来ました。(結果はダメダメの右肩下がりEAですが・・・)

ブローカーはFXDDとFXCM powered by BTのデモでやってみましたが、どちらでもダメでした。

ちなみにPan Rolling社から出ている「FXメタトレーダー入門」という本に載っているEAをプログラムをそのまま作ってみて試してみましたが、そのEAもデモでは動きませんでした。

ネットで無料で配布してあるような別の人が作ったEAではちゃんとデモ口座で売買してくれるので、私のプログラムの何かが悪いのだと思うのですが、バックテストは出来るけれど、フォワードテストが出来ないというのは何がおかしいと考えられますでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

証券会社にもよるかもしれませんが、ひょっとしたら、デモ口座の有効期限が切れているとか。

この回答への補足

一部のブローカーでは(もしかしたら全部かも?)、OrderSendの時にSL(ストップロス)やTP(テイクプロフィット)を設定するとエントリー出来ない仕様に変更になった事が判明しました。

よって、OrderSendの時はSL・TPともに0で注文を出し、その後OrderModifyでSLとTPを設定しないとダメになったようです。

こちらのブログに詳しく書かれておりました。
http://robowalkfx.seesaa.net/article/121856163.h …

FXCM powered by BTではそれで決まりのようです。
無事デモ口座でトレード出来ました^^

FXDDではまだ時間の関係で試せていません。

回答をくれた方、本当にありがとうございました。
デモ口座の有効期限も改めて調べました。
期限ってあったのですね・・・(今回の件ではまだ私のデモ口座は期限はギリギリ切れていないので、それが原因ではありませんでした。)

補足日時:2009/11/30 15:26
    • good
    • 0

チャートの右上にプログラム名とスマイルマークが表示されていますか?


・プログラム名と×印ならば、ツールバーのExpert Advisors ボタンをクリックしてください。
・プログラム名と笑っていな顔のマークならば、プログラムをチャートにドラッグする時のAllow Live tradingが選択されていません。
・プログラム名とスマイルマークならば、OKです。これで動かないようであればプログラムに起因する別の原因と思われます。

この回答への補足

はい。チャートの右上にプログラム名とスマイルマークがちゃんと表示されていす。

バックテストは出来るけれどフォワードテストが出来ない場合、プログラムのどこがおかしいと考えられますでしょうか?

補足日時:2009/11/28 15:29
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMT4のOrderSendでエラーになります…

以下のように、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);
}

以下のように、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,...続きを読む

Aベストアンサー

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

ANo.2 okw201114です

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

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

QFX:指定した時間の高値・安値を返すプログラムを教えてください。(MT4)

指定した時間の高値・安値を返すプログラムを教えてください。

具体的に言うと、、21時から23時の間の高値・安値です。

少し調べたところ、iHighest,iLowestやiBarSHiftの関数で値を出せると思ったのですが、
この関数では、指定の期間が、”現在から何本前の足から何本分の期間”といったように時刻で指定できないみたいで困っております。

※MT4を使用しております。

Aベストアンサー

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在が23時台であれば、
{
H=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,1)];
L=Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,1)];
}

ちなみに、TimeHour()関数については、以下のサイトで詳しく解説されておりました。

http://jidoubaibai.com/index.html

また、私は、ごく最近MT4の勉強をはじめたばかりで、質問者の方と同様、いろいろ苦労しております。

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在...続きを読む

QMT4で時間を指定するにはどのようにすれば良いでしょうか。

MT4で時間を指定するにはどのようにすれば良いでしょうか。

例えば、取引を日本時間で午前9時から午後3時の間に指定して、午後3時の時点で建て玉があった場合は手仕舞いできるようにしたいのです。

MT4付属EAの、MACD Sampleで時間指定する場合は、どのようなプログラムをどの位置に書けば良いのでしょうか。

時間指定をいろいろ変えてバックテストを行ってみたいと思っています。

プログラムは、トレードスタジアムで少しやった程度ですので、MT4のプログラムは初心者のレベルです。よろしくお願いします。

Aベストアンサー

回答が大変遅くなってごめんなさい。

実は、私も悩んでいました。

MACDのサンプルプログラムを下の方までよく読んでみると、マジックナンバーが16384となっているので、これに統一しなければ決済されません。

よって、私が書いた最初の部分で、

# define MAGIC 0001

という部分を、

# define MAGIC 16384

としていただければ、うまくいくかと思います。

一時やってみてください。


人気Q&Aランキング