トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 14

 
アレクセイ・ブルナコフ
なるほど、と思われるかもしれません。例えば、ニューラルネットワークが各反復において、予測値からの目標偏差に基づく標準誤差逆伝播を行わず、以前のバージョンの重みで、実際の取引が理想と ポイント異なっているデータを 取得するとする。そして、その情報に基づいて重みを更新する。つまり、情報は機械と並行して流れているはずなのです。もしかしたら、できるかもしれない。

なぜウェイトが必要なのですか?そもそも、なぜそのような話をするのですか?

以前のウェイトが必要なのは理解できたが、今は何も理解していないことが理解できた)

 
mytarmailS:

なぜウェイトが必要なのですか?そもそも、なぜそのような話をするのですか?

前のウェイトが必要なのは理解できたが、何も理解していなかったことが今になって理解できた)

まあ、そう見えるんですけどね ))

重りは必要ない。私はただ、YOUに分かりやすく説明するために、それらを挙げただけです。過去のウェイトでシステムがどのように取引されたかを知る必要があります。取引の結果を何らかの形で統合的に把握する必要があります。すべてです。

重みはアルゴリズムによって更新される。

 

ここでは、単純な関数が機能する。もっと複雑なものを試してみる必要がある。やはり差別化が必要なんです、それがコツです。

library(neuralnet)


y <- as.data.frame(matrix(runif(n = 10000, min = -15, max = 15), ncol = 2))

y$V3 <- runif(n = 5000,  min = -15, max = 15)

y$V4 <- runif(n = 5000,  min = -15, max = 15)

y$V5 <- runif(n = 5000,  min = -15, max = 15)

y$V6 <- runif(n = 5000,  min = -15, max = 15)

y$V7 <- runif(n = 5000,  min = -15, max = 15)

y$V8 <- y$V1 ^ 2 + y$V2 ^ 2

colnames(y) <- c('input_1', 'input_2', 'noise_1', 'noise_2', 'noise_3', 'noise_4', 'noise_5', 'output')


f_f <- function(x, y){

1/2*(y-x)^2

}


print(

nn_model <- neuralnet(formula = output ~ input_1 + input_2 + noise_1

, data = y

, hidden = 1

, threshold = 0.01

, stepmax = 1e+05

, rep = 100

, startweights = NULL

, learningrate.limit = NULL

, learningrate.factor = list(minus = 0.5, plus = 1.2)

, learningrate=NULL

, lifesign = "none"

, lifesign.step = 10

, algorithm = "rprop+"

, err.fct = f_f #"sse"

, act.fct = "logistic"

, linear.output = F

, exclude = NULL

, constant.weights = NULL

, likelihood = FALSE

)

)

 

f_f <-function(x, y) 1/2*(y-x)^2

f_f - ネットワークのエラーをカウントするのですよね?

xはあるべき値(理想曲線)です。

yはあるべき姿(実際の曲線)。

両者の違いは、誤差

以前のローソク足による取引のベクトルが必要で、取引を開始するためのルールが必要で、取引の入力データが必要です。

 
mytarmailS:

f_f <- function(x, y) 1/2*(y-x)^2

f_f - ネットワークのエラーをカウントするのですよね?

xはあるべき値(理想曲線)です。

yは本当のことである(本当の曲線)

両者の違いは、誤差

ローソク足で取引するベクトルが必要だと思うのですが、どのようなルールで取引を開始するのか、これらの入力データがどのように見えるべきかが分かりません。

ほとんど右です。X は ns の予測値のベクトルである。Ygrekは、ネットワークが予測する1小節ごとの価格上昇のベクトル(例えば)です。そして、この関数全体が、NSアルゴリズムが各反復で見ることになる。今のところ結果は出ていません。モデル化する必要があります。

どうやって。ポジションを開くロジックを記述し、スプレッドを直接関数本体に 入力する必要があります。オープンポジションの結果をベクトルに書き込み、ベクトル上で固有特性を計算します。

例:buy<-(y-spread)[x>0]のような感じです。これはロングのベクトルになります。そして、all<-append(buy, sell)とする。

でも、たぶんうまくいかないと思います。関数の種類にはいろいろと制約がある(。
 
その間も私は実験を続けています。ユーロ ドルのみで学習させたところ、検証で小さな陽性の手応えがありました。

現在、MT4でモデルテストを行っている画面を添付します。トレーニングの段階はまだこれからですが...。全結果は明日以降に発表される予定です。Rと連動して、未決済の取引がない場合は1分ごとに計算がかなり長くなります。1999年にスタート。検証は2010年9月より開始いたします。

私は5桁のポイントスプレッド10を使用しています。MOの検証で7-8pipsを期待する。濃くない...。しかし、今はすでにスプレッドが10pipsのDCが見つかるので、ほぼ有意な結果だと思います。
ファイル:
 

同僚から機械学習の講座のリンクが送られてきたのですが、見てみますか?無料なんだけど、なぜかPythonなんだよね((

https://www.udacity.com/course/machine-learning-for-trading--ud501

 
アレクセイ・ヴォルチャンスキー

同僚から機械学習の講座のリンクが送られてきたのですが、見てみますか?コースは無料ですが、なぜかPythonです((

https://www.udacity.com/course/machine-learning-for-trading--ud501

最も効果的です。

1.Rに入れる-5分。

2.GUIとして設計されているため、Rの知識を必要としないrattleパッケージをダウンロードする。

3.スタートアップのコストを削減するためには、私の記事を 利用することができます。解説があり、さらに重要なのは、レディファイルが添付されていることです。私のファイルを見れば、自分のファイルを簡単に用意することができます。

4.6つのモデルを手に入れることができます。

5.ラトルのメインは、機械学習の全サイクルを見ることができることです。

  • 初期データ準備(データマイニング)
  • 模型化
  • 結果評価
  • を、すべてのガラガラ活動のRにボーナステキストとして追加しました。このテキストは、ガラケーの外でも使用することができます。

これだけで、隙間なくある程度の基礎ができ、何より具体的なFXと連動した機械学習の体験ができます。

PS.

ガラガラは、最初のステップだけでなく、その後も、最小限のコスト、何かを見積もる、実験する...といった場面で非常に役に立つはずです。

ピーエスピーエス

もちろん、本がなければどうしようもない。ここには たくさんあります。検索は完璧にできる。

 
mytarmailS:

Dr.Trader さん、詳しい説明ありがとうございました。

あのね、たぶん一番正しいのは、同じジグザグでも、反転そのものを教えること、つまり、3つの状態を与えることです 1)上向きにUターンする

2)ダウンリバーサル

3)Uターンではない

しかし、それを教えるかどうかは、反転をキャッチすることは非常に困難であり、さらに観測の数の歪み、クラス "ではない反転 "は数十または数百倍となる

また、どのような予測因子を使って、どのような結果を出しているのでしょうか?

スペクトル分析を使い始めたところです。最初のテストでは、インジケータよりもずっと良い結果が出ました。ガラガラで実行したところ、トレーニングとテストの誤差は6%程度でしたが、Rを使い始めると誤差が30%に上昇しました。サンサニッチはリトレーニングと言うので、まだあまり理解できませんが

また、スペクトル分析によって、どの期間が市場で支配的であるかを調べ、その期間を指標に使う方法もあります。 歴史に適応しない、適応的な指標を手に入れることができます。

予測変数の作成には、標準的な指標をベースにしています。私自身、このフォーラムのスレッドにあるアイデアを試しながら、まだ実験中です。

私はこの数週間それをやって、今最高の結果は次のとおりです:(多くの計算、私はより速い計算のためにD1タイムフレームを使用しようとしています、後で私はより小さいタイムフレームを使用する予定)。

1)mt5からcsvにエクスポート:ohlc、時間、指標、すべて最後の10バーのために。他のバーの時間は計算できるため、新しい情報は得られないと考え、最近は最新のバーからだけ時間を取るようにしています。数百の「一次」予測器が出てくる。学習結果は「1」または「0」、つまり次のバーでの価格の上昇または下降が要求されます。ジグザグを使った私の方法は安定しておらず、複雑なものです。モデル学習のアルゴリズムが一から完成したら、ジグザグやトレンドの予測に着手するかもしれません。

2) Rでは、利用可能なデータに対して、加算、差分、最小、最大など、さまざまな数学的演算を行っています。すでに1000人以上の予測が出ています。

3) 2段階目以降のゴミが明らかに必要以上に多い。基本部品の記事http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/、 以前SanSanychさんが書かれていた方法でふるい分けしています。PCRモデルそのものを教えるわけではなく、とりあえず予測因子の事前スクリーニングのための関数に落ち着いています。

library('vtreat')
PrunePredictors <- function(srcTable, pruneSig = -1) {
        targetName <- tail(colnames(srcTable), 1)
        
        treatmentsN <- designTreatmentsN(srcTable,setdiff(colnames(srcTable),targetName),targetName, verbose=FALSE)
        if(pruneSig<0){
                pruneSig = 1.0/(ncol(srcTable)-1)
        }

        scoreFrameSorted <- treatmentsN$scoreFrame[,c("origName", "psig", "code")]
        scoreFrameSorted <- subset( scoreFrameSorted, code == "clean")[,1:2]
        scoreFrameSorted <- scoreFrameSorted[with(scoreFrameSorted, order(psig)), ]
        
        scoreFrameSortedPruned <- subset( scoreFrameSorted, psig < pruneSig)
        scoreFrameSortedPruned <- scoreFrameSortedPruned[,1] 
        
        cat("Minimal psig:", scoreFrameSorted[1,2], "\n")
        cat("Maximal psig:", scoreFrameSorted[nrow(scoreFrameSorted),2], "\n")
        cat("Threshold:", pruneSig, "\n")
        cat("Good predictors:", nrow(subset( scoreFrameSorted, psig < pruneSig)), "\n")
        
        return(scoreFrameSortedPruned)
}

srcTable は予測変数のテーブルで,最後の列は必要な学習 結果であるべきです.

その結果、この関数は、有用な情報を持つテーブルの列名を含むリストを返します。また、有用なものが見つからなければ空リストとなる。この方法は、記事中ではあまり意味がないように書かれていますが、実際には非常に適切で、ゴミをよく選別してくれることがわかりました。また、結果の一覧は、関連性の高い順に、より有用なものからそうでないものへと並べ替えられます。

4) 関数が空のリストを返した場合、2番目のステップを再度実行し、利用可能なデータに対して再度異なる数学的組み合わせを生成し、3番目のステップでふるいにかける。この作業を3~4回繰り返す必要があります。繰り返すごとにデータ量が増えていくので、何とかして新しく発生するデータ量を制限したほうがいい。このふるいにかける関数を変更し、リストが空になったら、100~200のベスト結果を返し、そこからだけ新しい予測器を生成するようにすればよいのです。

5)次に、記事によると、メインコンポーネントのモデル自体を学習させる必要があります。今のところ、学習済みモデルの最高のr二乗は0.1ですが、これでは不十分です。記事には、少なくとも0.95が必要だと書かれています。しかし、得られた予測変数に対して他のRモデルを学習させれば、より良い結果が得られるでしょう。私はニューロニクスの経験が最も豊富で、フロントテストでは約37%の誤差で最高の結果が得られました。PCEモデルは再トレーニングなどがなく、より安定しているはずなのですが、今のところ予測変数が手に入りません。

フロントテストでの誤差が30%であれば、かなり儲かるモデルなので、MT5用のExpert Advisorを作ってstrategy testerでチェックしてみてください。

 
アレクセイ・ヴォルチャンスキー

同僚から機械学習の講座のリンクが送られてきたのですが、見てみますか?コースは無料ですが、なぜかPythonです((

https://www.udacity.com/course/machine-learning-for-trading--ud501

PythonのPandasフレームワークに注目し、この講座を受講しました。最初のレッスンは、データ解析というより、まさにこのフレームワークのチュートリアルのような感じです。しかし、チュートリアルは適切で、他の多くの役に立たないトレーニングにありがちな「私はFXのグルです、あなたの目を開かせ、あなたは何百万も儲けるでしょう」ということはなく、最後まで適切なことを話してくれるだろうという期待が持てます。ただ、この講座は株取引を想定したもので、FXを想定していないこともあり、この2つの分野でモデル学習のプロセスが似ているかどうかはわかりません。
理由: