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

 
SanSanych Fomenko:
Versucht es, aber schnell brach: es ist nicht klar, was mit der Ausgabe Löcher zu tun.

Die Löcher werden am Wochenende in Diskotheken besetzt :)

Wann lernst du endlich, richtig zu zitieren? Du musst nicht eine halbe Seite des Forums zitieren, um drei Worte zu schreiben...

Nun zum Thema

Ich habe verschiedene Kombinationen von Kerzenständern und andere Dinge mit Hilfe von Ich habe versucht, es mitCandlesticks zu lehren, es stellte sich heraus, 100% Ausbildung und Fehler 0 sowohl auf die Ausbildung und neue Daten, ist es offensichtlich gibt es einige Prädiktoren in den Daten, die in die Zukunft schauen, Also musste ich nicht in jede Funktion schauen, ich habe nur die ersten 6 Prädiktoren entfernt, die laut Forrest-Version am wichtigsten waren und sich von den anderen abhoben, ich hoffte, dass unter ihnen diejenigen waren, die in die Zukunft blicken und trainierte das MO erneut, der Fehler lag bei etwa 3%, kurz gesagt, ich weiß nicht, was zur Hölle, warum solche fabelhaften Ergebnisse, vielleicht liegt der Fehler in meinem Code...

Karoch, der verstehen will, das ist der Code, wie ich das Beispiel gemacht habe, mein Ziel war "Kerzenfarbe".

Im Code tun nur die Probe selbst, das Ziel und andere Manipulationen, was Sie wollen.

Probieren Sie es aus, experimentieren Sie, denn es ist wie 30 zusätzliche Funktionen für Ihr Modell

library(rusquant)
# загружаю последние 500 дней котировок индекса ртс
getSymbols("SPFB.RTS",src = "Finam",period="5min",from = Sys.Date()-500)
chart_Series(  tail(SPFB.RTS,100)  )

D <- SPFB.RTS

# cчитаем функции по свечным формациям и прочим добром
library(candlesticks)

X29<- TrendDetectionSMA(D)  
X28<- TrendDetectionChannel(D)  
X27<- nextCandlePosition(D)  
X26<- CSPThreeOutside(D)
X25<- CSPThreeMethods(D)
X24<- CSPThreeInside(D)
X23<- CSPTasukiGap(D)
X22<- CSPStomach(D)
X21<- CSPStar(D)
X20<- CSPShortCandleBody(D)
X19<- CSPShortCandle(D)
X18<- CSPPiercingPattern(D)
X17<- CSPOutsideDay(D)
X16<- CSPNLowerClose(D,N = 3)
X15<- CSPNHigherClose(D,N = 3)
X14<- CSPMarubozu(D)
X13<- CSPLongCandleBody(D)
X12<- CSPLongCandle(D)
X11<- CSPKicking(D)
X10<- CSPInvertedHammer(D)
X9 <- CSPInsideDay(D)
X8 <- CSPHarami(D)
X7 <- CSPHammer(D)
X6 <- CSPGap(D)
X5 <- CSPEngulfing(D)
X4 <- CSPDoji(D)
X3 <- CSPDarkCloudCover(D)
X2 <- CandleLength(D)
X1 <- CandleBodyLength(D)


dat <- cbind.data.frame(D, X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,
                        X11,X12,X13,X14,X15,X16,X17,X18,X19,
                        X20,X21,X22,X13,X24,X25,X26,X27,X28,X29)


# true,false заменяю на 1 и -1 а NA-шки на 0
dat[dat==TRUE]     <- 1
dat[dat==0]        <- -1
dat[is.na(dat)]    <- 0

# пишем все в файл с которым удобно работать в будущем
save(dat,file = "D:/R/candles_lib/candle_dat.RData")  # ваш путь

 
mytarmailS:

Sanych, wann wirst du lernen, richtig zu zitieren?

Prädiktoren blicken nicht in die Zukunft - sie wiederholen das Ziel.

Wo ist der Vorwärtstest? Was ist der Sinn, über Ausbildung zu diskutieren?

PS

Alle auf Anfrage

 
SanSanych Fomenko:

Prädiktoren blicken nicht in die Zukunft - sie wiederholen das Ziel.

Wo ist der Vorwärtstest? Warum über Ausbildung sprechen?

Versuchen Sie einfach, es auf Ihrer Website zu lehren und schreiben Sie, was Sie haben, und dann haben wir etwas zu diskutieren, hoffe ich...
 
mytarmailS:
Probieren Sie es einfach aus und schreiben Sie auf, was dabei herauskommt, und dann gibt es hoffentlich etwas zu diskutieren...

Ich verstehe den Grund.

Jetzt ist ein neuer Preis eingetroffen, alle Prädiktoren wurden darauf berechnet, und dann wurde derselbe Preis auf Basis dieser Prädiktoren berechnet - wir sagen überhaupt nichts voraus. Der Anpassungsfehler ist Null. Für mich ist das nicht überraschend.

Wenn die Vorhersage interessant ist, verschiebt sich D um eine Stufe nach links. Dieses Modell sagt einen Schritt voraus. Sie können mehrere Schritte vorhersagen

 
SanSanych Fomenko:

Ich verstehe den Grund.

Jetzt ist ein neuer Preis eingetroffen, alle Prädiktoren wurden darauf berechnet, und dann wurde derselbe Preis auf Basis dieser Prädiktoren berechnet - wir sagen überhaupt nichts voraus. Der Anpassungsfehler ist Null. Für mich ist das nicht überraschend.

Wenn die Vorhersage interessant ist, verschiebt sich D um eine Stufe nach links. Dieses Modell sieht einen Schritt nach vorn vor.

Was meinen Sie damit, dass der neue Preis eingetroffen ist?

Der Code, den ich Ihnen gegeben habe, macht nur Prädiktoren aus den Preisen, die von finam heruntergeladen werden.

dann werden die Daten gespeichert.

# пишем все в файл с которым удобно работать в будущем
save(dat,file = "D:/R/candles_lib/candle_dat.RData")  # ваш путь

Dann öffnen wir diese Datenin dem neuen Skript, legen denZielpreis fest und lehren den MO.

Sie kann nirgendwoher kommen. Natürlich habe ich das Kursziel um einen Schritt verschoben, entsprechend der Prognose, es ist nicht das erste Mal, dass ich trainiere.

also ist da noch etwas anderes

Oder verstehe ich Sie nicht?
 
mytarmailS:

Was meinen Sie damit, dass der neue Preis eingetroffen ist?

Der Code, den ich angegeben habe, erstellt nur Prädiktoren aus den von Finam heruntergeladenen Preisen.

dann werden die Daten gespeichert

# пишем все в файл с которым удобно работать в будущем
save(dat,file = "D:/R/candles_lib/candle_dat.RData")  # ваш путь

Dann öffnen wir diese Datencandle_dat.RData in einem neuen Skript, machen ein Ziel und lehren die MO.

Sie kann nirgendwoher kommen. Natürlich habe ich das Ziel schrittweise verschoben, je nach Vorhersage.

Es ist also nicht das erste Mal, dass ich so etwas mache.

Oder habe ich Sie missverstanden?
Was ist das Ziel?
 
SanSanych Fomenko:
Was ist das Ziel?

Lückentext ist höher als der vorherige Lückentext

load(file = "D:/R/candles_lib/candle_dat.RData")

Y <- diff(dat$SPFB.RTS.Close)
Y[Y>=0] <- 1
Y[Y<0] <- 0

dat <- dat[-nrow(dat),]
Y <- as.factor(Y)

tr <- 1:10000
ts <- 10001:15000


library(randomForest)
cm <- colnames(dat)
colnames(dat) <- paste0("var_" , 1:ncol(dat))

model <- randomForest(Y[tr]~., dat[tr,]  , ntree=100, mtry=10)

layout(1:2)
plot(model)
varImpPlot(model,type = 2)

pr <- predict(model,dat[ts,])


library(caret)
confusionMatrix(Y[ts] , pr)
 
mytarmailS:

der obige Lückentext ist niedriger als der vorherige Lückentext

Ich kann nicht herausfinden, wo die Verschiebung des Ziels ist? Bei der Differenzierung? Aber die erste Zeile der Prädiktoren, die man durch Subtraktion von 2 erhält, stimmt mit dem ersten Wert des Ziels überein, d.h. wir WISSEN die nächsten Werte für das Ziel mit Index 2.
 
SanSanych Fomenko:
Ich kann nicht herausfinden, wo die Verschiebung des Ziels liegt? Bei der Differenzierung? In die erste Zeile der Prädiktoren, die sich durch Subtraktion von 2 ergibt, setzen wir jedoch den ersten Wert des Ziels, d.h. wir WISSEN die nächsten Werte für das Ziel mit dem Index 2.

Bei der Differenzierung erfolgt die Verschiebung automatisch, da die Reihe um ein Element kürzer wird; es genügt dann, die Stichprobe (Tabelle mit Beobachtungen) um das letzte Element zu kürzen

Hier ist ein Beispiel

SomeData <- c(10,20,30,20,10,20,30,40,50,40)

Y <- diff(SomeData)

cbind.data.frame(  Y , SomeData[-length(SomeData)])


erhalten wir

   Y                   SomeData[-length(SomeData)]
1  10                          10
2  10                          20
3 -10                          30
4 -10                          20
5  10                          10
6  10                          20
7  10                          30
8  10                          40
9 -10                          50
 
mytarmailS:

Bei der Differenzierung erfolgt die Verschiebung automatisch, da die Reihe um ein Element kürzer wird, und dann muss die Probe nur noch um das letzte Element gekürzt werden

Nicht die Prädiktoren müssennach links verschoben werden, sondern das Ziel.

Lassen Sie mich versuchen, es noch einmal zu erklären.


Die Prädikatorenkette mit dem Index 1 ergibt sich = aus der ZWEITEN und der ersten Prädikatorenkette. Das Ergebnis wird an die Stelle mit dem Index 1 geschrieben.

Das Ziel hat den Index =1 und hat ihn immer noch. Aber seinen Wert sagen wir auf der Grundlage von Informationen aus der ZUKUNFT, der zweiten Reihe von Prädiktoren, voraus

Verschieben Sie das Ziel um 1, d. h. nehmen Sie anstelle von Y[1:n] Y[2:n] und berechnen Sie