Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 2633

 
Maxim Dmitrievsky #:

Laden Sie den Bot vom Markt herunter, lassen Sie ihn im MT5-Tester laufen, dann gibt es eine Option, den Bericht mit allen Trades und anderen Informationen zu speichern

Sie können den Test automatisieren, einschließlich der Durchführung des Tests und des Hochladens von Geschäften in eine csv-Datei -https://www.mql5.com/ru/code/26132

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

Sparked eine Gold-Strategie aus dem Marktplatz ))

Kapitalkurve in meinem Testgerät.

Ich habe es in tslab eingegeben, um ein besseres Bild zu bekommen.

Es sieht so aus, als ob es eine gute Übereinstimmung ist.


Ich habe mir die Berufe angesehen.


Ich habe meinen Handtrader benutzt und ich verstehe seinen Handelsalgorithmus nicht.

Forrest konnte zwar nichts erkennen, aber es war interessant und informativ )))

Sie müssen also lesen, in welchem Zeitraum Sie zwei Modelle unterrichten. Eine für den Handel, die andere für das Timing. Oder Multiklasse. Sehen Sie sich die Bot-Beschreibung an, vielleicht ist sie schlecht und passt nicht.
 
Andrey Khatimlianskii #:

Kann automatisiert werden, einschließlich der Durchführung eines Tests und des Hochladens von Transaktionen in eine csv-Datei -https://www.mql5.com/ru/code/26132

Ja, danke
 
Dmytryi Voitukhov #:

Könnte nützlich sein... Ich habe ein Many-to-many ohne Wiederholung. Und keine Faltungsebenen. Und ich habe mich für dieses Modell entschieden, nachdem ich den neuronalen Mechanismus analysiert hatte. Wir suchen hier nach einem gemeinsamen Nenner, nicht wahr? Argumentieren Sie.

Ich bin mir nicht sicher, was ich zu argumentieren habe.
 
Aleksey Nikolayev #:

Danke, ich werde es mir ansehen.

Doch bei uns zählt die Ordnung. Es ist zum Beispiel immer möglich, SB durch zufälliges Mischen der Inkremente zu erhalten.

Ich habe mich auch daran erinnert, dass Sie hier einmal über die Suche nach sequentiellen Mustern und das Problem des Sequenzabgleichs geschrieben haben. Dies scheint auch eine der Methoden zur Lösung des Problems zu sein. Die Zugehörigkeit von Sequenzen zu einer Klasse bedeutet nicht unbedingt, dass sie ähnlich sind.

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)}

Daten

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"


wir führen die Funktion aus und suchen nach Sequenzen, die zu unseren Marken führen

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


Die Funktion ist "schmutzig", aber sie funktioniert, ändern Sie die Pfade in der Funktion für Ihre eigenen Bedürfnisse und installieren Sie die richtigen Pakete.

Sie sollten jedoch wissen, dass Algorithmen, die nach solchen "spärlichen Sequenzen" dieser Art suchen, sehr gefräßig sind, es gibt eine riesige Suche, trotz der Tatsache, dass der Algorithmus selbst eine effiziente Suche durchführt und in C++ geschrieben ist
 
mytarmailS #:

Daten


die Funktion ausführen und nach Sequenzen suchen, die zu unseren Etiketten führen


Die Funktion ist "schmutzig", ich habe sie für mich selbst geschrieben, aber sie funktioniert, ändern Sie die Pfade in der Funktion für sich selbst und installieren Sie die richtigen Pakete

Sie sollten jedoch wissen, dass Algorithmen, die nach solchen "spärlichen Sequenzen" dieser Art suchen, sehr gefräßig sind, es gibt eine riesige Suche, trotz der Tatsache, dass der Algorithmus selbst eine effiziente Suche durchführt und in C++ geschrieben ist

Danke, ich werde darüber nachdenken, wie ich das in meine Probleme einbauen kann.

 
Aleksey Nikolayev #:

Danke, ich werde darüber nachdenken, wie ich es mit meinen Aufgaben verbinden kann.

Wenn Sie Fragen haben, stellen Sie sie bitte. Ich habe viel Zeit mit diesem Ansatz verbracht und weiß daher mehr oder weniger Bescheid. Ich halte diesen Ansatz sogar für den vielversprechendsten.
 

Ein Ansatz oder beide?

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

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

Ein Ansatz oder beide?

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

Es ist selten, dass man eine solche Offenbarung erlebt. Aber es ist der richtige Ansatz für den Markt.

 
Mikhail Mishanin #:

Ein Ansatz oder beide?

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

Meines Erachtens eine harmonische Kombination beider Ansätze, die den Besonderheiten unserer Ziele Rechnung trägt. Die Zeichen sollten die "Physik" des Marktes "einfangen", und die Modelle sollten so aufgebaut sein, dass sie die Gewinne steigern (und nicht etwa die Wahrscheinlichkeit, richtig zu liegen).