リアルタイム予測システムのテスト - ページ 52 1...454647484950515253545556575859...93 新しいコメント NEKSUS 2009.10.16 18:01 #511 grasn >> : まだ1.55以下です :o)どれどれ 可能性は高いです^_^、少なくともオプションで見れば ビジュアルCMEオプション Yurixx 2009.10.16 18:20 #512 grasn писал(а)>> (1) 多次元配列(全次元)を正しく初期化する方法。このコードは、私の理解では、1次元の配列と多次元のもので最初に見つかった次元では正しくなります。 double memRow[]; ArrayResize(memRow, N); ArrayInitialize(memRow, 0.0); しかし、もっと次元を増やしてどうするのか。 (2) 一変量・多変量配列を動的に拡張する方法は? この場合、配列memRow[]は、何があっても反復毎にある値だけ増加する必要があります。 同様に、2次元配列の場合、iとjの2方向に増加します - memRow[i][j]. (1)これは正しく、多次元でも全く同じです。初期化では、次元に関係なく、配列の全要素に1つの値を入れる。 (2)残念ですが、うまくいきません。MKL4では、多次元配列の1次元目しか次元を変更することができません。もしかしたら、MKL5で修正されるかもしれませんね。 Denis Timoshin 2009.10.16 19:50 #513 NEKSUS_ >> : 可能性は高いです^_^、少なくともオプションで見れば ビジュアルCMEオプション こんな美しいデータはどこから出てきたのだろう? NEKSUS 2009.10.16 19:56 #514 dentraf >> : そんな美しいデータをどこで手に入れたのですか? データは ごく普通のもので、きれいかどうかは作者次第です^_^。 Stanislav Korotky 2009.10.17 14:43 #515 grasnさん、MQL4でプログラミング すること自体が目的ではないのであれば、特に通常の実装で多次元配列が必要な重要な部分はC言語で書いてDLLとして添付した方が良いのではないでしょうか?より速く、より便利にデバッグができ、ソースコードもより読みやすくなります(MQLの制限を回避するために、たくさんの配列や間接的なインデックス付けなどの煩わしさがありません)。 Ярослав 2009.10.17 15:38 #516 grasn >> : 私は実現値(軌道)を予測しますが、取引を決定する際には、「頻度」の特性、例えば、予測地平における最も確率の高い軌道の±の平均値などに着目します。これらの水準は、目標値としてはより信頼性が高いが、これらの水準に至る価格経路は非常に複雑なものとなる可能性がある。もちろん、局所的な反転帯を推定する2つ目のアプローチにも取り組んでいます。このようなMMについては......そう単純なものではなく、別途、真剣勝負が必要なのでしょう。 ということで、今、MathCADからMTにコードを変換しているところです。少なくとも6ヶ月のテスト期間(目視)を設けることが統計的に意味を持つことになる。ということで、状態はもう少し後に掲載します。 ところで、行き詰ったのでプログラミングの質問があります(私はちょっとプログラマーなのですが)。 (1) 多次元配列(全次元)を正しく初期化する方法。このコードは、私の理解では、1次元の配列と多次元のもので最初に見つかった次元では正しくなります。 double memRow[]; ArrayResize(memRow, N); ArrayInitialize(memRow, 0.0); しかし、もっと次元を増やしてどうするのか。 (2) 一変量・多変量配列を動的に拡張する方法は? for(i=0; i<=N-1; i++) { ... memRow[]; ... } この場合、配列memRow[]は、何があっても反復毎にある値だけ増加しなければなりませんが、簡単のために1とします。 同様に、2次元配列の場合は、iとjの2方向に増加しなければなりません - memRow[i][j] です。 どうやら、多次元配列のアドレス指定は、関数として実装する必要がありそうです。 例えば、1次元の配列a[n]があるとします。 を3次元配列として使いたいとすると、i,k,j とすると,配列 a の要素 (i,k,j) は a[i*3+k*2+j] のように扱われます. などなど・・・。 Сергей 2009.10.17 16:54 #517 toYurixx (1) Все правильно и для нескольких измерений точно так же. Инициализация прописывает одно значение во все элементы массива независимо от размерности. (2)残念ですが、それはうまくいきません。MKL4では、多次元配列の1次元目しか次元を変更することができません。もしかしたら、MKL5で修正されるかもしれません。 私たちの安全な避難所であなたに会えてうれしいです :o).そして、人間の情熱がぶつかり合う隣の支店とは違って、互角に静かなのがいい。より明確に理解するために、少し要約します。仮にそのような構成があるとします。 double memRow[]; ... <какая то первая инициализация массива> j=1 for(int i=0; i<=N-1; i++) { if(<какое то условие>) { ArrayResize(memRow, j+1); <запись значений в расширенный массив> ... } } 私の理解では、何らかの条件が発生したときに、動的に配列memRow[]を増加させるのだと思います。つまり、あらかじめ配列の長さを知っているわけではありません。うまくいったかな? マーケット担当者まで MQL4でプログラミング すること自体が目的ではないのであれば、特に通常の実装で多次元配列を必要とするような重要な部分はC言語で書いてDLLとして添付した方が良いのではない でしょうか?より速く、より便利にデバッグできるようになり、ソースコードもより読みやすくなります(配列の束や間接インデックスなど、MQLの制限を回避するために私たちが発明しなければならない複雑なものは不要です)。 C/C++でのプログラミングは、MQLよりもさらに下手くそです。それに、全体的にプログラミングをするのは15年ぶりくらいです。さて、最初の結果を得て、それを基に結論を出したいと思います。もちろん、性能は出ませんが、なんとか自動運転で動き出します。少なくとも私はそう願っています。:о) でも、もちろんおっしゃるとおり、将来的にはいくつかの機能をDLLで置き換えたり、あるいはシステム全体を置き換えたりするつもりです。 ソルへ どうやら、多次元配列へのアピールは、関数として実装する必要がありそうです。 例えば、1次元の配列a[n]があるとします。 では、これを3次元配列i,k,jとして使いたいとすると とすると,配列 a の要素 (i,k,j) は a[i*3+k*2+j] のように扱われます. などなど・・・。 面白いアイデアですが、行列の次元が変わるような繰り返しがあるたびに、実際には配列全体の再組み立て(または再構築)が必要になります。でも、実現可能でしょう。アイデアをありがとうございました。 Testing real-time forecasting systems MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Tough time understanding the Evgeniy Logunov 2009.10.17 17:02 #518 grasn писал(а)>> 仮にそのような構成があるとします。 double memRow[]; ... <какая то первая инициализация массива> j=1 for(int i=0; i<=N-1; i++) { if(<какое то условие>) { ArrayResize(memRow, j+1); <запись значений в расширенный массив> ... } } 私の理解では、何らかの条件が発生したときに、動的に配列memRow[]を増加させるのだと思います。つまり、あらかじめ配列の長さを知っているわけではありません。うまくいったかな? ちょっとアドバイス。ループ内で配列を1要素ずつ増やさないでください。使用した(埋めた)要素の数を追加の変数に保存しておき、スペースが足りなくなったら、十数要素(あなたのタスクで簡単に見積もれます)だけ配列を増やします。こうすることで、大幅な性能アップを実現することができるのです。// ターミナルで配列にどのようにメモリが割り当てられるかはよく知らないのですが。もし、配列が大きくなったときのためにメモリを確保しておけば、ArrayResize(memRow, j+1)は非常に高速に実行されるでしょう。 Сергей 2009.10.17 17:33 #519 lea >> : ひとことお願いします。ループ内で配列を1要素ずつ増やさないでください。使用した(埋めた)要素数を追加の変数で管理しておき、容量が足りなくなったら十数要素(自分のタスクで見積もる)ずつ配列を増やしていくのです。こうすることで、大幅な性能アップを実現することができるのです。// ターミナルで配列にどのようにメモリが割り当てられるかはよく知らないのですが。もし、配列が大きくなったときのためにメモリを確保しておけば、ArrayResize(memRow, j+1)は非常に高速に実行されるでしょう。 ありがとうございます。試してみますが、何がより最適なのか見積もることができません。一方、小さな配列の場合は、その次元もわかりませんし、この実装では、まず小さな配列、次に計算値を蓄積する大きな配列と、2重に配列する必要があります。でも、そろそろ実験の時期ですね、アドバイスありがとうございます。 Сергей 2009.10.17 17:41 #520 toYurixx 私は古き良きシンブルをプレイすることをお勧めします、あなたはどのような戦略を使用し、どこでも見ることができます:o)EURUSD M 15の300サンプル(月曜日から水曜日を含む)の予測。 オプション1: プロセスエントロピー:13.84 バリエーション2。 プロセスエントロピー:13.01 オプション3. プロセスエントロピー:14.36 どのシンブルを拾っているのか?:о) ファイル: process_2.rar 5 kb 1...454647484950515253545556575859...93 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
まだ1.55以下です :o)どれどれ
可能性は高いです^_^、少なくともオプションで見れば
ビジュアルCMEオプション
(1) 多次元配列(全次元)を正しく初期化する方法。このコードは、私の理解では、1次元の配列と多次元のもので最初に見つかった次元では正しくなります。
double memRow[];
ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);
しかし、もっと次元を増やしてどうするのか。
(2) 一変量・多変量配列を動的に拡張する方法は?
この場合、配列memRow[]は、何があっても反復毎にある値だけ増加する必要があります。 同様に、2次元配列の場合、iとjの2方向に増加します - memRow[i][j].
(1)これは正しく、多次元でも全く同じです。初期化では、次元に関係なく、配列の全要素に1つの値を入れる。
(2)残念ですが、うまくいきません。MKL4では、多次元配列の1次元目しか次元を変更することができません。もしかしたら、MKL5で修正されるかもしれませんね。
可能性は高いです^_^、少なくともオプションで見れば
ビジュアルCMEオプション
こんな美しいデータはどこから出てきたのだろう?
そんな美しいデータをどこで手に入れたのですか?
データは ごく普通のもので、きれいかどうかは作者次第です^_^。
grasnさん、MQL4でプログラミング すること自体が目的ではないのであれば、特に通常の実装で多次元配列が必要な重要な部分はC言語で書いてDLLとして添付した方が良いのではないでしょうか?より速く、より便利にデバッグができ、ソースコードもより読みやすくなります(MQLの制限を回避するために、たくさんの配列や間接的なインデックス付けなどの煩わしさがありません)。
私は実現値(軌道)を予測しますが、取引を決定する際には、「頻度」の特性、例えば、予測地平における最も確率の高い軌道の±の平均値などに着目します。これらの水準は、目標値としてはより信頼性が高いが、これらの水準に至る価格経路は非常に複雑なものとなる可能性がある。もちろん、局所的な反転帯を推定する2つ目のアプローチにも取り組んでいます。このようなMMについては......そう単純なものではなく、別途、真剣勝負が必要なのでしょう。
ということで、今、MathCADからMTにコードを変換しているところです。少なくとも6ヶ月のテスト期間(目視)を設けることが統計的に意味を持つことになる。ということで、状態はもう少し後に掲載します。
ところで、行き詰ったのでプログラミングの質問があります(私はちょっとプログラマーなのですが)。
(1) 多次元配列(全次元)を正しく初期化する方法。このコードは、私の理解では、1次元の配列と多次元のもので最初に見つかった次元では正しくなります。
double memRow[];
ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);
しかし、もっと次元を増やしてどうするのか。
(2) 一変量・多変量配列を動的に拡張する方法は?
for(i=0; i<=N-1; i++)
{
...
memRow[];
...
}
この場合、配列memRow[]は、何があっても反復毎にある値だけ増加しなければなりませんが、簡単のために1とします。 同様に、2次元配列の場合は、iとjの2方向に増加しなければなりません - memRow[i][j] です。
どうやら、多次元配列のアドレス指定は、関数として実装する必要がありそうです。
例えば、1次元の配列a[n]があるとします。
を3次元配列として使いたいとすると、i,k,j
とすると,配列 a の要素 (i,k,j) は a[i*3+k*2+j] のように扱われます.
などなど・・・。
toYurixx
(1) Все правильно и для нескольких измерений точно так же. Инициализация прописывает одно значение во все элементы массива независимо от размерности.
(2)残念ですが、それはうまくいきません。MKL4では、多次元配列の1次元目しか次元を変更することができません。もしかしたら、MKL5で修正されるかもしれません。
私たちの安全な避難所であなたに会えてうれしいです :o).そして、人間の情熱がぶつかり合う隣の支店とは違って、互角に静かなのがいい。より明確に理解するために、少し要約します。仮にそのような構成があるとします。
double memRow[];
...
<какая то первая инициализация массива>
j=1
for(int i=0; i<=N-1; i++)
{
if(<какое то условие>)
{
ArrayResize(memRow, j+1);
<запись значений в расширенный массив>
...
}
}
私の理解では、何らかの条件が発生したときに、動的に配列memRow[]を増加させるのだと思います。つまり、あらかじめ配列の長さを知っているわけではありません。うまくいったかな?
マーケット担当者まで
MQL4でプログラミング すること自体が目的ではないのであれば、特に通常の実装で多次元配列を必要とするような重要な部分はC言語で書いてDLLとして添付した方が良いのではない でしょうか?より速く、より便利にデバッグできるようになり、ソースコードもより読みやすくなります(配列の束や間接インデックスなど、MQLの制限を回避するために私たちが発明しなければならない複雑なものは不要です)。
C/C++でのプログラミングは、MQLよりもさらに下手くそです。それに、全体的にプログラミングをするのは15年ぶりくらいです。さて、最初の結果を得て、それを基に結論を出したいと思います。もちろん、性能は出ませんが、なんとか自動運転で動き出します。少なくとも私はそう願っています。:о)
でも、もちろんおっしゃるとおり、将来的にはいくつかの機能をDLLで置き換えたり、あるいはシステム全体を置き換えたりするつもりです。
ソルへ
どうやら、多次元配列へのアピールは、関数として実装する必要がありそうです。
例えば、1次元の配列a[n]があるとします。
では、これを3次元配列i,k,jとして使いたいとすると
とすると,配列 a の要素 (i,k,j) は a[i*3+k*2+j] のように扱われます.
などなど・・・。
面白いアイデアですが、行列の次元が変わるような繰り返しがあるたびに、実際には配列全体の再組み立て(または再構築)が必要になります。でも、実現可能でしょう。アイデアをありがとうございました。
仮にそのような構成があるとします。
double memRow[];
...
<какая то первая инициализация массива>
j=1
for(int i=0; i<=N-1; i++)
{
if(<какое то условие>)
{
ArrayResize(memRow, j+1);
<запись значений в расширенный массив>
...
}
}
私の理解では、何らかの条件が発生したときに、動的に配列memRow[]を増加させるのだと思います。つまり、あらかじめ配列の長さを知っているわけではありません。うまくいったかな?
ちょっとアドバイス。ループ内で配列を1要素ずつ増やさないでください。使用した(埋めた)要素の数を追加の変数に保存しておき、スペースが足りなくなったら、十数要素(あなたのタスクで簡単に見積もれます)だけ配列を増やします。こうすることで、大幅な性能アップを実現することができるのです。// ターミナルで配列にどのようにメモリが割り当てられるかはよく知らないのですが。もし、配列が大きくなったときのためにメモリを確保しておけば、ArrayResize(memRow, j+1)は非常に高速に実行されるでしょう。
ひとことお願いします。ループ内で配列を1要素ずつ増やさないでください。使用した(埋めた)要素数を追加の変数で管理しておき、容量が足りなくなったら十数要素(自分のタスクで見積もる)ずつ配列を増やしていくのです。こうすることで、大幅な性能アップを実現することができるのです。// ターミナルで配列にどのようにメモリが割り当てられるかはよく知らないのですが。もし、配列が大きくなったときのためにメモリを確保しておけば、ArrayResize(memRow, j+1)は非常に高速に実行されるでしょう。
ありがとうございます。試してみますが、何がより最適なのか見積もることができません。一方、小さな配列の場合は、その次元もわかりませんし、この実装では、まず小さな配列、次に計算値を蓄積する大きな配列と、2重に配列する必要があります。でも、そろそろ実験の時期ですね、アドバイスありがとうございます。
toYurixx
私は古き良きシンブルをプレイすることをお勧めします、あなたはどのような戦略を使用し、どこでも見ることができます:o)EURUSD M 15の300サンプル(月曜日から水曜日を含む)の予測。
オプション1:
プロセスエントロピー:13.84
バリエーション2。
プロセスエントロピー:13.01
オプション3.
プロセスエントロピー:14.36
どのシンブルを拾っているのか?:о)