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

 
Maxim Dmitrievsky #:

マーケットからボットをダウンロードし、MT5テスターで実行し、すべての取引やその他の情報を含むレポートを保存するオプションがあります。

テストの実行やトレードのcsvへのアップロードなど、自動化が可能 -https://www.mql5.com/ru/code/26132

MultiTester
MultiTester
  • www.mql5.com
Множественные прогоны/оптимизации в Тестере.
 
mytarmailS #:

市場からの金策に一石を投じた ))

私のテスターではキャピタルカーブ。

tslabに放り込んで、もっとよく見えるようにした。

相性が良さそうですね。


トレードに目を向けた。


私は自分のハンドトレーダーを使いましたが、彼の取引アルゴリズムが理解できません。

フォレストは確かに何も特定できませんでしたが、興味深く、勉強になりました )))

だから、どの時間軸で、2つのモデルを教えるかを読む必要がある。ひとつはトレード用、もうひとつはタイミング用。マルチクラスでもいい。ボットの説明を見てください、もしかしたら悪くて合わないかもしれません
 
Andrey Khatimlianskii #:

テストの実行やトランザクションのcsvへのアップロードなど、自動化が可能 -https://www.mql5.com/ru/code/26132

はい、ありがとうございます
 
Dmytryi Voitukhov #:

役に立つかもしれない...再帰性のない多対多を持って います。そして、コンボリューションレイヤーもなし。そして、ニューロニューロメカニズムを解析した結果、このモデルを選びました。私たちはここに共通項を探しているのですね。論 破する。

何を主張すればいいのかよくわからない。
 
Aleksey Nikolayev #:

ありがとうございます、見てみます。

しかし、私たちの場合、順番は重要です。例えば、増分をランダムにシャッフルしてSBを得ることは常に可能である。

また、以前ここで逐次パターンマイニングや配列アライメント問題について書かれていたことを思い出しました。また、問題を解決するための方法の一つでもあるようです。配列が一つのクラスに属することは、必ずしも類似していることを意味しないが。

apriori_cspade <- function(apri_supp=0.1,arpi_conf=0.1, liS , 
                             maxgap=NULL, maxlen=5,rhs=NULL,
                             apri_maxlen=2,apri_minlen=2,verbose=T,
                             redundant.rules = F, cspade_supp=0.5 , cspade_conf=0.5){
    
    
    
    library(arules)
    
    
    targ <- NULL
    if(!is.null(rhs))  {
      targ <- list(rhs=rhs, default="lhs")
      apri  <- apriori(liS, parameter=list(support=apri_supp, 
                                          confidence=arpi_conf,
                                          minlen=apri_minlen,
                                          maxlen=apri_maxlen), 
                                          appearance = targ,
                             control = list(verbose=verbose))
    }
   
    
    if(is.null(rhs)){
      apri <- apriori(liS, parameter=list(support=apri_supp, 
                                          confidence=arpi_conf, 
                                          target="rules",
                                          minlen=apri_minlen,
                                          maxlen=apri_maxlen),
                              control = list(verbose=verbose))
    }
    
    ar <- as(apri,"data.frame")
    ar <- as.character(ar$rules)
    ar <- gsub("[{}>]","" ,ar)
    ar <- unlist(stringr::str_split(ar ,pattern = "="))
    ar <- ar[!duplicated(ar)]
    ar <- stringr::str_trim(ar)
    for(i in 1:length(liS))   liS[[i]] <-  liS[[i]]  [ liS[[i]]  %in% ar ]
    
    
    
    liS <- liS[  unlist(lapply(liS ,function(x) length(x)>2 ))  ]
    
    
    if(  length(liS) <= 0 ) return(NULL)
    
    
    
    
    
    library(arulesSequences)
    cspade.form <- as.data.frame(matrix(ncol = 4,nrow = 0))
    for(i in 1:length(liS)){
      
      Q <- liS[[i]]
      cspade.form <- rbind(cspade.form,
                           cbind.data.frame( ID = rep(i,length(Q)),
                                             evID = 1:length(Q),
                                             SIZE = rep(1,length(Q)),
                                             ITEM = Q))}
    
    
    write.table(cspade.form , file = "D:\\R2\\arulesSeq\\seq\\temp.txt",
                append = F,sep = ",",row.names = F,col.names = F)
    
    x <- read_baskets(con = "D:\\R2\\arulesSeq\\seq\\temp.txt",sep = ",",
                      info = c("sequenceID","eventID","SIZE"))
    
    mod <- cspade(x, parameter=list(support = cspade_supp,
                                    maxlen = maxlen,
                                    maxgap=maxgap),
                                  control=list(verbose = verbose))
    gc(reset = T,verbose = F)
    
    rules <- ruleInduction(mod, confidence = cspade_conf, control=list(verbose = verbose))
    if(redundant.rules) rules <- rules[!is.redundant(rules)]
    
    final <- as(rules,"data.frame")
    
    #  parse rules
    R <- final$rule
    R <- gsub( "[\"<>{}]","",R)
    R <- stringr::str_split(gsub("=",",",R) , pattern = ",")
    R <- lapply(R,trimws)
    
    li <- list(rules=final, parse.rules=R)
    
    return(li)}

データ

set.seed(123)
>  li <- list()
>  for(i in 1:100){
+    li <- append(li,  
+                 list(c(letters[sample(1:10,sample(5:10,1))] ,   sample(c("buy","sell"),1)))
+    )}
>  
>  head(li)
[[1]]
[1] "c"    "b"    "f"    "j"    "e"    "d"    "i"    "sell"

[[2]]
[1] "j"    "e"    "c"    "h"    "a"    "sell"

[[3]]
[1] "i"   "c"   "h"   "b"   "g"   "buy"

[[4]]
 [1] "c"   "d"   "f"   "a"   "j"   "e"   "i"   "h"   "b"   "g"   "buy"


この関数を実行し、私たちのマークにつながるシーケンスを検索します。

ac <- apriori_cspade(liS = li,apri_supp = 0.1,
                      arpi_conf = 0.5,
                      rhs = c("buy","sell"),cspade_supp = 0.1,redundant.rules = T)
 ac
$rules
                                rule support confidence      lift
29          <{"a"},{"f"}> => <{"j"}>    0.10  0.5000000 0.7246377
56          <{"b"},{"f"}> => <{"i"}>    0.12  0.6000000 0.8333333
80          <{"e"},{"a"}> => <{"h"}>    0.14  0.5000000 0.6666667
98          <{"i"},{"e"}> => <{"g"}>    0.11  0.5000000 0.6329114
149         <{"b"},{"e"}> => <{"d"}>    0.11  0.5789474 0.7617729
168             <{"a"}> => <{"buy"}>    0.45  0.6081081 1.0484623
169             <{"b"}> => <{"buy"}>    0.44  0.6027397 1.0392064
170             <{"c"}> => <{"buy"}>    0.47  0.6103896 1.0523959
171             <{"d"}> => <{"buy"}>    0.46  0.6052632 1.0435572
172             <{"e"}> => <{"buy"}>    0.38  0.5757576 0.9926855
173             <{"f"}> => <{"buy"}>    0.42  0.6000000 1.0344828
174             <{"g"}> => <{"buy"}>    0.47  0.5949367 1.0257529
175             <{"h"}> => <{"buy"}>    0.43  0.5733333 0.9885057
176             <{"i"}> => <{"buy"}>    0.41  0.5694444 0.9818008
177             <{"j"}> => <{"buy"}>    0.45  0.6521739 1.1244378
178       <{"j"},{"i"}> => <{"buy"}>    0.17  0.6800000 1.1724138
182       <{"j"},{"g"}> => <{"buy"}>    0.18  0.6923077 1.1936340
183       <{"g"},{"j"}> => <{"buy"}>    0.18  0.6666667 1.1494253
184       <{"j"},{"f"}> => <{"buy"}>    0.14  0.7000000 1.2068966
185       <{"f"},{"j"}> => <{"buy"}>    0.21  0.7000000 1.2068966
187       <{"e"},{"j"}> => <{"buy"}>    0.17  0.7083333 1.2212644
189       <{"d"},{"j"}> => <{"buy"}>    0.23  0.7666667 1.3218391
191       <{"c"},{"j"}> => <{"buy"}>    0.25  0.7142857 1.2315271
192       <{"j"},{"b"}> => <{"buy"}>    0.16  0.6666667 1.1494253
194       <{"j"},{"a"}> => <{"buy"}>    0.14  0.6666667 1.1494253
195       <{"a"},{"j"}> => <{"buy"}>    0.22  0.7333333 1.2643678
196 <{"g"},{"c"},{"j"}> => <{"buy"}>    0.10  1.0000000 1.7241379
197       <{"i"},{"h"}> => <{"buy"}>    0.17  0.5862069 1.0107015
198       <{"h"},{"i"}> => <{"buy"}>    0.17  0.6071429 1.0467980
204       <{"e"},{"i"}> => <{"buy"}>    0.17  0.6538462 1.1273210
207       <{"i"},{"c"}> => <{"buy"}>    0.16  0.6956522 1.1994003
210       <{"b"},{"i"}> => <{"buy"}>    0.20  0.7692308 1.3262599
212       <{"a"},{"i"}> => <{"buy"}>    0.15  0.7142857 1.2315271
213 <{"c"},{"f"},{"i"}> => <{"buy"}>    0.10  0.6666667 1.1494253


この関数は「汚い」ですが、動作します。関数内のパスを自分の必要に合わせて変更し、正しいパッケージをインストールしてください。

しかし、この種の「疎な配列」を探すアルゴリズムは非常に貪欲で、アルゴリズム自体が効率的な探索を行い、C++で書かれているにもかかわらず、膨大な探索があることを知っておく必要があります。
 
mytarmailS #:

データ


関数を実行し、我々のラベルにつながるシーケンスを探す。


この関数は "汚い "もので、自分用に書いたものですが、動作します。関数内のパスを自分で変更し、正しいパッケージをインストールしてください。

しかし、この種の「疎な配列」を探すアルゴリズムは非常に貪欲で、アルゴリズム自体が効率的な探索を行い、C++で書かれているにもかかわらず、膨大な探索があることを知っておく必要があります。

ありがとうございます、問題にどう加えるか考えてみます。

 
Aleksey Nikolayev #:

ありがとうございます!タスクにどうつけるか考えてみます。

ご不明な点がありましたら、ご質問ください。私はこのアプローチに多くの時間を費やしてきましたので、多少なりとも知識がありますし、実際、このアプローチが最も有望だと考えています。
 

片方のアプローチか、それとも両方か?

https://habr.com/ru/post/661457/

Датацентрический и моделецентрический подходы в машинном обучении
Датацентрический и моделецентрический подходы в машинном обучении
  • 2022.04.19
  • habr.com
Код и данные — фундамент ИИ-системы. Оба эти компонента играют важную роль в разработке надёжной модели, но на каком из них следует сосредоточиться больше? В этой статье мы сравним методики, ставящие в центр данные , либо модель , и посмотрим, какая из них лучше; также мы поговорим о том, как внедрять датацентрическую инфраструктуру...
 
Mikhail Mishanin #:

片方のアプローチか、それとも両方か?

https://habr.com/ru/post/661457/

このような啓示はめったにないことです。しかし、それは市場に対する正しいアプローチなのです。

 
Mikhail Mishanin #:

片方のアプローチか、それとも両方か?

https://habr.com/ru/post/661457/

私 は 、目 的 の 特 徴 を 考 慮 し て 、両 方 の ア プ ロ ー チ を 調 和 し た も の で あ る と 考 え て い ま す 。サインは相場の「物理」を「捉える」べきであり、モデルは利益を上げるために構築されるべき(例えば、当たる確率よりも)。

理由: