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

 
Maxim Dmitrievsky:
まあ、5~15刻みで、
と同じになります。

Matの期待値が30点を超えたのは小刻みな動きだけですが、どこで観測できるのでしょうか?2014~2018年のサンプルでトレーニングし、2020年に働く......それは増分のどこにあるのでしょうか。

マキシム・ドミトリエフスキー
あるいは、まず相関関係ですべての予測因子を除外し(時間にして数秒)、残りの5~15を取る(強さからそれだけの数が得られた場合)。

このように、計量経済学は 時間を節約してくれるのです。

手に入れたものよりも良いものに挑戦してみたいですか?サンプルを投げる--大したものではありません。

 
マキシム・ドミトリエフスキー

死ぬまでの戦略を考えてみた・・・。

長い時間先の相場の特性を予測したらどうだろう? そして予測した特性で系列を再構築し、そこから学習し、このモデルで相場を取引する...この方向で考えてみたことはありますか?


例えば、市場のスペクトルを予測するために...

未来を知ることはできないが、想像することはできる」みたいなね。
 
Aleksey Vyazmikin:

そこで、研究の第一段階を行った

どれだけのパワーが入ったのか...。

 
mytarmailS:

どれだけのエネルギーが注ぎ込まれたのか...。

すべての懐疑論者に贈る。

 
マキシム・ドミトリエフスキー

あるいは、まず相関関係ですべての予測因子をふるい落とし(数秒の時間)、残りの5~15を取る(そんなにたくさん取れるなら)。

でも、あなたのアイデアを確認します。私にとっては難しいことではありません。では、どのような相関係数をとればいいのでしょうか?そして、残った予測因子の中から5~15個を選ぶ方法-具体的に書く-そこで測定して順番に並べる方法とか?

 
mytarmailS:

どれだけパワーがなくなったのか...。

他人の金を勘定するよりも、Rのヒントを教えてくれませんか?

相関を計算し、相関のある列を削除するスクリプトを以下に示します。

library('caret')

df1 = read.csv("F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")

df1 <- df1[, ! colnames(df1)  %in% 
           c("Target_100_Buy",
             "Target_100_Sell",
             "Target_P",
             "Time",
             "Target_100")  ] # удаляем не нужные колонки
print (df1)
df2 = cor(df1)
hc = findCorrelation(df2, cutoff=0.3) # putt any value as a "cutoff" 
hc = sort(hc)
reduced_Data = df1[,-c(hc)]
print (reduced_Data)
write.table(reduced_Data, file = "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\outfile_03.csv",
            append = FALSE, quote = FALSE, sep=";",
            eol = "\n", na = "NA", dec = ".", row.names = FALSE,
            col.names = TRUE, qmethod = c("escape", "double"),
            fileEncoding = "")

そして、2つの疑問があります。

1.どのようにループのためにこのコードの実行を行うには、すなわち、私は係数を増加させ、係数のインデックスで保存するファイル名を変更したり、ループ内で生成された別のディレクトリにする必要があります。

2.計算のための補助列を削除しているのですが、相関列を削除した後に現れるテーブル(df2)にコピーするにはどうすればよいのでしょうか。

ご返信ありがとうございます。

 
Aleksey Vyazmikin:

他人の金を数えるより、Rについてアドバイスしてくれないか?

相関を計算して、相関のある列を削除するようなスクリプトを作りました。

そして、2つの疑問があります。

1.このコードをforループで実行させるにはどうすればよいでしょうか。すなわち、係数を増加させ、ファイル名を変えて係数のインデックスで保存するか、ループ内で生成される別のディレクトリに保存する必要があります。

2.計算のための補助列を削除しているのですが、相関列を削除した後に現れるテーブル(df2)にコピーするにはどうすればよいのでしょうか。

ご返信ありがとうございます。

質問に対する回答 (2)

library('caret')
#df1 загруженная дата
df1 <- as.data.frame(matrix(nrow = 100,ncol = 10,data = sample(1:10,1000,replace = T)))
# head(df1)

not <- c("V1","V2","V3") #  имена переменных которые нам НЕ нужны для корреляции

df2 <-  cor(     df1[, ! colnames(df1)  %in%  not]      )  
# head(df2)

not.need <- findCorrelation(df2, cutoff=0.1) # putt any value as a "cutoff" 
not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
# head(not.need.nms)

# получаем изначальную  df1 только без признаков что не прошли отбор
reduced_Data <- df1[, ! colnames(df1)  %in%  not.need.nms]
# head(reduced_Data)


同じことをするけれども、よりきれいに見えるような関数を書いてくれませんか?

get.findCorrelation <- function(data , not.used.colums , cor.coef){
library('caret')
df2 <-  cor(     data[, ! colnames(data)  %in%  not.used.colums])  
not.need <- findCorrelation(df2, cutoff=cor.coef) 
not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
reduced_Data <- data[, ! colnames(data)  %in%  not.need.nms]
return(reduced_Data)}

gf <- get.findCorrelation(data = df1 , 
                          not.used.colums = c("V1","V2","V3"),
                          cor.coef = 0.1)

が入力されます。

data = df1
Corel の解析に使用しない列を指定する

not.used.colums = c("V1","V2","V3")

と、findCorrelation関数からkorelをチューニングしています。

cor.coef = 0.1
出力はdf1ですが、ジャンクフィーチャーはありません。
 

さて、最初の質問に対する答えです。

way <- "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\"

cor.test.range <- seq(from = 0.1,to = 0.7,by = 0.1)  #  диапазон перебора в коеф корр

for(i in 1:length(cor.test.range)){
  
  reduced_Data <- get.findCorrelation(data = df1 , 
                      not.used.colums = c("V1","V2","V3"),
                      cor.coef = cor.test.range[i] )
  
  file.name <- paste0("test.with.cor_" , cor.test.range[i] , ".csv")
  final.way <- paste0(way , file.name)
  
  
  write.csv2(x = reduced_Data,file = final.way,row.names = F)  #  возможно это лучше
  
  #  write.table(reduced_Data, file = final.way,
  #              append = FALSE, quote = FALSE, sep=";",
  #              eol = "\n", na = "NA", dec = ".", row.names = FALSE,
  #              col.names = TRUE, qmethod = c("escape", "double"),
  #              fileEncoding = "")
}
 
アレクセイ・ヴャジミキン

その後、固定チューンの量子テーブルトレーニングを、列車-試験60%-試験20%-20%のサンプルで行いました。

最も成功したテストサンプルにモデルをチューニングしているように見えませんか?
私自身、何度かテストプロットを成功させ、ここに聖杯が あると思いました)))。そして、数カ月間、サイトを前方または後方に移動させた後、すべてが明らかになり、モデルは間違っており、予測因子も間違っていたため、それらのサイトでお金を失いました。

私は完全にクロスバリューやバリュエーションフォワードのモデルの分析に切り替えました。せいぜい50%程度と見ています。
ドクも前回の投稿でクロスバリデーションについて触れています。

 
YURY_PROFIT

マキシム、私はここで一緒に戦ったプログラマは、バックテストで機械学習のExpert Advisorを持っている - ちょうど火災、フォワードテストでは、まともな有益な統計とあまりにも一ヶ月半続いた、今それさえ一時停止せずにダンピングされています))

YURY_PROFIT

再トレーニングを行わず、実際の市場で少なくとも3ヶ月間利益を上げた機械学習EAの例を教えてください。

では、継続的な再教育の何が問題なのでしょうか?この真空状態「再トレーニングなし」とは?FXで1日働けばもう聖杯だし、1ティックごとに 鍛え直せるし、テクニックの問題ですね。

理由: