アルゴリズムの最適化 - ページ 7 12345678910 新しいコメント Vasiliy Sokolov 2012.05.23 10:38 #61 komposter:なぜ、そう言い切れるのですか?私のチェックでは、そうではありません。mq4スクリプトは添付ファイルにあります。 ループ分割の方が本当に速く動作するようです。でも、パスが2回になるから、わけがわからない。 hrenfx 2012.05.23 10:49 #62 しかし、それでも最速の選択肢とは言えません。でも、これは私の方で、速攻で書かないので「ぼちぼち」です。 Vladimir Gomonov 2012.05.23 11:23 #63 hrenfx: しかし、それでも最速の選択肢とは言えません。でも、速攻で書くことはないので、私の方では「ぼちぼち」です。 私もそうです。でも、もっと早くてもいいと思います。 Vasiliy Sokolov 2012.05.23 16:01 #64 hrenfx: しかし、それでも最速の選択肢とは言えません。でも、速攻で書かないので、私の方では「ぼちぼち」です。MetaDriver。 私もしません。でも、もっと速くてもいいと思う。やめてくれ!ボロボロ:(このアルゴリズムは、私が自分で書きますよ。ただ、今は体調が悪いので、1週間は先延ばしにしなければなりません。 Andrey Khatimlianskii 2012.05.23 23:52 #65 TheXpert: C.T.D.さんは、最初の投稿でまさにそのことを書いています。 プライオリティを主張するわけではなく、提案にちょっとだけ賛同したのです。"本当は 2サイクルに分けた方が良い") Andrey Khatimlianskii 2012.05.23 23:53 #66 C-4: サイクルスプリッティングは、より高速に動作するようです。でも、パスが二つになると、わけがわからなくなる。 なぜなら、各パスは2倍のチェックがあり、パス自体が短くなる(早々に中断される)ことが多いからです。 Andrey Khatimlianskii 2012.05.23 23:54 #67 MetaDriver: そして、私はそうしない。でも、もっと早くてもいいと思います。私もそうですが、もっと速くなることは間違いなく可能です ;)今気づいたのですが、ブレイクが1つ足りないので、今更深追いできないですね。 Vasiliy Sokolov 2012.05.30 09:25 #68 以下は最終的なコードです。最大探索関数を提示する。極小値を求める機能も同様である。private BitArray Up() { BitArray bits = new BitArray(MyQuotes.Count); double max = double.MinValue; int pperiod = (Period - 1) / 2; int bar = pperiod; int count = MyQuotes.Count - pperiod; //последняя позиция второго перебора. int pos = bar; bool rev = false; int rpos = bar; bool FirstEnter = false; while (bar < count - 1) { for (int i = 1; i <= pperiod; i++) { max = MyQuotes.High[bar - i] > MyQuotes.High[bar + i] ? MyQuotes.High[bar - i] : MyQuotes.High[bar + i]; pos = bar + i; if (max > MyQuotes.High[bar]) { bar = pos; break; } if (MyQuotes.High[bar + i] == MyQuotes.High[bar] && FirstEnter == false) { rev = true; rpos = bar + i; FirstEnter = true; } if (i == pperiod) { bits[bar] = true; bar = rev ? rpos : pos; rev = false; FirstEnter = false; } } } return bits; }ここでは、その性能テストを紹介します。3 00:00:00.5070290 4 00:00:00.3920224 5 00:00:00.3960227 6 00:00:00.3620207 7 00:00:00.3570204 8 00:00:00.3230185 9 00:00:00.3350192 10 00:00:00.2820161 11 00:00:00.2910166 12 00:00:00.2730157 13 00:00:00.2990171 14 00:00:00.2450140 15 00:00:00.2770158 16 00:00:00.2890165 17 00:00:00.2480142 18 00:00:00.2400138 19 00:00:00.2530144 20 00:00:00.2410138 21 00:00:00.2660152 22 00:00:00.2310132 23 00:00:00.2350135 24 00:00:00.2290131 25 00:00:00.2300131 26 00:00:00.2390137 27 00:00:00.2290131 28 00:00:00.2350135 29 00:00:00.2290131 30 00:00:00.2530144 31 00:00:00.2200126 32 00:00:00.2680153 33 00:00:00.2250129 34 00:00:00.2260129 35 00:00:00.2360135 36 00:00:00.2240128 37 00:00:00.2240128 38 00:00:00.2260129 39 00:00:00.2160124 40 00:00:00.2390137 41 00:00:00.2190125 42 00:00:00.2270130 43 00:00:00.2210126 44 00:00:00.2090120 45 00:00:00.2360135 46 00:00:00.2210126 47 00:00:00.2550146 48 00:00:00.2170124 49 00:00:00.2220127 50 00:00:00.2180124 51 00:00:00.2090120 52 00:00:00.2180125 53 00:00:00.2380136 54 00:00:00.2170124 55 00:00:00.2270130 56 00:00:00.2070118 57 00:00:00.2200126 58 00:00:00.2230128 59 00:00:00.2080119 60 00:00:00.2400137 61 00:00:00.2160123 62 00:00:00.2100120 63 00:00:00.2240128 64 00:00:00.2220127 65 00:00:00.2170124 66 00:00:00.2100120 67 00:00:00.2100121 68 00:00:00.2260129 69 00:00:00.2160123 70 00:00:00.2240128 71 00:00:00.2110121 72 00:00:00.2190125 73 00:00:00.2140123 74 00:00:00.2110121 75 00:00:00.2260129 76 00:00:00.2090119 77 00:00:00.2230128 78 00:00:00.2080119 79 00:00:00.2070118 80 00:00:00.2510144 81 00:00:00.2180125 82 00:00:00.2080119 83 00:00:00.2070118 84 00:00:00.2060118 85 00:00:00.2060118 86 00:00:00.2070118 87 00:00:00.2100120 88 00:00:00.2060118 89 00:00:00.2080119 90 00:00:00.2710155 91 00:00:00.2180125 92 00:00:00.2110120 93 00:00:00.2080119 94 00:00:00.2060118 95 00:00:00.2060118 96 00:00:00.2020116 97 00:00:00.2080119 98 00:00:00.2100120 99 00:00:00.2090119処理速度が質的に向上し、極値の周期に依存しなくなったことがわかる。確かにNが小さいと、特に期間3ではさらに遅くなるが、Nが大きくなると急激に速度が上がり、2倍近い速さになる。これは、ブレイクジャンプやインデキシングトランジションに時間がかかり、長い距離で効果を発揮するためと思われます。小さなNでは、真っ向からブルートフォースする方が速いことが判明した。追伸:Up()とDown()の両関数の実行を非同期実行モードにしてみました。つまり、両方のコアで同時に実行することができるのです。しかし、性能は上がりませんでした。どうやら、パスそのものはリソースを消費せず、ほとんどの時間は データの準備と解析に費やされ、反復処理そのものには使われていないようです。 hrenfx 2012.05.30 09:36 #69 hrenfx: しかし、それでも最速の選択肢とは言えません。でも、これは速攻で書かないので、私の方では「ぼちぼち」です。まだ関連性がある。追伸C-4:処理速度が質的に向上し、極値期間に依存しなく なったことがわかる。 次第で、悪くもない。あなたの場合、そのようなソースコード(CVR)があるだけで、最小のNで終わっていますね。一般に、実行速度の周期依存性のグラフは、あなたのものとは著しく異なる場合があります。 Vasiliy Sokolov 2012.05.30 09:59 #70 hrenfx:まだ関連性がある。追伸次第で、悪くもない。あ なたの場合、最小Nで終了するソース(TSS)だけです。一般に、実行速度の周期依存性のグラフは、あなたのものとは大きく異なる場合があります。 賛否両論ある発言。アルゴリズムはシングルパスであり、反復回数、ひいては速度はNにほとんど依存しない。ただ、アルゴリズムの特性として、BPの価格の極値が互いに等しいと、パフォーマンスが大きく低下してしまうことがあります。それ以外の場合は、依存関係を維持する必要があると思います。この場合、古典的な正規分布のランダムウォークをBPとした。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜ、そう言い切れるのですか?
私のチェックでは、そうではありません。
mq4スクリプトは添付ファイルにあります。
しかし、それでも最速の選択肢とは言えません。でも、速攻で書くことはないので、私の方では「ぼちぼち」です。
しかし、それでも最速の選択肢とは言えません。でも、速攻で書かないので、私の方では「ぼちぼち」です。
私もしません。でも、もっと速くてもいいと思う。
やめてくれ!ボロボロ:(
このアルゴリズムは、私が自分で書きますよ。ただ、今は体調が悪いので、1週間は先延ばしにしなければなりません。
C.T.D.さんは、最初の投稿でまさにそのことを書いています。
サイクルスプリッティングは、より高速に動作するようです。でも、パスが二つになると、わけがわからなくなる。
そして、私はそうしない。でも、もっと早くてもいいと思います。
私もそうですが、もっと速くなることは間違いなく可能です ;)
今気づいたのですが、ブレイクが1つ足りないので、今更深追いできないですね。
以下は最終的なコードです。最大探索関数を提示する。極小値を求める機能も同様である。
ここでは、その性能テストを紹介します。
処理速度が質的に向上し、極値の周期に依存しなくなったことがわかる。確かにNが小さいと、特に期間3ではさらに遅くなるが、Nが大きくなると急激に速度が上がり、2倍近い速さになる。
これは、ブレイクジャンプやインデキシングトランジションに時間がかかり、長い距離で効果を発揮するためと思われます。小さなNでは、真っ向からブルートフォースする方が速いことが判明した。
追伸:Up()とDown()の両関数の実行を非同期実行モードにしてみました。つまり、両方のコアで同時に実行することができるのです。しかし、性能は上がりませんでした。どうやら、パスそのものはリソースを消費せず、ほとんどの時間は データの準備と解析に費やされ、反復処理そのものには使われていないようです。
しかし、それでも最速の選択肢とは言えません。でも、これは速攻で書かないので、私の方では「ぼちぼち」です。
まだ関連性がある。
追伸
処理速度が質的に向上し、極値期間に依存しなく なったことがわかる。
まだ関連性がある。
追伸
次第で、悪くもない。あ なたの場合、最小Nで終了するソース(TSS)だけです。一般に、実行速度の周期依存性のグラフは、あなたのものとは大きく異なる場合があります。