for (int r = 0; r<rows; r++) {//перебор train участка//j = r + RandomInteger(rows - r);//номер строки с которой поменять
j = RandomInteger(rows);//номер строки с которой поменять - так равномернее. Формулой выше меняются последние с последними. А тут с любыми.
c = idx[r]; idx[r] = idx[j]; idx[j] = c;
}
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха, ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
ただ一つ、ギャップとアウトフローに対処するために、close[i]-close[i-1]ではなく、close[i]-open[i]を増分値として取る方がよいでしょう。
わかりますが、見積もり格差はどうなるのでしょうか? H1用に検討したほうがいいのでは?
"it is better to take close[i]-open[i] as an increment" - maybe percentage change is better?難しいことではない、やろうと思えばできるはずだ。ただ、気配値のギャップやアウトフローを制御するために、close[i]-close[i-1] の代わりにclose[i]-open[i]を増分値として取る必要があります。
close[i-1] とopen[i]が1ティック差で異なる。1stダニと戦う意味は?
ギャップがどうのこうのはわかるが、引用符が落ちるのはどうなんだ? H1用に計算した方がいいのでは?
1バー=1インクリメントの場合、一部のバーが失われることは問題ではありません。増分を2本のバーでカウントすると、多くのスパイクが発生します。
"close[i]-open[i]を増分として 使用したい場合" - 変化率を使用する方が良いのでは?
そう、その方がいいんです。また、対数刻みでもよい。
close[i-1] とopen[i]が1ティック差で異なる。1ティックで戦う意味はあるのか?
歴史のギャップやスキップを解消することが実質的に保証されています。
歴史のギャップや空白をほぼ確実に解消。
1分以内に他のティックでギャップが発生する可能性があります。欠落したバーは、最後に判明したバーの価格から埋める必要があります。
バーが均等に 配置された隙間は、あまり怖くない。不快なのは、ある時間帯に混雑しているもので、それはたいていバーとバーの間の隙間である。
休みの日、短いセッションなど、あるいは全く不明確な理由で小節を落としたなど、「見逃し」というのは曖昧な概念です。シャーロック・ホームズが10年分の1分足を何本も扱うのを見せるより、1本分の増分を計算する方が簡単だと判断したのです。
1) 文字列の数と同じ長さの文字列インデックスの配列を作成し、0からN文字列までの値で埋めます。
2) この配列をシャッフルする
ここで、RandomInteger() は、任意の変形の
3) 次に,これらのインデックスのすべての値をループで取得し,主配列から必要な文字列を取り出すと,インデックスの混合後に擬似ランダムであることが判明します。このアルゴリズムを、先にあげたランダム関数で試してみました。出来上がった配列の最初のn個の値を取って、順にフィルタリングしていくと、数値配列の前半にシフトがあることが判明しました。そして、並んだグループが観察される。これもよくないが、ないよりはましだ。
このアルゴリズムを、先にあげたランダム関数で試してみました。得られた配列から最初のn個の値を取り出し、その配列を順にフィルタリングすると、数列の前半にオフセットがあることが判明したのです。そして、並んだグループが観察されるのですが、これもイマイチですが、ないよりはマシです。
不思議ですね。どう説明すればいいのでしょうね。
別バージョンをコメントアウトしてあるのですが、論理的な理由で好きになれなかったんです。
どのRandomInteger()を使っているのですか? 私はXORを使っています。
close[i-1] とopen[i]が1ティック差で異なる。1ティックで戦う意味はあるのか?
あなたは間違っています) 1目盛り分の差もないので、これらの値は等しくなります。
https://www.mql5.com/ru/docs/runtime/testing
新しい分足が始まる(秒数が0になる)のではなく、ティック(少なくとも1ポイントの価格変化)が来たときに、新しい分足が開きます。