MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 968

 
Yevhenii Levchenko:
引用文はtester/historyフォルダに保存されていますか?

いいえ。

\history Ⓐ.dat - 引用符のアーカイブ。

\historyserver*.hst - quotes.

\testerhistory**.fxt - テストや最適化を開始するたびに*.hstファイルから生成されます。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MT4開発者への質問:テスターファイルについて

セルゲイ・バソフ さん 2016.01.14 07:25

私はMT4の開発者ではありませんが、個人的な経験からお答えします。

削除しても何の影響もありません。次のテストや最適化の際に、再び生成されるだけです。

引用文は*.hstファイルに格納され、テスターはそこから*.fxtファイルを生成し、毎回新たに生成する。


 
Sergey Basov:

いいえ。

\history Ⓐ.dat - 引用符のアーカイブ。

\historyserver*.hst - quotes.

\testerhistory**.fxt -テストや 最適化を実行するたびに、*.hstファイルから生成さ れます。


起動時にドライブに負担をかけるものなので...。毎回生成し直すのに、なぜテスターは削除しないのでしょうか?何か設定する方法はありますか?

 
Nauris Zukas:

こんにちは!当月のバーの開始 時間を取得したかったのですが、エラー4074(ERR_NO_MEMORY_FOR_HISTORY)が発生しました。6月1日からテストを始めると正しく表示されるのに、6月2日からエラーが出るようになったのも面白いですね。今月の問題を解くには?

こんにちは。

他のブローカーからのクォートでテストしたとき、同じエラー4074(ERR_NO_MEMORY_FOR_HISTORY) に直面しました。それに、サードパーティーの見積もりは、まず使わないですね。他の機種ではこのようなエラーは出ていません。エラーの原因、修正方法、もしかしたらもう誰かがわかっているかもしれませんね?

 

mt5の最もシンプルなコードは、なぜmt4と全く違う動きをするのでしょうか?例えば、mt4ミューウイングスバッファーの 平均値を計算する次のようなコードです。

for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         AverageBuffer[i]=value/AveragePeriod;
      }

...mt5では動きません。多かれ少なかれ似たような方法で(直感的な方法で)動作させるためには、次のようなものが必要です。

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         value/=(AveragePeriod+1);
         AverageBuffer[i]=value;
      }

そして、最初の7つのバッファには、いくつかの法外な値が表示されます。それ以降はすべて問題なく動作しているようです。そんな些細なことで顎が引きつった)

この問題を解決する方法を教えてください。

 

計算の間にコメントを追加 し、すべてをクソ再描画 :D

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         if(i==2)
           

  Comment(value); // вот это добавил

         value/=(AveragePeriod+1);          AverageBuffer[i]=value;                }
何が大変なんだ?
 
iFractalでそのような条件の書き方がわからないのですが?もしや。
第一フラクタル_up<第二 フラクタル_upその後......。
また、ダウンフラクタルも同様
 
Vladimir Baskakov:
iFractalでそのような条件の書き方がわからないのですが?もしや。
第一フラクタル_up<第二フラクタル_upその後......。
また、ダウンフラクタルも同様

週末にふざけるな...。

 
Vladimir Baskakov:
iFractalでそのような条件の書き方がわからないのですが?もしや。
第一フラクタル_up<第二フラクタル_upその後......。
また、ダウンフラクタルも同様

を用意し、フラクタルはこうして探します。

//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

最初のフラクタルとその後のUpを見つけるために2回呼ぶ必要がある、大体こんな感じ。

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
 
Yevhenii Levchenko:

計算の間にコメントを追加し、すべてをクソ再描画 :D

そのコツとは?

インジケータバッファにArraySetAsSeries(true)を指定します。

 
Igor Makanu:

を既製品から探すと、こうしてフラクタルを探すことができます。

最初のフラクタルと次のUpを見つけるために、このように2回あなたを呼び出す必要があります。

ありがとうございます!1つだけ条件を満たすと動作します。

        if(barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

そして、必要なのは

        if(barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

そして、なぜかそれでポジションを開くことができない。