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

 

テスターのExpert Advisorに問題があります。1分足データでテストしています。上位TFのストキャスティクスは、分足データを使って自分で計算しています。

2001年から議事録の履歴がダウンロードできるようになりました。Charts "タブで、ヒストリーに表示するバーの最大 数を設定し、表示します。

チャート上の全履歴がスクロールされます。

問題は、デバッグプリントで判明したように、どの日付からテスターを起動しても、最大バー本数が

は、常に1001または1002です。Barsの値は、次のバーごとに1ずつ増加します。

そのため、スタート時に上位のTFをカウントすることは不可能である。

解決策は1つです。Barsが望ましい値になる前に取引禁止を追加すべき。

この問題を別の方法で解決できないか?このテスターのBarsの開始値は、何らかの形で増加するのでしょうか?

 
Igor733:

テスターのExpert Advisorに問題があります。1分足データでテストしています。上位TFのストキャスティクスは、分足データを使って自分で計算しています。

2001年から議事録の履歴がダウンロードできるようになりました。Charts "タブで、ヒストリーに表示するバーの最大 数を設定し、表示します。

チャート上の全履歴がスクロールされます。

問題は、デバッグプリントで判明したように、どの日付からテスターを起動しても、最大バー本数が

は、常に1001または1002です。Barsの値は、次のバーごとに1ずつ増加します。

したがって、最初から高い方のTFを計算することは不可能です。

解決策は1つです。Barsが望ましい値になる前に取引禁止を追加すべき。

この問題を別の方法で解決できないか?このテスターのBarsの開始値は、何らかの形で増加するのでしょうか?

いいえ、そんなことはありません。自分なりの解決策を使う。
 
何が問題なのでしょう。EAを書く ときは、変化を追うために何度もテストする必要があります。ランダムな数のテストの後、ストラテジーテスターはコードに加えられた変更を受け入れない。それは時に不条理なまでに迫ってきます。コードの一部を削除するだけで、テスターでは先に書いたアルゴリズムにしたがってフクロウが動作するようになります。CSVへの計算のパースも同様で、一定回数のテストの後、ランダムなガラクタがCSVにパースされます。

追伸:コンパイルボタンを押しました。
 

平滑化移動平均を計算するアルゴリズムをどうしても理解したい。 iMA関数が適さない理由はいくつかある。

私が理解したところでは、https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma からの情報です。

最初の要素は終値の合計を期間で割って算出されます。

以下のものは、SMMA(i)=(SMMA(i - 1)*(N - 1)+CLOSE(i))/N の式に従って算出される。

5の期間をとって、2017.02.24 19:00~2017.02.24 23:00 (GMT+2) すなわち直近5本のローソク足のEUR/USD H1の終値を見てみましょう。

終値は、1.05681; 1.05702; 1.05639; 1.05612; 1.05592 です。

これに対応して、第1要素-1.056452、第2要素-1.056852 第3要素-1.05676 第4要素-1.056632 第5要素-1.056489と なる。

しかし、SMMA 5チャートでは、終値は1.05706、つまり、差はすでに3桁 目に入っている

何を間違えてカウントしているのだろう?

また、1.05706を得るためには、どのように計算すればよいのでしょうか?

 
zsu1970:

平滑化移動平均を計算するアルゴリズムをどうしても理解したい。 iMA関数が適さない理由はいくつかある。

私が理解したところでは、https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma からの情報です。

最初の要素は終値の合計を期間で割って算出されます。

以下のものは、SMMA(i)=(SMMA(i - 1)*(N - 1)+CLOSE(i))/N の式に従って算出される。

期間を5に等しくして、2017.02.24 19:00 から 2017.02.24 23:00 (GMT+2) までの期間、すなわち過去5回のローソク足のEUR/USD H1の終値を取ってみます。

終値は、1.05681; 1.05702; 1.05639; 1.05612; 1.05592 です。

これに対応して、第1要素-1.056452、第2要素-1.056852 第3要素-1.05676 第4要素-1.056632 第5要素-1.056489と なる。

しかし、SMMA 5チャートでは、終値は1.05706、つまり、差はすでに3桁 目に入っている

何を間違えてカウントしているのだろう?

また、1.05706を得るためには、どのように計算すればよいのでしょうか?

インジケーター そのものを調べれば、もっと理解できるはずです。
 
Aleksey Maryaskin:
開発者の皆さん皆さん、ごきげんよう。Expert Advisorのテンプレート(スクリプト)を作成する際に、どのように作成すればよいのかについて質問させていただきます。どこかで編集できるのか、どのように編集しているのか。
ここに直接リンクしても多分通じないと思うのですが...。このスレッドにMQL4コースを投稿する」(引用符なし)でググってみてください。 そこで「テンプレート」で検索してください(2ページ目にあると思います)。
 
Vitaly Muzichenko:
インジケータ そのものを見れば、もっと意味がわかるはずです。
を見てみました。 私があげたリンクと同じです。

double SMMA(int period)
{

//終値で配列を埋める
int k=period;
for(int i=1; i<=period; i++)
{
H1_Close[i]=Close[k];
// Print("H1_Close[",i,"] ",H1_Close[i]," Close [",k,"] ",Close[k]);
k--;
}
//calculate first element as average closing price.
double Summ=0;
for (int i=1; i<=期間;i++)
Summ=Summ+H1_Close[i]; //SUM1=SUM(CLOSE,N)である。
double TmpSMMA=Summ/period; //SMMA1 = SUM1/N
//SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N として,i番目の要素を計算します。
for(int i=2;i<=period;i++)
TmpSMMA=(TmpSMMA*(period-1)+H1_Close[i])/period。
}
結果は、やはり端末のインジケーターデータとは大きく異なる。なぜ?
 
zsu1970:

平滑化移動平均を計算するアルゴリズムをどうしても理解したい。 iMA関数が適さない理由はいくつかある。

私が理解したところでは、https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma からの情報です。

最初の要素は終値の合計を期間で割って算出されます。

以下のものは、SMMA(i)=(SMMA(i - 1)*(N - 1)+CLOSE(i))/N の式に従って算出される。

5の期間をとって、2017.02.24 19:00~2017.02.24 23:00 (GMT+2) すなわち直近5本のローソク足のEUR/USD H1の終値を見てみましょう。

終値は、1.05681; 1.05702; 1.05639; 1.05612; 1.05592 です。

これに対応して、第1要素-1.056452、第2要素-1.056852 第3要素-1.05676 第4要素-1.056632 第5要素-1.056489と なる。

しかし、SMMA 5チャートでは、終値は1.05706、つまり、差はすでに3桁 目に入っている

何を間違えてカウントしているのだろう?

また、1.05706を得るためには、どのように計算すればよいのでしょうか?

だから、インクルードニクには計算アルゴリズムがあるんです。

 
Alexey Viktorov:
インルーダーの中に計算アルゴリズムがあります。

だから、計算通りにやっているように見えるのですが、結果が出ません。4日目......解らない。
Vitaly Muzichenkoさんの 回答にある関数のコードを書いてみたのですが、エラーの原因がわかりません
 
zsu1970:
だから、計算通りにやっているように見えるのですが、結果が出ません。4日目にして解けなくなりました。
Vitaly Muzichenkoさんの 回答にある関数のコードを書いてみたのですが、エラーの原因がわかりません
価格をすぐに入れるのか、それとも手に入れてから計算書に貼り付けるのか?