28の通貨ペア、1人のエキスパート。もうひとつ、これは誰も見せたことがないと思うのですが、グレイルです。+ デモアカウント - ページ 12 1...5678910111213 新しいコメント Yurixx 2007.08.13 21:11 #111 Rosh: ご質問の「EURUSDを2007.07.10~2007.07.14の範囲で、別途2007.07.09~2007.07.14の範囲で」検証してみましたが、違いはありません。 私も最新ビルドにアップデートする必要がありました。:-)確かに、時間に関する問題はなくなりましたね、よかったです。しかし、結論から言うと、話はそれだけでは終わらない。 同じ期間でEAを実行したところ、M1とH1/D1のHighとLowの間に差はありませんでした。注 - このテストは、通常の無傷のデータで実行しました。 同期などはしていません。だから、それが不一致の理由であるはずがない。 そこで、念のため別の間隔で試してみることにした(まあ、私の性格が悪いのだが)。そして、それはまだ終わっていないことがわかった。 2007.08.06から 2007.08.11まで、つまり先週までの区間を試してみてください。しかも、比較対象はD1ではなく、H1です。Expert Advisorのテキストには、コメントアウトすべき演算子が4つ、コメントアウトしない演算子が4つあります。未来へのスパイの可能性が証明されたわけでは、ありません。しかし、不具合は存在する。 また、1週間 単位で問題がないとは言い切れないようでしたので、もっと長い間隔、例えば1年とか半年とかでテストを行うべきでしょうか。 Rashid Umarov 2007.08.14 08:41 #112 貴社のSimple Prospection EAのコードを確認しました。残念ながら、完璧ではなかったので、少し直しました。 //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (start) { curHi=NormalizeDouble(Bid,Digits); curLo=NormalizeDouble(Bid,Digits); curM1 = TimeMinute(TimeCurrent()); curH1 = TimeHour(TimeCurrent()); curD1 = TimeDay(TimeCurrent()); start=false; } mm = TimeMinute(TimeCurrent()); hh = TimeHour(TimeCurrent()); dd = TimeDay(TimeCurrent()); if (mm!=curM1) { if (hh!=curH1) { if (dd!=curD1) { Print("Новые сутки наступили"); curHi=NormalizeDouble(Bid,Digits); curLo=NormalizeDouble(Bid,Digits); curD1=dd; } //curHi=NormalizeDouble(Bid,Digits); //curLo=NormalizeDouble(Bid,Digits); curH1=hh; } curM1=mm; } if (NormalizeDouble(Bid,Digits)==0) Print(TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)," Bid=",Bid); if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); //HiH1 = iHigh(NULL,PERIOD_H1,0); //LoH1 = iLow(NULL,PERIOD_H1,0); HiH1 = iHigh(NULL,PERIOD_D1,0); LoH1 = iLow(NULL,PERIOD_D1,0); HiH1 = NormalizeDouble(HiH1,Digits); LoH1 = NormalizeDouble(LoH1,Digits); str = TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); mHi = ", curHi=" + DoubleToStr(curHi,Digits); mLo = ", curLo=" + DoubleToStr(curLo,Digits); hHi = ", HiH1=" + DoubleToStr(HiH1, Digits); hLo = ", LoH1=" + DoubleToStr(LoH1, Digits); if (curLo==0) Print("Curlo=",curLo); if (curHi==0) Print("curHi=",curHi); if (HiH1!=curHi||LoH1!=curLo) { //Print(str,mHi,hHi,mLo,hLo); if (handle>0) FileWrite(handle,TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),curHi,HiH1,curLo,LoH1); } //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { Print("Работа закончена"); if (handle>0) {FileWrite(handle,"записано ",TimeToStr(TimeLocal())); FileClose(handle); } //---- done return(0); } シミュレーションの正しさのチェックがテスト開始直後に始まるのに対して、新しい日が来るという事実は、あなたのコードでは遅すぎる、実際には2日目に修正されています。この非対称性を排除するために、ブール変数startを導入し、テストの開始時にすべてのテスト値を固定するようにした。 if (start) { curHi=NormalizeDouble(Bid,Digits); curLo=NormalizeDouble(Bid,Digits); curM1 = TimeMinute(TimeCurrent()); curH1 = TimeHour(TimeCurrent()); curD1 = TimeDay(TimeCurrent()); start=false; } ご覧の通り、一度だけ動作し、EAにはもう影響を与えません。 さらに、すべてはあなたのアルゴリズムに従って行われます。 もし、一次初期化を行わないのであれば、チェックストリングス if (curLo==0) Print("Curlo=",curLo); if (curHi==0) Print("curHi=",curHi); は値curLo=0を与え、curHiは0に等しくない。説明は簡単で、変数curLoとcurHiは初期化されていないため、両方とも最初は0に等しい。最初のティックでは、条件 if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); がトリガされ、現在のBidが0より大きいため、curHiはすでに0と異なっています。同時に、現在のBidは0以下にはならない(curLoは初期化されていないので0)ので、条件として if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); は、curLoを一切変更することができません。私のバージョンのExpert Advisorを自分で実行し、エラーファイルFu.xlsに1行だけ含まれることを確認します - テスターで最後にシミュレートされた引用符の時間です。 フルコードは投稿に添付されていますが、投稿に収まらないのでダウンロードした方が良いです。 ファイル: simplegprospectionpfixed.mq4 5 kb Yurixx 2007.08.14 09:23 #113 もちろん、Rosh さんの修正には感謝しますが、その必要はなかったと思います。 もしかしたらお気づきでないかもしれませんが、私のコードでは、関数init()の中に次のようなブロックがあります。 curHi=0.0; curLo=1000.0; curD1=-1; curH1=-1; curM1=-1; このブロックの実行の結果、EA の実行開始時にいずれの条件も満たすことができない。 if (mm!=curM1) { if (hh!=curH1) { if (dd!=curD1) したがって、EAが履歴のどこから始まっても、常に新しい分、新しい時間、新しい日になるのです。そして、前述のブロックの最初の演算子の組は、あなたの発言「簡単に説明すると、変数curLoとcurHiは両方とも初期化されていないため、最初は0に等しい」の理由を説明しています。最初のティックのビッドは0より大きく1000より小さいので、対応する両方の条件文が必然的にトリガーされ、変数curLoとcurHiはif(start)ブロック{...}で割り当てたのと同じ初期値を取得します。 あなたのバージョンも同様に機能しますが、アルゴリズムには何ら影響を与えません。そのため、この改変はエラーの有無に影響を及ぼさない。 前回の記事をもう一度ご覧ください。問題は、新しい日に移行するときでもなく、EAの開始時でもなく、t/f H1をテストするときに発生します。この問題は、2007年8月10日に一度だけ発生し、17:00から17:03までの3分間続きます。この間、M1とH1のHigh値の乖離で28ティックが発生しています。適切な写真をお見せしています。 差し支えなければ、私が依頼したその間隔でEA(修正したコード)を実行してみてください。ただ、コメントの使い方を訂正してください。現在、あなたのコードでは、t/f D1と比較され、このモードではエラーは発生しません。H1との比較のために必要です。 Yurixx 2007.08.14 10:23 #114 特に病的なケースでの正しさを保つために、少しコードを変更しました(2007.01.01のM1にはローソクが1本だけ、H1とD1も同じです)。2007.01.01~2007.08.11の期間でテストを行ったところ、D1で4件、H1で2件の誤検出がありました。すべてのエラーは、より高いTFの新しいキャンドルへの 移行時に発生します。自分の目で確かめたい人。 それは、未来を見通す可能性を与えないからです。少なくとも私がチェックしたピーピングバリアントでは。 ファイル: future-2h.mq4 4 kb Rashid Umarov 2007.08.14 10:58 #115 Yurixx: もちろん、Rosh さんの修正には感謝しますが、その必要はなかったと思います。 もしかしたらお気づきでないかもしれませんが、私のコードではinit()関数の中に以下のブロックがあります。 curHi=0.0; curLo=1000.0; curD1=-1; curH1=-1; curM1=-1; 難しいことでなければ、私がお願いした間隔でEA(修正したコード)を動かしてみてください。ただ、コメントの使い方を訂正してください。現在、あなたのコードでは、t/f D1と比較され、このモードではエラーは発生しません。H1との比較のために必要です。 自分でコードを投稿してください。お気づきのように、私のコードをH1でテストすると、値が初期化されません。 if (Period()>PERIOD_M1) { Print("Период тестирования не соответствует задаче"); return(-1); } Print("Период тестирования ",Period()," минут"); FileWrite(handle,"Date","Time","curHi","HiH1","curLo","LoH1"); nn=D'2007.07.12 23:58:59'; FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS), TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn)); nn=D'2007.07.13 00:58:59'; FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS), TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn)); nn=D'2007.07.13 00:02:00'; FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS), TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn)); curHi=0.0; curLo=1000.0; curD1=-1; curH1=-1; curM1=-1; つまり、私が書いたとおりの内容になるのです。私が何のことか推測できないようにコードを並べるのが難しいのなら、あなた自身が理解すればいい、私はテレパシーの練習より他にすることがある。 Yurixx 2007.08.14 12:20 #116 本当に、なぜイライラするのか理解できません。 前ページで結果付きのEAを掲載した時に書きましたが、テスト用です 専ら をM1上に配置しました。同時にそれは、自分自身で生成したHighとLowを、それに応じてH1であったりD1であったりする、より高いt/fのHighとLowを比較する。 start()プロシージャのテキストにコメントを配置する方法です。 正直、init() でreturn(-1); するとEAの動作が止まるので、M1のみ起動できるのではと思ったのです。しかし、今は、先生の投稿のおかげで、どのTFでも動作することを確信しました。 このEAのアイデアは、低いt/f(具体的にはM1)から高いt/f(具体的にはH1またはD1)へ未来をスパイしようとするものです。.したがって、M1でのみ実行する必要があります。H1のテストが何を示すかは、私にもわかりません。 このコードは、M1データとH1データを比較するために直接使用することができます。EAのテキストには、M1データとD1データを比較するために必要な(初歩的な)変更が明確に示されている。だからここでも、何が不満なのかよくわからない。 最後にもうひとつ。あなたのコードは、私のコードと同じようにテスターでの実行に適しています。ただ、それを実行に移すだけなのです。 他にやることがあるなら、邪魔はしませんよ。私は個人的な依頼ではなく、MQの代表として、テスターに何らかの不具合が発見される可能性があることに関連して、あなたに話しかけたのです。 Rashid Umarov 2007.08.14 12:30 #117 Yurixx: 本当に、なぜイライラするのか理解できません。 前ページで結果付きのEAを掲載した時に書きましたが、テスト用です 専ら をM1上に配置しました。同時にそれは、自分自身で生成したHighとLowを、それに応じてH1であったりD1であったりする、より高いt/fのHighとLowを比較する。 start()プロシージャのテキストにコメントを配置する方法です。 正直、 Expert Advisorの動作が止まってしまうので、M1のみ起動できるようにしようと思っていました 。しかし、今は、先生の投稿のおかげで、どのTFでも動作することを確信しました。 このEAのアイデアは、低いt/f(具体的にはM1)から高いt/f(具体的にはH1またはD1)へ未来をスパイしようとするものです。.したがって、M1でのみ実行する必要があります。H1のテストが何を示すかは、私にもわかりません。 このコードは、M1データとH1データを比較するために直接使用することができます。EAのテキストには、M1データとD1データを比較するために必要な(初歩的な)変更が明確に示されている。だからここでも、何が不満なのかよくわからない。 最後にもうひとつ。あなたのコードは、私のコードと同じようにテスターでの実行に適しています。ただ、それを実行に移すだけなのです。 他にやることがあるなら、邪魔はしませんよ。個人的な依頼ではなく、MQの代表としてテスターに何らかの不具合が発見される可能性があることに関連し、あなたに声をかけたのです。 このテストを実行するために、どのような時間枠を使用すべきかがわかりません。コードを介さずに3つのタイムフレームで実行しました。 2007.08.14 16:29:03 2007.08.10 23:59 future-2h EURUSD,Daily:作業終了。 2007.08.14 16:29:03 2007.08.10 23:59 future-2h EURUSD,Daily: 2007.08.10 23:59:59, curHi=1.3693, HiH1=1.3702, curLo=1.3693, LoH1=1.3689. 2007.08.14 16:29:02 2007.08.03 23:59 EURUSD,Daily: 2007.08.03 23:59:59, curHi=1.3773, HiH1=1.3787, curLo=1.3773, LoH1=1.3772. 2007.08.14 16:29:02 2007.07.27 23:59 EURUSD,Daily: 2007.07.27 23:59:59, curHi=1.3635, HiH1=1.3641, curLo=1.3635, LoH1=1.3627。 2007.08.14 16:29:02 2007.07.20 23:59:59 EURUSD,Daily: 2007.07.20 23:59:59, curHi=1.3826, HiH1=1.3827, curLo=1.3826, LoH1=1.3821. 2007.08.14 16:29:01 2007.07.16 23:59:59 EURUSD,Daily: 2007.07.16 23:59:59, curHi=1.3772, HiH1=1.3773, curLo=1.3772, LoH1=1.3772. 2007.08.14 16:29:01 2007.07.13 23:59:59 EURUSD,Daily: 2007.07.13 23:59:59, curHi=1.3782, HiH1=1.3787, curLo=1.3782, LoH1=1.3780。 2007.08.14 16:29:01 2007.07.06 23:59:59 EURUSD,Daily: 2007.07.06 23:59:59, curHi=1.3625, HiH1=1.3630, curLo=1.3625, LoH1=1.3623。 2007.08.14 16:29:01 2007.07.02 00:00 EURUSD,Daily:テスト期間は適切ではありません。 2007.08.14 16:29:01 future-2hテスト開始 2007.08.14 16:28:34 2007.08.10 22:59 future-2h EURUSD,H1: 作業終了しました。 2007.08.14 16:28:32 2007.07.02 00:00 future-2h EURUSD,H1: テスト期間が適切でありません。 2007.08.14 16:28:32 future-2hテスト開始 2007.08.14 16:28:22 2007.08.10 22:59 future-2h EURUSD,M1: 作業終了しました。 2007.08.14 16:28:19 2007.07.02 00:00 future-2h EURUSD,M1:テスト期間1分。 2007.08.14 16:28:19 future-2hのテスト開始 2007.08.14 16:24:28 2007.08.10 22:59 future-2h EURUSD,M1: 作業終了しました。 2007.08.14 16:24:28 2007.08.06 00:00 future-2h EURUSD,M1:テスト期間1分。 Rashid Umarov 2007.08.14 12:34 #118 ここで、 を変更します。 if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); HiH1 = iHigh(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 LoH1 = iLow(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 //HiH1 = iHigh(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 //LoH1 = iLow(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 を 。 else if (hh!=curH1) { //curHi=NormalizeDouble(Bid,Digits); // Закомментировать при тесте D1 //curLo=NormalizeDouble(Bid,Digits); // Закомментировать при тесте D1 curH1=hh; curM1=mm; } else if (mm!=curM1) curM1=mm; if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); //HiH1 = iHigh(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 //LoH1 = iLow(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 HiH1 = iHigh(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 LoH1 = iLow(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 で、2007.07.01から2007.08.11までの同じ時間間隔の3つの 期間について再度テストしてみました。 <br/ translate="no"> 2007.08.14 16:32:03 2007.08.10 23:59 future-2h EURUSD,Daily: 作業終了 2007.08.14 16:32:03 2007.07.27 23:59 future-2h EURUSD,Daily: 2007.07.27 23:59:59, curHi=1.3753, HiH1=1.3753, curLo=1.を実行した。3627, LoH1=1.3626 2007.08.14 16:32:01 2007.07.02 00:00 future-2h EURUSD,Daily: The testing period is not appropriate 2007.08.14 16:32:01 future-2h start for testing 2007.08.14 16:31:56 2007.08.10 22:59 future-2h EURUSD,H1: 作業終了 2007.08.14 16:31:54 2007.07.02 00:00 future-2h EURUSD,H1: テスト期間はタスクに準拠しない 2007.08.14 16:31:54 future-2h テスト用開始 2007.2007.08.14 16:31:48 2007.08.10 22:59 future-2h EURUSD,M1: 作業完了 2007.08.14 16:31:46 2007.07.02 00:00 future-2h EURUSD,M1: テスト期間1分 2007.08.14 16:31:46 future-2h テスト用開始 なんて書いてあるんだ?エラーの有無について、もう一度コードを解析 する必要がありますね。 Yurixx 2007.08.14 16:19 #119 なるほど。あなたはすべて正しいことをしたのです。そして、このEAはM1のみで動作させる必要があります。エキスパートアドバイザーはM1で実行され、M1期間の高値と安値のデータがH1またはD1期間と一致するかどうかをテストするものです。もし、未来を覗くことができるのであれば、M1でそのHighとLowに到達する前に、先輩のt/fデータでHighとLowを知ることができるはずです。それだけです。 D1のテスト結果は私と同じで、D1のこのインターバルでは私もエラーは出ませんでした。しかし、H1テストでは、私が得て少し前に投稿した内容を確認することはできません。コードを解析する必要はありません。ご覧のようにテスターの正常な動作を確認することができます。 もし、これで十分だと思うのであれば、ここでやめてもかまいませんが、もし、このテストが偶然ではないこと、期間が短すぎることを確認したいのであれば、同じ2つのテストをより長い期間で実行してみてください。例えば1年以上とか、2007年の初めからとか。 追記 念のため、繰り返します。テスト M1期のみ. 全ティックモードのみ. ご参加ありがとうございました。 Rashid Umarov 2007.08.14 17:45 #120 テストEAをありがとうございます。テストの選択肢が多すぎて、何をテストしたらいいのかわからないことがあるので、自分で考えるのは難しいですね。そして、その煩わしさ...。自国民の方がイライラするだろ、理解してもらえると思ってるから。知らず知らずのうちに強くなり、他人を許したところで、自分のはイライラする。申し訳ございません。 これらのテストは、MetaTrader 4テスターの改良に本当に役立っています。特にソースコードで。 1...5678910111213 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ご質問の「EURUSDを2007.07.10~2007.07.14の範囲で、別途2007.07.09~2007.07.14の範囲で」検証してみましたが、違いはありません。
私も最新ビルドにアップデートする必要がありました。:-)確かに、時間に関する問題はなくなりましたね、よかったです。しかし、結論から言うと、話はそれだけでは終わらない。
同じ期間でEAを実行したところ、M1とH1/D1のHighとLowの間に差はありませんでした。注 - このテストは、通常の無傷のデータで実行しました。 同期などはしていません。だから、それが不一致の理由であるはずがない。
そこで、念のため別の間隔で試してみることにした(まあ、私の性格が悪いのだが)。そして、それはまだ終わっていないことがわかった。
2007.08.06から 2007.08.11まで、つまり先週までの区間を試してみてください。しかも、比較対象はD1ではなく、H1です。Expert Advisorのテキストには、コメントアウトすべき演算子が4つ、コメントアウトしない演算子が4つあります。未来へのスパイの可能性が証明されたわけでは、ありません。しかし、不具合は存在する。
また、1週間 単位で問題がないとは言い切れないようでしたので、もっと長い間隔、例えば1年とか半年とかでテストを行うべきでしょうか。
シミュレーションの正しさのチェックがテスト開始直後に始まるのに対して、新しい日が来るという事実は、あなたのコードでは遅すぎる、実際には2日目に修正されています。この非対称性を排除するために、ブール変数startを導入し、テストの開始時にすべてのテスト値を固定するようにした。
ご覧の通り、一度だけ動作し、EAにはもう影響を与えません。 さらに、すべてはあなたのアルゴリズムに従って行われます。 もし、一次初期化を行わないのであれば、チェックストリングス
は値curLo=0を与え、curHiは0に等しくない。説明は簡単で、変数curLoとcurHiは初期化されていないため、両方とも最初は0に等しい。最初のティックでは、条件
がトリガされ、現在のBidが0より大きいため、curHiはすでに0と異なっています。同時に、現在のBidは0以下にはならない(curLoは初期化されていないので0)ので、条件として
は、curLoを一切変更することができません。私のバージョンのExpert Advisorを自分で実行し、エラーファイルFu.xlsに1行だけ含まれることを確認します - テスターで最後にシミュレートされた引用符の時間です。
フルコードは投稿に添付されていますが、投稿に収まらないのでダウンロードした方が良いです。
もちろん、Rosh さんの修正には感謝しますが、その必要はなかったと思います。
もしかしたらお気づきでないかもしれませんが、私のコードでは、関数init()の中に次のようなブロックがあります。
このブロックの実行の結果、EA の実行開始時にいずれの条件も満たすことができない。
したがって、EAが履歴のどこから始まっても、常に新しい分、新しい時間、新しい日になるのです。そして、前述のブロックの最初の演算子の組は、あなたの発言「簡単に説明すると、変数curLoとcurHiは両方とも初期化されていないため、最初は0に等しい」の理由を説明しています。最初のティックのビッドは0より大きく1000より小さいので、対応する両方の条件文が必然的にトリガーされ、変数curLoとcurHiはif(start)ブロック{...}で割り当てたのと同じ初期値を取得します。
あなたのバージョンも同様に機能しますが、アルゴリズムには何ら影響を与えません。そのため、この改変はエラーの有無に影響を及ぼさない。
前回の記事をもう一度ご覧ください。問題は、新しい日に移行するときでもなく、EAの開始時でもなく、t/f H1をテストするときに発生します。この問題は、2007年8月10日に一度だけ発生し、17:00から17:03までの3分間続きます。この間、M1とH1のHigh値の乖離で28ティックが発生しています。適切な写真をお見せしています。
差し支えなければ、私が依頼したその間隔でEA(修正したコード)を実行してみてください。ただ、コメントの使い方を訂正してください。現在、あなたのコードでは、t/f D1と比較され、このモードではエラーは発生しません。H1との比較のために必要です。
特に病的なケースでの正しさを保つために、少しコードを変更しました(2007.01.01のM1にはローソクが1本だけ、H1とD1も同じです)。2007.01.01~2007.08.11の期間でテストを行ったところ、D1で4件、H1で2件の誤検出がありました。すべてのエラーは、より高いTFの新しいキャンドルへの 移行時に発生します。自分の目で確かめたい人。
それは、未来を見通す可能性を与えないからです。少なくとも私がチェックしたピーピングバリアントでは。
もちろん、Rosh さんの修正には感謝しますが、その必要はなかったと思います。
もしかしたらお気づきでないかもしれませんが、私のコードではinit()関数の中に以下のブロックがあります。
難しいことでなければ、私がお願いした間隔でEA(修正したコード)を動かしてみてください。ただ、コメントの使い方を訂正してください。現在、あなたのコードでは、t/f D1と比較され、このモードではエラーは発生しません。H1との比較のために必要です。
自分でコードを投稿してください。お気づきのように、私のコードをH1でテストすると、値が初期化されません。
つまり、私が書いたとおりの内容になるのです。私が何のことか推測できないようにコードを並べるのが難しいのなら、あなた自身が理解すればいい、私はテレパシーの練習より他にすることがある。
本当に、なぜイライラするのか理解できません。
前ページで結果付きのEAを掲載した時に書きましたが、テスト用です 専ら をM1上に配置しました。同時にそれは、自分自身で生成したHighとLowを、それに応じてH1であったりD1であったりする、より高いt/fのHighとLowを比較する。 start()プロシージャのテキストにコメントを配置する方法です。
正直、init() でreturn(-1); するとEAの動作が止まるので、M1のみ起動できるのではと思ったのです。しかし、今は、先生の投稿のおかげで、どのTFでも動作することを確信しました。 このEAのアイデアは、低いt/f(具体的にはM1)から高いt/f(具体的にはH1またはD1)へ未来をスパイしようとするものです。.したがって、M1でのみ実行する必要があります。H1のテストが何を示すかは、私にもわかりません。
このコードは、M1データとH1データを比較するために直接使用することができます。EAのテキストには、M1データとD1データを比較するために必要な(初歩的な)変更が明確に示されている。だからここでも、何が不満なのかよくわからない。
最後にもうひとつ。あなたのコードは、私のコードと同じようにテスターでの実行に適しています。ただ、それを実行に移すだけなのです。
他にやることがあるなら、邪魔はしませんよ。私は個人的な依頼ではなく、MQの代表として、テスターに何らかの不具合が発見される可能性があることに関連して、あなたに話しかけたのです。
本当に、なぜイライラするのか理解できません。
前ページで結果付きのEAを掲載した時に書きましたが、テスト用です 専ら をM1上に配置しました。同時にそれは、自分自身で生成したHighとLowを、それに応じてH1であったりD1であったりする、より高いt/fのHighとLowを比較する。 start()プロシージャのテキストにコメントを配置する方法です。
正直、 Expert Advisorの動作が止まってしまうので、M1のみ起動できるようにしようと思っていました 。しかし、今は、先生の投稿のおかげで、どのTFでも動作することを確信しました。 このEAのアイデアは、低いt/f(具体的にはM1)から高いt/f(具体的にはH1またはD1)へ未来をスパイしようとするものです。.したがって、M1でのみ実行する必要があります。H1のテストが何を示すかは、私にもわかりません。
このコードは、M1データとH1データを比較するために直接使用することができます。EAのテキストには、M1データとD1データを比較するために必要な(初歩的な)変更が明確に示されている。だからここでも、何が不満なのかよくわからない。
最後にもうひとつ。あなたのコードは、私のコードと同じようにテスターでの実行に適しています。ただ、それを実行に移すだけなのです。
他にやることがあるなら、邪魔はしませんよ。個人的な依頼ではなく、MQの代表としてテスターに何らかの不具合が発見される可能性があることに関連し、あなたに声をかけたのです。
2007.08.14 16:29:03 2007.08.10 23:59 future-2h EURUSD,Daily: 2007.08.10 23:59:59, curHi=1.3693, HiH1=1.3702, curLo=1.3693, LoH1=1.3689.
2007.08.14 16:29:02 2007.08.03 23:59 EURUSD,Daily: 2007.08.03 23:59:59, curHi=1.3773, HiH1=1.3787, curLo=1.3773, LoH1=1.3772.
2007.08.14 16:29:02 2007.07.27 23:59 EURUSD,Daily: 2007.07.27 23:59:59, curHi=1.3635, HiH1=1.3641, curLo=1.3635, LoH1=1.3627。
2007.08.14 16:29:02 2007.07.20 23:59:59 EURUSD,Daily: 2007.07.20 23:59:59, curHi=1.3826, HiH1=1.3827, curLo=1.3826, LoH1=1.3821.
2007.08.14 16:29:01 2007.07.16 23:59:59 EURUSD,Daily: 2007.07.16 23:59:59, curHi=1.3772, HiH1=1.3773, curLo=1.3772, LoH1=1.3772.
2007.08.14 16:29:01 2007.07.13 23:59:59 EURUSD,Daily: 2007.07.13 23:59:59, curHi=1.3782, HiH1=1.3787, curLo=1.3782, LoH1=1.3780。
2007.08.14 16:29:01 2007.07.06 23:59:59 EURUSD,Daily: 2007.07.06 23:59:59, curHi=1.3625, HiH1=1.3630, curLo=1.3625, LoH1=1.3623。
2007.08.14 16:29:01 2007.07.02 00:00 EURUSD,Daily:テスト期間は適切ではありません。
2007.08.14 16:29:01 future-2hテスト開始
2007.08.14 16:28:34 2007.08.10 22:59 future-2h EURUSD,H1: 作業終了しました。
2007.08.14 16:28:32 2007.07.02 00:00 future-2h EURUSD,H1: テスト期間が適切でありません。
2007.08.14 16:28:32 future-2hテスト開始
2007.08.14 16:28:22 2007.08.10 22:59 future-2h EURUSD,M1: 作業終了しました。
2007.08.14 16:28:19 2007.07.02 00:00 future-2h EURUSD,M1:テスト期間1分。
2007.08.14 16:28:19 future-2hのテスト開始
2007.08.14 16:24:28 2007.08.10 22:59 future-2h EURUSD,M1: 作業終了しました。
2007.08.14 16:24:28 2007.08.06 00:00 future-2h EURUSD,M1:テスト期間1分。
を変更します。
を
。 で、2007.07.01から2007.08.11までの同じ時間間隔の3つの 期間について再度テストしてみました。
2007.08.14 16:32:03 2007.08.10 23:59 future-2h EURUSD,Daily: 作業終了
2007.08.14 16:32:03 2007.07.27 23:59 future-2h EURUSD,Daily: 2007.07.27 23:59:59, curHi=1.3753, HiH1=1.3753, curLo=1.を実行した。3627, LoH1=1.3626
2007.08.14 16:32:01 2007.07.02 00:00 future-2h EURUSD,Daily: The testing period is not appropriate
2007.08.14 16:32:01 future-2h start for testing
2007.08.14 16:31:56 2007.08.10 22:59 future-2h EURUSD,H1: 作業終了
2007.08.14 16:31:54 2007.07.02 00:00 future-2h EURUSD,H1: テスト期間はタスクに準拠しない
2007.08.14 16:31:54 future-2h テスト用開始
2007.2007.08.14 16:31:48 2007.08.10 22:59 future-2h EURUSD,M1: 作業完了
2007.08.14 16:31:46 2007.07.02 00:00 future-2h EURUSD,M1: テスト期間1分
2007.08.14 16:31:46 future-2h テスト用開始
なるほど。あなたはすべて正しいことをしたのです。そして、このEAはM1のみで動作させる必要があります。エキスパートアドバイザーはM1で実行され、M1期間の高値と安値のデータがH1またはD1期間と一致するかどうかをテストするものです。もし、未来を覗くことができるのであれば、M1でそのHighとLowに到達する前に、先輩のt/fデータでHighとLowを知ることができるはずです。それだけです。
D1のテスト結果は私と同じで、D1のこのインターバルでは私もエラーは出ませんでした。しかし、H1テストでは、私が得て少し前に投稿した内容を確認することはできません。コードを解析する必要はありません。ご覧のようにテスターの正常な動作を確認することができます。
もし、これで十分だと思うのであれば、ここでやめてもかまいませんが、もし、このテストが偶然ではないこと、期間が短すぎることを確認したいのであれば、同じ2つのテストをより長い期間で実行してみてください。例えば1年以上とか、2007年の初めからとか。
追記
念のため、繰り返します。テスト M1期のみ. 全ティックモードのみ.
ご参加ありがとうございました。
これらのテストは、MetaTrader 4テスターの改良に本当に役立っています。特にソースコードで。