トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 21 1...141516171819202122232425262728...3399 新しいコメント СанСаныч Фоменко 2016.06.20 06:43 #201 Dr.トレーダーYスケールも試してみましたが、(Yスケールありとなしの)両方のケースでR^2が同じになりました(違うパッケージを使っているにもかかわらず!)。Yスケールなら、もっと少ない主成分数で、同じような結果が得られるのではないでしょうか。しかし、すべてのコンポーネントを使用しても、満足のいく結果が得られない場合(私の場合)、違いはないのです。それに、今の私にとってより重要なのは、動作が速いことです。しかし、この方法が予測変数の選択に適しているかどうか、理論的にも実践的にも証明されていません。当初は、すべての予測変数に対して主成分をモデル化し、成分の係数を見て予測変数を選択するというアイデアを持っていました。しかし、ゴミを追加すると、モデルのR^2が低下することに気づきました。予測変数のセットをいろいろ試してみて、R^2が高いものを探すのは理にかなっていますが、あくまで理論上の話です。私はここで定期的に次のような提案をしています。もしあなたが自分のセットを蒸留して私に送ってくれたら、私の結果とあなたの結果を比較しますよ。私にとっては、.RDataが理想です。ターゲットが2値で、予測変数が実数であることが望ましいフレーム。 Alexey Burnakov 2016.06.20 08:58 #202 Dr.トレーダー以前はフォレストを学習させ、検証用サンプルでエラーを返していました。原理的にはうまくいきました。森が少しでもオーバートレーニングになると、誤差が50%になる傾向があるのです。今はGetPCrsquared()、その上のコードを使っています。feature_selector_modeller.txt にあるあなたの例も持っていますが、それを理解して必要なコードフラグメントを取得しなければならないので、まだ自分のデータを確認していません。そこで必要なものをご紹介します。library(infotheo) # measured in nats, converted to bitslibrary(scales)library(GenSA)#get datasampleA <- read.table('C:/Users/aburnakov/Documents/Private/dummy_set_features.csv' , sep= ',' , header = T)#calculate parameterspredictor_number <- dim(sampleA)[2] - 1sample_size <- dim(sampleA)[1]par_v <- runif(predictor_number, min = 0, max = 1)par_low <- rep(0, times = predictor_number)par_upp <- rep(1, times = predictor_number)#load functions to memoryshuffle_f_inp <- function(x = data.frame(), iterations_inp, quantile_val_inp){ mutins <- c(1:iterations_inp) for (count in 1:iterations_inp){ xx <- data.frame(1:dim(x)[1]) for (count1 in 1:(dim(x)[2] - 1)){ y <- as.data.frame(x[, count1]) y$count <- sample(1 : dim(x)[1], dim(x)[1], replace = F) y <- y[order(y$count), ] xx <- cbind(xx, y[, 1]) } mutins[count] <- multiinformation(xx[, 2:dim(xx)[2]]) } quantile(mutins, probs = quantile_val_inp) }shuffle_f <- function(x = data.frame(), iterations, quantile_val){ height <- dim(x)[1] mutins <- c(1:iterations) for (count in 1:iterations){ x$count <- sample(1 : height, height, replace = F) y <- as.data.frame(c(x[dim(x)[2] - 1], x[dim(x)[2]])) y <- y[order(y$count), ] x[dim(x)[2]] <- NULL x[dim(x)[2]] <- NULL x$dep <- y[, 1] rm(y) receiver_entropy <- entropy(x[, dim(x)[2]]) received_inf <- mutinformation(x[, 1 : dim(x)[2] - 1], x[, dim(x)[2]]) corr_ff <- received_inf / receiver_entropy mutins[count] <- corr_ff } quantile(mutins, probs = quantile_val) }############### the fitness functionfitness_f <- function(par){ indexes <- c(1:predictor_number) for (i in 1:predictor_number){ if (par[i] >= threshold) { indexes[i] <- i } else { indexes[i] <- 0 } } local_predictor_number <- 0 for (i in 1:predictor_number){ if (indexes[i] > 0) { local_predictor_number <- local_predictor_number + 1 } } if (local_predictor_number > 1) { sampleAf <- as.data.frame(sampleA[, c(indexes[], dim(sampleA)[2])]) pred_entrs <- c(1:local_predictor_number) for (count in 1:local_predictor_number){ pred_entrs[count] <- entropy(sampleAf[count]) } max_pred_ent <- sum(pred_entrs) - max(pred_entrs) pred_multiinf <- multiinformation(sampleAf[, 1:dim(sampleAf)[2] - 1]) pred_multiinf <- pred_multiinf - shuffle_f_inp(sampleAf, iterations_inp, quantile_val_inp) if (pred_multiinf < 0){ pred_multiinf <- 0 } pred_mult_perc <- pred_multiinf / max_pred_ent inf_corr_val <- shuffle_f(sampleAf, iterations, quantile_val) receiver_entropy <- entropy(sampleAf[, dim(sampleAf)[2]]) received_inf <- mutinformation(sampleAf[, 1:local_predictor_number], sampleAf[, dim(sampleAf)[2]]) if (inf_corr_val - (received_inf / receiver_entropy) < 0){ fact_ff <- (inf_corr_val - (received_inf / receiver_entropy)) * (1 - pred_mult_perc) } else { fact_ff <- inf_corr_val - (received_inf / receiver_entropy) } } else if (local_predictor_number == 1) { sampleAf<- as.data.frame(sampleA[, c(indexes[], dim(sampleA)[2])]) inf_corr_val <- shuffle_f(sampleAf, iterations, quantile_val) receiver_entropy <- entropy(sampleAf[, dim(sampleAf)[2]]) received_inf <- mutinformation(sampleAf[, 1:local_predictor_number], sampleAf[, dim(sampleAf)[2]]) fact_ff <- inf_corr_val - (received_inf / receiver_entropy) } else { fact_ff <- 0 } return(fact_ff)}########## estimating threshold for variable inclusioniterations = 5quantile_val = 1iterations_inp = 1quantile_val_inp = 1levels_arr <- numeric()for (i in 1:predictor_number){ levels_arr[i] <- length(unique(sampleA[, i]))}mean_levels <- mean(levels_arr) optim_var_num <- log(x = sample_size / 100, base = round(mean_levels, 0))if (optim_var_num / predictor_number < 1){ threshold <- 1 - optim_var_num / predictor_number } else { threshold <- 0.5 }#run feature selectionstart <- Sys.time()sao <- GenSA(par = par_v, fn = fitness_f, lower = par_low, upper = par_upp , control = list( #maxit = 10 max.time = 1200 , smooth = F , simple.function = F))trace_ff <- data.frame(sao$trace)$function.valueplot(trace_ff, type = "l")percent(- sao$value)final_vector <- c((sao$par >= threshold), T)names(sampleA)[final_vector]final_sample <- as.data.frame(sampleA[, final_vector])Sys.time() - startデータフレームでは、一番右の列が対象列となる。すべての列はカテゴリ(ineteger、character、factor)でなければなりません。そして、すべてのビブリングをロードする必要があります。数値をカテゴリー変数に変換する方法を示すコードの一部。disc_levels <- 3 # сколько равночастотных уровней переменной создаетсяfor (i in 1:56){ naming <- paste(names(dat[i]), 'var', sep = "_") dat[, eval(naming)] <- discretize(dat[, eval(names(dat[i]))], disc = "equalfreq", nbins = disc_levels)[,1] } Machine learning in trading: Programming tutorials Python in algorithmic trading mytarmailS 2016.06.20 09:47 #203 インターネット上でこんな面白い機能を見つけました。data_driven_time_warp <- function (y) { cbind( x = cumsum(c(0, abs(diff(y)))), y = y ) } y <- cumsum(rnorm(200))+1000 i <- seq(1,length(y),by=10) op <- par(mfrow=c(2,1), mar=c(.1,.1,.1,.1)) plot(y, type="l", axes = FALSE) abline(v=i, col="grey") lines(y, lwd=3) box() d <- data_driven_time_warp(y) plot(d, type="l", axes=FALSE) abline(v=d[i,1], col="grey") lines(d, lwd=3) box() par(op)このような形であれば、アルゴリズムがデータをよりよく認識できるかもしれませんね?しかし、1つの問題があります。関数の出力は変数 "d" であり、それは2列 "x" と "y" の行列を持っています、1つは価格と2番目のアルゴリズムによって湾曲した時間を表し、問題はそれがそのプロパティを失うことはありませんようにベクトルにこの行列を有効にする方法です。 Dr. Trader 2016.06.20 10:54 #204 サンサニッチ・フォメンコ私はここで定期的に次のような提案をしています。もし、あなたのセットを私に配布していただければ、私の結果とあなたの結果を比較します。私にとっては、.RDataが理想です。2値のターゲットと予測変数が実数であることが望ましいフレーム。アタッチメントは、私の最も得意とする予測因子である。TrainDataは2015年のeurusdのD1、fronttestDataは2016年1月1日から6月までのD1。実際の取引では、同じ設定で1ヶ月以上取引することはまずないので、このモデルの収益性が実際にどの程度続くのかを確かめたかったのです。fronttestData1、fronttestData2、fronttestData3はfronttestDataから、1月分のみ、2月分のみ、3月分のみを切り出したものである。本当に興味があるのはfronttestData1の誤差を小さくすることだけで、あとは研究用です。予測器セットは、主に指標とその間の異なる計算を含んでいる。fronttestのnnetエラーはfronttestData1で30%、反復制御で学習し、内部ニューロン数を適合させました。この30%はたまたまだと思うのですが、2015年3月から2016年2月にかけて、このモデルは市場のあるトレンドを捉えました。でも、残りの期間がマージされないというのは、もう良いですね。mt5 tester 2014.01-2016.06の画像ですが、トレーニング期間に枠で印をつけました。すでに、より良いものになっています :) 。今のところ、これが私の限界です。私は、指標の多くの問題を解決しなければならない、すなわち、彼らのデフォルトの設定は厳密に時間枠に縛られている、例えば、H1で私の経験は完全に役に立たない、H1で指標の選択のための同じアルゴリズムがすべてをゴミと見なします。そのバリエーションをパラメータを変えて初期セットに加えるか、自分でohlcからランダムな指標を生成する必要がありますね。 ファイル: ohlc1timewindic_d1_2015.zip 66 kb Dr. Trader 2016.06.20 11:02 #205 アレクセイ・ブルナコフを取るには、これがある。その方が納得できますね、ありがとうございます。1つの指標に3つのカテゴリーだけではダメなようです。論理的には100レベル以上作ることになるのですが、その方がいいのか、アルゴリズムのセンスが緩んでしまうのか。 Alexey Burnakov 2016.06.20 12:07 #206 Dr.トレーダーその方が納得できますね、ありがとうございます。1つの指標に3つのカテゴリーだけではダメなようです。論理的には100レベル以上作ることになりますが、そのほうがいいのか、それともアルゴリズムの意味がなくなってしまうのか。アルゴリズムが意味をなさなくなる。アルゴリズムは、入力変数のレベルの 総数をカウントし、これらのレベルの応答レベルによって分配される。したがって、各入力レベルの応答値の数が非常に少ない場合、確率の歪みの統計的な有意性を評価することができなくなる。100のレベルを作れば、たしかに多くの変数が存在することになります。その場合、アルゴリズムはどの部分集合に対しても有意差ゼロを返しますが、これは限られたサンプルサイズを考えれば妥当なことです。例えが良いですね。入力レベル|観測回数1 1502 120...9 90ここで、応答内の有意性を推定することができますの例 - 悪い。入力レベル112 5...357 2...1045 1回答内の有意性はここでは推定できない Alexey Burnakov 2016.06.20 12:11 #207 Dr.トレーダーアタッチメントは、私の最も得意とする予測因子である。TrainDataは2015年のeurusdのD1、fronttestDataは2016年1月1日から6月までのD1。実際の取引では、同じ設定で1ヶ月以上取引することはまずないので、このモデルの収益性が実際にどれくらい続くのかを確かめたかったのです。fronttestData1、fronttestData2、fronttestData3はfronttestDataから、1月分のみ、2月分のみ、3月分のみを切り出したものである。本当に興味があるのはfronttestData1の誤差を小さくすることだけで、あとは研究用です。予測器セットは、主に指標とその間の異なる計算を含んでいる。fronttestのnnet errorはfronttestData1で30%、反復制御で学習し、内部ニューロン数を適合させました。この30%はたまたまだと思うのですが、2015年3月から2016年2月にかけて、このモデルは市場のあるトレンドを捉えました。でも、残りの期間がマージされないというのは、もう良いですね。mt5 tester 2014.01-2016.06の画像ですが、トレーニング期間に枠で印をつけました。もう、それ以上です :) 。今のところ、これが私の限界です。私は、指標の多くの問題を解決しなければならない、すなわち、彼らのデフォルトの設定は厳密に時間枠に縛られている、例えば、H1で私の経験は完全に役に立たない、H1で指標の選択のための同じアルゴリズムがすべてをゴミと見なします。私は、オリジナルの指標セットに、異なるパラメータを持つ多くのバリエーションを追加するか、どうにかしてohlcからランダムな指標を生成する必要があります。悪くはないが、サンプル外の期間そのものが小さい。また、サンプル外のトレードがどれくらいあるのかも不明です。何十人、何百人といますが、順番は? СанСаныч Фоменко 2016.06.20 12:22 #208 Dr.トレーダーアタッチメントは、私の最も得意とする予測因子である。TrainDataは2015年のeurusdのD1、fronttestDataは2016年1月1日から6月までのD1。実際の取引では、同じ設定で1ヶ月以上取引することはまずないので、このモデルの収益性が実際にどれくらい続くのかを確かめたかったのです。fronttestData1、fronttestData2、fronttestData3はfronttestDataから、1月分のみ、2月分のみ、3月分のみを切り出したものである。本当に興味があるのはfronttestData1の誤差を小さくすることだけで、あとは研究用です。予測器セットは、主に指標とその間の異なる計算を含んでいる。fronttestのnnet errorはfronttestData1で30%、反復制御で学習し、内部ニューロン数を適合させました。この30%はたまたまだと思うのですが、2015年3月から2016年2月にかけて、このモデルは市場のあるトレンドを捉えました。でも、残りの期間がマージされないというのは、もう良いですね。mt5 tester 2014.01-2016.06の画像ですが、トレーニング期間に枠で印をつけました。もう、それ以上です :) 。今のところ、これが私の限界です。私は、指標の多くの問題を解決しなければならない、すなわち、彼らのデフォルトの設定は厳密に時間枠に縛られている、例えば、H1で私の経験は完全に役に立たない、H1で指標の選択のための同じアルゴリズムがすべてをゴミと見なします。私は、オリジナルの指標セットに、異なるパラメータを持つ多くのバリエーションを追加するか、どうにかしてohlcからランダムな指標を生成する必要があります。見てきました。全データセットで107行(107個の観測値)というのは、正しく理解できましたか? Dr. Trader 2016.06.20 12:37 #209 サンサニッチ・フォメンコ見てみた。データセットの合計が107行(107個の観測値)であることは正しく理解されましたか?いいえ、トレーニングセットには250数行(2015年の取引日数)があります。trainDataのテーブルでモデルを学習させました。fronttestData1でテストしてみました。それ以外は追加チェック用なので、無視しても大丈夫ですtrainData - 2015年の1年間。 fronttestData1 - 2016年1月 fronttestData2 - 2016年2月 fronttestData3 - 2016年3月 fronttestData - 2016年1月 - 2016年6月 СанСаныч Фоменко 2016.06.20 13:05 #210 Dr.トレーダーいいえ、トレーニングセットには250数行(2015年の取引日数)があります。trainDataテーブルでモデルを学習させました。fronttestData1でテストしてみました。それ以外は余計なチェックのためなので、無視していただいて結構です。trainData - 2015年の1年間。 fronttestData1 - 2016年1月 fronttestData2 - 2016年2月 fronttestData3 - 2016年3月 fronttestData - 2016年1月 - 2016年6月私の場合、これはほとんどありません。統計を使っています。現在のウィンドウでも107列は私にはとても小さいです。現在のウィンドウは400枚以上使っています。一般に、あなたのセットでは、オブザベーションの数は予測変数の数に匹敵します。これらは非常に特殊なセットです。なんとなくですが、このようなセットには特別な方法が必要なのではと見ています。そのような問題がないため、参考文献はありません。 残念ながら、私の方法はあなたのデータには適していません。 1...141516171819202122232425262728...3399 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Yスケールも試してみましたが、(Yスケールありとなしの)両方のケースでR^2が同じになりました(違うパッケージを使っているにもかかわらず!)。
Yスケールなら、もっと少ない主成分数で、同じような結果が得られるのではないでしょうか。しかし、すべてのコンポーネントを使用しても、満足のいく結果が得られない場合(私の場合)、違いはないのです。それに、今の私にとってより重要なのは、動作が速いことです。しかし、この方法が予測変数の選択に適しているかどうか、理論的にも実践的にも証明されていません。当初は、すべての予測変数に対して主成分をモデル化し、成分の係数を見て予測変数を選択するというアイデアを持っていました。しかし、ゴミを追加すると、モデルのR^2が低下することに気づきました。予測変数のセットをいろいろ試してみて、R^2が高いものを探すのは理にかなっていますが、あくまで理論上の話です。
私はここで定期的に次のような提案をしています。もしあなたが自分のセットを蒸留して私に送ってくれたら、私の結果とあなたの結果を比較しますよ。
私にとっては、.RDataが理想です。ターゲットが2値で、予測変数が実数であることが望ましいフレーム。
以前はフォレストを学習させ、検証用サンプルでエラーを返していました。原理的にはうまくいきました。森が少しでもオーバートレーニングになると、誤差が50%になる傾向があるのです。
今はGetPCrsquared()、その上のコードを使っています。feature_selector_modeller.txt にあるあなたの例も持っていますが、それを理解して必要なコードフラグメントを取得しなければならないので、まだ自分のデータを確認していません。
そこで必要なものをご紹介します。
library(infotheo) # measured in nats, converted to bits
library(scales)
library(GenSA)
#get data
sampleA <- read.table('C:/Users/aburnakov/Documents/Private/dummy_set_features.csv'
, sep= ','
, header = T)
#calculate parameters
predictor_number <- dim(sampleA)[2] - 1
sample_size <- dim(sampleA)[1]
par_v <- runif(predictor_number, min = 0, max = 1)
par_low <- rep(0, times = predictor_number)
par_upp <- rep(1, times = predictor_number)
#load functions to memory
shuffle_f_inp <- function(x = data.frame(), iterations_inp, quantile_val_inp){
mutins <- c(1:iterations_inp)
for (count in 1:iterations_inp){
xx <- data.frame(1:dim(x)[1])
for (count1 in 1:(dim(x)[2] - 1)){
y <- as.data.frame(x[, count1])
y$count <- sample(1 : dim(x)[1], dim(x)[1], replace = F)
y <- y[order(y$count), ]
xx <- cbind(xx, y[, 1])
}
mutins[count] <- multiinformation(xx[, 2:dim(xx)[2]])
}
quantile(mutins, probs = quantile_val_inp)
}
shuffle_f <- function(x = data.frame(), iterations, quantile_val){
height <- dim(x)[1]
mutins <- c(1:iterations)
for (count in 1:iterations){
x$count <- sample(1 : height, height, replace = F)
y <- as.data.frame(c(x[dim(x)[2] - 1], x[dim(x)[2]]))
y <- y[order(y$count), ]
x[dim(x)[2]] <- NULL
x[dim(x)[2]] <- NULL
x$dep <- y[, 1]
rm(y)
receiver_entropy <- entropy(x[, dim(x)[2]])
received_inf <- mutinformation(x[, 1 : dim(x)[2] - 1], x[, dim(x)[2]])
corr_ff <- received_inf / receiver_entropy
mutins[count] <- corr_ff
}
quantile(mutins, probs = quantile_val)
}
############### the fitness function
fitness_f <- function(par){
indexes <- c(1:predictor_number)
for (i in 1:predictor_number){
if (par[i] >= threshold) {
indexes[i] <- i
} else {
indexes[i] <- 0
}
}
local_predictor_number <- 0
for (i in 1:predictor_number){
if (indexes[i] > 0) {
local_predictor_number <- local_predictor_number + 1
}
}
if (local_predictor_number > 1) {
sampleAf <- as.data.frame(sampleA[, c(indexes[], dim(sampleA)[2])])
pred_entrs <- c(1:local_predictor_number)
for (count in 1:local_predictor_number){
pred_entrs[count] <- entropy(sampleAf[count])
}
max_pred_ent <- sum(pred_entrs) - max(pred_entrs)
pred_multiinf <- multiinformation(sampleAf[, 1:dim(sampleAf)[2] - 1])
pred_multiinf <- pred_multiinf - shuffle_f_inp(sampleAf, iterations_inp, quantile_val_inp)
if (pred_multiinf < 0){
pred_multiinf <- 0
}
pred_mult_perc <- pred_multiinf / max_pred_ent
inf_corr_val <- shuffle_f(sampleAf, iterations, quantile_val)
receiver_entropy <- entropy(sampleAf[, dim(sampleAf)[2]])
received_inf <- mutinformation(sampleAf[, 1:local_predictor_number], sampleAf[, dim(sampleAf)[2]])
if (inf_corr_val - (received_inf / receiver_entropy) < 0){
fact_ff <- (inf_corr_val - (received_inf / receiver_entropy)) * (1 - pred_mult_perc)
} else {
fact_ff <- inf_corr_val - (received_inf / receiver_entropy)
}
} else if (local_predictor_number == 1) {
sampleAf<- as.data.frame(sampleA[, c(indexes[], dim(sampleA)[2])])
inf_corr_val <- shuffle_f(sampleAf, iterations, quantile_val)
receiver_entropy <- entropy(sampleAf[, dim(sampleAf)[2]])
received_inf <- mutinformation(sampleAf[, 1:local_predictor_number], sampleAf[, dim(sampleAf)[2]])
fact_ff <- inf_corr_val - (received_inf / receiver_entropy)
} else {
fact_ff <- 0
}
return(fact_ff)
}
########## estimating threshold for variable inclusion
iterations = 5
quantile_val = 1
iterations_inp = 1
quantile_val_inp = 1
levels_arr <- numeric()
for (i in 1:predictor_number){
levels_arr[i] <- length(unique(sampleA[, i]))
}
mean_levels <- mean(levels_arr)
optim_var_num <- log(x = sample_size / 100, base = round(mean_levels, 0))
if (optim_var_num / predictor_number < 1){
threshold <- 1 - optim_var_num / predictor_number
} else {
threshold <- 0.5
}
#run feature selection
start <- Sys.time()
sao <- GenSA(par = par_v, fn = fitness_f, lower = par_low, upper = par_upp
, control = list(
#maxit = 10
max.time = 1200
, smooth = F
, simple.function = F))
trace_ff <- data.frame(sao$trace)$function.value
plot(trace_ff, type = "l")
percent(- sao$value)
final_vector <- c((sao$par >= threshold), T)
names(sampleA)[final_vector]
final_sample <- as.data.frame(sampleA[, final_vector])
Sys.time() - start
データフレームでは、一番右の列が対象列となる。
すべての列はカテゴリ(ineteger、character、factor)でなければなりません。
そして、すべてのビブリングをロードする必要があります。
数値をカテゴリー変数に変換する方法を示すコードの一部。
disc_levels <- 3 # сколько равночастотных уровней переменной создается
for (i in 1:56){
naming <- paste(names(dat[i]), 'var', sep = "_")
dat[, eval(naming)] <- discretize(dat[, eval(names(dat[i]))], disc = "equalfreq", nbins = disc_levels)[,1]
}
インターネット上でこんな面白い機能を見つけました。
このような形であれば、アルゴリズムがデータをよりよく認識できるかもしれませんね?しかし、1つの問題があります。関数の出力は変数 "d" であり、それは2列 "x" と "y" の行列を持っています、1つは価格と2番目のアルゴリズムによって湾曲した時間を表し、問題はそれがそのプロパティを失うことはありませんようにベクトルにこの行列を有効にする方法です。
私はここで定期的に次のような提案をしています。もし、あなたのセットを私に配布していただければ、私の結果とあなたの結果を比較します。
私にとっては、.RDataが理想です。2値のターゲットと予測変数が実数であることが望ましいフレーム。
アタッチメントは、私の最も得意とする予測因子である。TrainDataは2015年のeurusdのD1、fronttestDataは2016年1月1日から6月までのD1。実際の取引では、同じ設定で1ヶ月以上取引することはまずないので、このモデルの収益性が実際にどの程度続くのかを確かめたかったのです。fronttestData1、fronttestData2、fronttestData3はfronttestDataから、1月分のみ、2月分のみ、3月分のみを切り出したものである。本当に興味があるのはfronttestData1の誤差を小さくすることだけで、あとは研究用です。予測器セットは、主に指標とその間の異なる計算を含んでいる。fronttestのnnetエラーはfronttestData1で30%、反復制御で学習し、内部ニューロン数を適合させました。この30%はたまたまだと思うのですが、2015年3月から2016年2月にかけて、このモデルは市場のあるトレンドを捉えました。でも、残りの期間がマージされないというのは、もう良いですね。
mt5 tester 2014.01-2016.06の画像ですが、トレーニング期間に枠で印をつけました。すでに、より良いものになっています :) 。今のところ、これが私の限界です。私は、指標の多くの問題を解決しなければならない、すなわち、彼らのデフォルトの設定は厳密に時間枠に縛られている、例えば、H1で私の経験は完全に役に立たない、H1で指標の選択のための同じアルゴリズムがすべてをゴミと見なします。そのバリエーションをパラメータを変えて初期セットに加えるか、自分でohlcからランダムな指標を生成する必要がありますね。
を取るには、これがある。
その方が納得できますね、ありがとうございます。1つの指標に3つのカテゴリーだけではダメなようです。論理的には100レベル以上作ることになるのですが、その方がいいのか、アルゴリズムのセンスが緩んでしまうのか。
その方が納得できますね、ありがとうございます。1つの指標に3つのカテゴリーだけではダメなようです。論理的には100レベル以上作ることになりますが、そのほうがいいのか、それともアルゴリズムの意味がなくなってしまうのか。
アルゴリズムが意味をなさなくなる。アルゴリズムは、入力変数のレベルの 総数をカウントし、これらのレベルの応答レベルによって分配される。したがって、各入力レベルの応答値の数が非常に少ない場合、確率の歪みの統計的な有意性を評価することができなくなる。
100のレベルを作れば、たしかに多くの変数が存在することになります。その場合、アルゴリズムはどの部分集合に対しても有意差ゼロを返しますが、これは限られたサンプルサイズを考えれば妥当なことです。
例えが良いですね。
入力レベル|観測回数
1 150
2 120
...
9 90
ここで、応答内の有意性を推定することができます
の例 - 悪い。
入力レベル
112 5
...
357 2
...
1045 1
回答内の有意性はここでは推定できない
アタッチメントは、私の最も得意とする予測因子である。TrainDataは2015年のeurusdのD1、fronttestDataは2016年1月1日から6月までのD1。実際の取引では、同じ設定で1ヶ月以上取引することはまずないので、このモデルの収益性が実際にどれくらい続くのかを確かめたかったのです。fronttestData1、fronttestData2、fronttestData3はfronttestDataから、1月分のみ、2月分のみ、3月分のみを切り出したものである。本当に興味があるのはfronttestData1の誤差を小さくすることだけで、あとは研究用です。予測器セットは、主に指標とその間の異なる計算を含んでいる。fronttestのnnet errorはfronttestData1で30%、反復制御で学習し、内部ニューロン数を適合させました。この30%はたまたまだと思うのですが、2015年3月から2016年2月にかけて、このモデルは市場のあるトレンドを捉えました。でも、残りの期間がマージされないというのは、もう良いですね。
mt5 tester 2014.01-2016.06の画像ですが、トレーニング期間に枠で印をつけました。もう、それ以上です :) 。今のところ、これが私の限界です。私は、指標の多くの問題を解決しなければならない、すなわち、彼らのデフォルトの設定は厳密に時間枠に縛られている、例えば、H1で私の経験は完全に役に立たない、H1で指標の選択のための同じアルゴリズムがすべてをゴミと見なします。私は、オリジナルの指標セットに、異なるパラメータを持つ多くのバリエーションを追加するか、どうにかしてohlcからランダムな指標を生成する必要があります。
悪くはないが、サンプル外の期間そのものが小さい。
また、サンプル外のトレードがどれくらいあるのかも不明です。何十人、何百人といますが、順番は?
アタッチメントは、私の最も得意とする予測因子である。TrainDataは2015年のeurusdのD1、fronttestDataは2016年1月1日から6月までのD1。実際の取引では、同じ設定で1ヶ月以上取引することはまずないので、このモデルの収益性が実際にどれくらい続くのかを確かめたかったのです。fronttestData1、fronttestData2、fronttestData3はfronttestDataから、1月分のみ、2月分のみ、3月分のみを切り出したものである。本当に興味があるのはfronttestData1の誤差を小さくすることだけで、あとは研究用です。予測器セットは、主に指標とその間の異なる計算を含んでいる。fronttestのnnet errorはfronttestData1で30%、反復制御で学習し、内部ニューロン数を適合させました。この30%はたまたまだと思うのですが、2015年3月から2016年2月にかけて、このモデルは市場のあるトレンドを捉えました。でも、残りの期間がマージされないというのは、もう良いですね。
mt5 tester 2014.01-2016.06の画像ですが、トレーニング期間に枠で印をつけました。もう、それ以上です :) 。今のところ、これが私の限界です。私は、指標の多くの問題を解決しなければならない、すなわち、彼らのデフォルトの設定は厳密に時間枠に縛られている、例えば、H1で私の経験は完全に役に立たない、H1で指標の選択のための同じアルゴリズムがすべてをゴミと見なします。私は、オリジナルの指標セットに、異なるパラメータを持つ多くのバリエーションを追加するか、どうにかしてohlcからランダムな指標を生成する必要があります。
見てきました。
全データセットで107行(107個の観測値)というのは、正しく理解できましたか?
見てみた。
データセットの合計が107行(107個の観測値)であることは正しく理解されましたか?
いいえ、トレーニングセットには250数行(2015年の取引日数)があります。trainDataのテーブルでモデルを学習させました。fronttestData1でテストしてみました。それ以外は追加チェック用なので、無視しても大丈夫です
trainData - 2015年の1年間。
fronttestData1 - 2016年1月
fronttestData2 - 2016年2月
fronttestData3 - 2016年3月
fronttestData - 2016年1月 - 2016年6月
いいえ、トレーニングセットには250数行(2015年の取引日数)があります。trainDataテーブルでモデルを学習させました。fronttestData1でテストしてみました。それ以外は余計なチェックのためなので、無視していただいて結構です。
trainData - 2015年の1年間。
fronttestData1 - 2016年1月
fronttestData2 - 2016年2月
fronttestData3 - 2016年3月
fronttestData - 2016年1月 - 2016年6月
私の場合、これはほとんどありません。統計を使っています。現在のウィンドウでも107列は私にはとても小さいです。現在のウィンドウは400枚以上使っています。
一般に、あなたのセットでは、オブザベーションの数は予測変数の数に匹敵します。これらは非常に特殊なセットです。なんとなくですが、このようなセットには特別な方法が必要なのではと見ています。そのような問題がないため、参考文献はありません。
残念ながら、私の方法はあなたのデータには適していません。