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

 
サンサニッチ・フォメンコ
試してみたが、すぐに壊れた。 出力穴をどう するのかが明確でないのだ。

週末はディスコで穴埋めです :)

いつになったらちゃんと引用できるようになるんだ? 3文字書くのに掲示板の半分のページを引用する必要はないだろ...。

さて、本題に入ります

を参考に、ローソク足の組み合わせなどをいろいろと作ってみました。ローソク足 で教えてみたところ、トレーニングでも新しいデータでも100%トレーニングでエラー0になりました。そのため、各関数を調べる必要はなく、forrestバージョンによると最も有意で、他より際立っていた最初の6つの予測子を削除しました。その中で、将来を見通すものがあることを期待して、再びMOを訓練しました。..

これは、私がサンプルを作成したときのコードで、ターゲットは "キャンドルカラー "です。

コードでは、サンプルそのものだけで、ターゲットなどの操作は思いのままです。

あなたのモデルに30個の機能が追加されたようなものですから、試してみてください。

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、いつになったらちゃんと引用することを覚えるんだ?

プレディクターは未来を見るのではなく、ターゲットを繰り返すのです。

フォワードテストはどこですか?トレーニングを議論する意味はあるのか?

追記

すべてリクエストによる

 
サンサニッチ・フォメンコ

プレディクターは、未来を見るのではなく、ターゲットを繰り返す。

フォワードテストはどこですか?トレーニングについて議論することはありますか?

ただ、あなたのサイトで教えてみて、得たものを書いてください。そうすれば、何か議論ができるのではないかと思います。
 
mytarmailS:
ただ、自分で試してみて、得られたものを書き留めれば、何か議論ができるはずだ、うまくいけば...。

その理由はよくわかりました。

今、新しい価格が入ってきて、すべての予測値がそれに基づいて計算され、そして同じ価格がその予測値に基づいて計算されています。私たちはまったく何も予測していません。フィッティングの誤差はゼロです。驚くようなことは何もないですね。

予想が面白ければ、Dシフトを1段階左にする。このモデルは、一歩先を予測します。

 
サンサニッチ・フォメンコ

その理由はよくわかりました。

今、新しい価格が入ってきて、すべての予測値がそれに基づいて計算され、そして同じ価格がその予測値に基づいて計算されています。私たちはまったく何も予測していません。フィッティングの誤差はゼロです。驚くようなことは何もないですね。

予想が面白ければ、Dシフトを1段階左にする。このモデルは、一歩先を予測するものです。

新価格が 入ったってどういうこと?

私がお渡ししたコードは、finamからダウンロードした価格から予測値を作成するだけです。

を選択すると、データが保存されます。

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

そして、このデータを新しいスクリプトで 開き、目標価格を 設定し、MOを教えます。

どこからともなくやってくるのです。もちろん、予想にしたがって目標株価を一段とシフトさせたのですが、これは初めての訓練ではありません。

然らば

それとも、私があなたを理解していないのでしょうか?
 
mytarmailS:

新価格が 入ったってどういうこと?

私が提供したコードは、finamからダウンロードした価格から予測値を作成するだけです。

すると、データが保存される

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

そして、このデータcandle_dat.RDataを 新しいスクリプトで開き、ターゲットを作り、MOを教えます。

どこからともなくやってくるのです。もちろん、予報に従って1段階ずつ目標をずらしていきました。

ということで、今回が初めてではありません。

それとも、私が誤解していたのでしょうか?
ターゲットは?
 
サンサニッチ・フォメンコ
ターゲットは?

クローズは、前回のクローズより高くなる

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:

上の句は前の句より下

ターゲットのシフトがどこにあるのかがわからない?差別化するとき?しかし、2からの引き算で得られる予測変数の1行目は、ターゲットの1番目の値と一致する、つまり、インデックス2でターゲットの次の値をKNOWするのです。
 
サンサニッチ・フォメンコ
ターゲットのずれがどこにあるのかがわからないのですが?差別化するとき?しかし、2から引いて得られる予測変数の最初の行には、ターゲットの1番目の値、つまり、インデックス2のターゲットの次の値をKNOWするのです。

微分するとき,系列が1要素短くなるので,シフトは自動的に行われ,必要なのは最後の要素だけサンプル(観測値のある表)を短くすることである

以下はその一例です。

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

Y <- diff(SomeData)

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


となる

   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:

微分する場合は、行が1要素短くなるため、自動的にシフトし、あとはサンプルを最後の要素だけ短くすれば良いだけです

左にずらすべきは 予測因子ではなく、ターゲットなのです。

今一度、説明させてください。


インデックス1の予測変数の文字列は、SECONDと最初の予測変数の文字列から=得られる。結果は、インデックス1の場所に書き込まれます。

ターゲットはインデックス=1であり、まだ持っている。しかし、その値は私たちが未来からの情報に基づいて予測するもので、予測因子の2行目

ターゲットを1つずらす、つまりY[1:n]の代わりにY[2:n]を取って計算する。