ベイズ回帰 - このアルゴリズムを使ってEAを作った方はいらっしゃいますか? - ページ 45

 
http://www.quantalgos.ru/?p=1898 もしかしたら、このスレッドの作者が得をするかもしれない...。
Предсказание чего угодно с использованием Python | QuantAlgos
  • 2016.03.12
  • www.quantalgos.ru
Небольшая статья с ресурса http://www.talaikis.com/ о построении простой стратегии, использующую наивный байесовский классификатор при создании процесса возврата к среднему. Весь код в статье приведен на языке Python. Это достаточно большая область исследований, но расскажем все очень кратко. Мы попытаемся найти взаимоотношение между...
 
Ilnur Khasanov:
http://www.quantalgos.ru/?p=1898 もしかしたら、このトピックの著者は得をするかもしれません...
平均に戻る際にも、少し違う方法で同じようなことをしました。動作するが、実機で出せない。解決策がまったく見えない問題がある。この方法の主な欠点は、自分が正しいこと、そして市場ではないことを常に証明しなければならないことです。:)
 

疑似乱数発生器。(PRNG)

上で提案した極座標法を用いて、МТ4 PRNGを正規分布の乱数値を持つPRNGに変換してみました。

コードの正しさを視覚的に確認するために、結果を価格チャートに投影してみました。

これは、基本的なPRNGが1000回呼び出した後に表示されるものです。ヒストグラムの矩形の面積は、その垂直スケールの範囲に収まるように生成された乱数の数に比例しています。


さて、その数千のヒット曲をメソッドの計算式で変換すると、次のような結果になります。

というのも、このベルは非常に優秀なのです。

 
Yuri Evseenkov:

上記で提案した極座標法を用いて、MT4のPRNGを正規分布の確率変数を持つPRNGに変換した。

mql4.comのように昔からあるバイク。
 

ベイズ式を応用した試みに。もう一度。

タスクベイズの定理を用いて、まだ来ていない目盛りの値が最も可能性が高いのはどれかを判断する。

与えられた。時系列 x,y.

y=ax+b 最後の目盛から未来への直線。

P(a,b|x,y)=P(x,y|a,b)*P(a)*P(b)/P(x,y); (1) ベイズ式。

P(a,b|x,y) は係数 a と b が将来の目盛りの x と y 座標に対応する確率 である。

この確率(より正確には確率測度)が最大と なるようなa、bを見つける必要が ある。

P(x,y|a,b) - 価格水準によるティック分布の実ヒストグラムを尤度関数とします。この関数は2次元の配列(行列)で定義されます:価格帯 - 確率、ティックの総数に対するこの範囲に入るティックの割合。

P(b) - 増分の正規分布を先験的確率bとする。正規分布の値を持つPRNGが使用されます。

P(a) 係数 a は直線の傾きと予測される増分の符号を決定する。今のところ、以前投稿した線形回帰の コードを使おうと思っています。つまり、そこにある係数aが見つかる確率を一とする。そして、(1)には、このaと与えられたyについて計算されたaとの差を考慮して計算された確率P(a)を代入する。

もしかしたら、各ティックの増分の符号がどのように振る舞うかについて、何かお考えがあるのでしょうか?


 

数式に刻みを入れる必要は絶対にない。そのティックを、毎日行われているFORTSで誰でも生成することができるのです。

問題は、むしろ数学的手法にあるのではない。しかし、適用するデータの選択の妥当性において。

 
なぜ人工ダニを全く取らないのか?高度な数学がなくても予測できるようになります。方法はMQに聞け。

本物のティックを1万個取って、分布を見てください。少なくとも、それは実用的でしょう。
 
Alexey Burnakov:
なぜ、人工チックを全く取らないのか?高度な数学がなくても予測できるようになります。方法はMQに聞け。

本物のティックを1万個取って、分布を見てください。少なくとも、それは実用的でしょう。

つまり、(1)の尤度関数P(x,y|a,b) は、実際のティック(ティック量)の分布であるわけです。正常であることは極めて稀である。そして、P(a)とP(b)は、アプリオリな確率としてとらえた法則による補正確率である。

MQに何を聞けばいいのか?ストラテジーテスターで刻みをモデリングする原理?そう、何らかの原理があるはずなのです。それを知ることで、テスターの「グレイル」を作ることができるかもしれません。しかし、チックの履歴もなく、動作の練習もしていないので、テストモードで開発することはできません。 すべてリアルタイムで行うことになります。

あなたの言葉に興味津々。

"私の実験では回帰や価格値(あるいはその変換)は全く行わず、符号を予測するのですが、これも価格情報の一部と言えるかもしれません。

私のエラーは次のようなものです。

0 1

0 0,58 0,42

1 0,43 0,57

あるいは、おおよそ原文のまま。

1 - 正、0 - 誤:1, 1, 1, 0, 0, 1 , 1, 1, 0, 1

そして、結果として得られる確率分布は、0.5 / 0.5とできるだけ異なるものであるべきです。このような結果の相互不可分性を求めると、二項分布に行き着き、その公式や統計的検定が 数多く存在する」引用終わり。

符号を予測する場合、二項分布はどのような法則になるのでしょうか?成果の相互独立性とは?ありがとうございます。

 
Yuri Evseenkov:

つまり、(1)の尤度関数P(x,y|a,b) は、実際のティック(ティック量)の分布であるわけです。正常であることは非常に稀です。そして、P(a)とP(b)は、アプリオリな確率としてとらえた法則による補正確率である。

MQに何を聞けばいいのか?ストラテジーテスターで刻みをモデリングする原理?そう、何らかの原理があるはずなのです。それを知ることで、テスターの「グレイル」を作ることができるかもしれません。しかし、今のところテストモードで開発することはできません。 すべてはリアルタイムで行われます。

あなたの言葉に興味津々。

"私の実験では回帰や価格値(あるいはその変換)は全く行わず、符号を予測するのですが、これも価格情報の一部と言えるかもしれません。

私のエラーは次のようなものです。

0 1

0 0,58 0,42

1 0,43 0,57

あるいは、おおよそ原文のまま。

1 - 正、0 - 誤:1, 1, 1, 0, 0, 1 , 1, 1, 0, 1

そして、結果として得られる確率分布は、0.5 / 0.5とできるだけ異なるものであるべきです。このような結果の相互独立性を求めると、二項分布になり、これには多くの公式や統計検定が ある」引用終わり。

符号を予測する場合、本当に二項分布が成り立つのでしょうか?成果の相互独立性とは?ありがとうございます。

順番にはい、テスター内のアルゴリズムで刻みを生成しています。本物のダニを使ったテストは、まだリリースされていません。このサイトには、このダニが発生する仕組みについての記事もあります。全く本物のダニではありません。

二項分布について二値変数を予測すると、認識精度を示す2*2行列が得られる。これは基本的に2つのバイナリ変数、ターゲット変数とシミュレーション変数の共同分布である。

ターゲット変数i.i.d.の一連の実現が独立かつ同一分布であれば、多くの基準を適用する可能性が出てきます。コインをひっくり返した結果がまさにそれです。ベルヌーイプロセスである。つまり、事象は互いに独立しているのです。これが成立すれば、確率分布は二項分布に従います。例えば、成功の数にはその確率があり、それはほぼ正規のものである。

漫然と書いていると、遅くなってしまいました。二項分布について私が本当に好きなのは、二次表の場合、カイ二乗基準を適用して、結果がランダムな推測と異なることを有意に示すことです。多項式(非結合平方)の表でも同じことができます。また、バイナリ変数に対しても、多くの機械学習手法が存在する。
 

予測にティックを使うのは危険だと思いますし、モデルはブローカーごとに別々に設定すべきです。

テスターのティックは分足バーのohlc値からテンプレートで生成されているため、ストラテジーテスターからティックを取得すると、実際のものとは大きな違いが生じます(https://www.mql5.com/en/articles/75)。だから、誰もスキャルパーをテストすることなく、すぐに実際の口座に入れ、途中で最適化するのです。

リアルティクについて - ブローカーによって大きく異なる場合があります。例えば、このスレッドhttps://www.mql5.com/en/forum/64228/page2#comment_1960403 (https://c.mql5.com/3/78/tbd.png ) にスクリーンショットが添付されていますが、これは2つの異なるブローカーでの同じ時間枠でのティック増分の分布です。1日から1週間くらいか。一般的に両者は一致するが、一方は価格変動がないまま2倍以上のティックを持つ。10社以上のブローカーを比較すると、特に「サプライズローソク足」については大きな差が出るのではないかと思います。
また、価格を変更せずに全ての目盛りを削除することも可能です。それから、EAではOnTick()イベントをスキップして、前の価格と新しい価格をターミナルに送ることができるというニュアンスもあります。すなわち、1.23456 -> 1.23490 -> 1.23410 ではなく、単に 1.23456 -> 1.23410 です。そして、2回の変更ではなく、あなたのモデルは1回になります。
2つの隣接するティックの時間間隔が定義されていないことが判明し、データのギャップが発生することになりますが、これはまずいのではないでしょうか。
MT4とTickstory Liteプログラム(無料版あり)を使用して、テスターに実際のティックを挿入する必要があります(ブローカーDukascopyから取得されます)。MT4ターミナルのみ、ビルド950未満で使用しないと、無料版のtickstoryではスプレッドが0のテストデータが作成されます。

ティックを使って、平均値を求め、現在の価格が平均値から強く乖離していたら売買するようなことをやってみました。もし利益があったとしても、スプレッドがすべてを食いつぶしていたので、より大きなタイムフレームに移行しました。

The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
  • 2010.06.02
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 allows us to simulate automatic trading, within an embedded strategy tester, by using Expert Advisors and the MQL5 language. This type of simulation is called testing of Expert Advisors, and can be implemented using multithreaded optimization, as well as simultaneously on a number of instruments. In order to provide a thorough testing, a generation of ticks based on the available minute history, needs to be performed. This article provides a detailed description of the algorithm, by which the ticks are generated for the historical testing in the MetaTrader 5 client terminal.