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

 
Uladzimir Izerski #:

私ができるのは、偽預言者の道をたどらないようにということだけだ。

私はそうする。
 

新年明けましておめでとうございます!

精度と効率のトレードオフを慎重に検討する ことが重要 だ。

一般的に、これは人生の公理だと思う。誤差のない測定に正確さはない。そして、その誤差は測定時間と平均化によって決まる...。いわば

 
まあ、彼らはそれをこき下ろし、禁止 した。消去されたのは、オランダのSIMを数ドルで作る方法だ。)
 
Valeriy Yastremskiy #:
まあ、彼らはそれをこき下ろし、禁止 した。オランダのSIMを2、3ドルで作る方法だ。)

と、神に感謝。)

 

MT5用のマニ管理スクリプトはありますか?

例えば

1) エントリーしたら、自動的にストップが設定される。

2)口座で損失が出た場合、それ以上取引できないようにする、など。

 
mytarmailS #:

mt5用のマニ管理スクリプトはありますか?

のような

1) エントリーすると自動的にストップが設定される。

2) 口座に損失が発生した場合、それ以上取引を行うことができない。

面白いもので、ちょうど昨日、「もしMOがマーケットエントリーの方向ではなく、管理、特にブレークイーブンへの移行、ストップとテイクアウトの設定に使われたらどうだろう」と考えていたところでした。

コードベースにはそのようなものがたくさんあるはずです。

 
mytarmailS #:

アレクセイ、あなたは知っていると思うが、そうではないかもしれない。


可変長のベクトルを持つシートがあり、1つのベクトル=1つのオブザベーションです。

モデル、アルゴリズムがこのデータを受け取ると何をするかというと、行列に変換します。

しかし実際のデータでは行列は巨大なので、アルゴリズムはデータをメモリ効率の良い スパース行列に変換します。

つまり、ボンネットの中ではまだ行列なのだ)。(注意深いデータ)


すべての商品のバスケットは、当然ながら、店の商品数に等しい、既知の固定サイズのベクトルに還元される。

われわれのケースはまったく異なる。簡単のために、価格を、それぞれ1または-1とラベルされた連子棒の列とする。位置番号Nの各バーについて、特徴ベクトルは以前のすべてのバー、つまり長さN-1の1と-1のベクトルである。特徴ベクトルの長さには先験的な制約はない。与えられた(我々による)固定数のバーを特徴に使うことは、強制的な手段である。この制約から離れ、任意の長さのベクトルを扱えるアルゴリズムを構築したい。

そのようなアルゴリズムの数学的材料として、私は再帰関数を見つける。再帰関数は任意の大きさのベクトルを入力とするが、決まった数の引数を持つ関数で定義される。最も単純な例は指数平均である。

 
Aleksey Nikolayev #:

すべての商品バスケットは、ショップ内の全商品のアイテム数に等しい、あらかじめ固定された既知のサイズのベクトルに自然に縮小される。

我々のケースは全く異なる。簡単にするために、価格を連棒とし、それぞれ1または-1とラベル付けする。位置番号Nの各バーについて、特徴ベクトルは以前のすべてのバー、つまり長さN-1の1と-1のベクトルである。特徴ベクトルの長さには先験的な制約はない。与えられた(我々による)固定数のバーを特徴に使うことは、強制的な手段である。我々はこの制約から離れ、任意の長さのベクトルを扱えるアルゴリズムを構築したい。

そのようなアルゴリズムのための数学的材料として、私は再帰関数を見つける。再帰関数は任意の大きさのベクトルを入力とするが、決まった数の引数を持つ関数で定義される。最も単純な例は指数平均である。

具体的に何をどのように検索したいのか?

例えば、あるパターン、3つのピーク、あるいは何か(ルール、イベント、パターン、クラスター)があるとする。


その間にどんなことが起こっても、それをノイズとみなして考慮しない。

ノイジーなベクトル/行列を入力として受け取り、パターンがあるかどうかをチェックする......。

あなたはこの概念か、それとも別の何かを考えているのですか?

========================================================

私は、起こるべき出来事の連続であり、それらは論理的規則によって記述されると考えています...

イベント==論理ルール。

例えば:もしイベント1が起きて イベント2が なかったら、 イベント3を 待つなど。

つまり、2種類のルール/イベントがある。検索が継続される「GO」イベントと、すべてがキャンセルされる「STOP」イベントだ。


アーキテクチャは以下の通りである。

1) ルールは文法によって生成される。

2) 生成アルゴリズムがフィットネス関数によってルールを検索し、改善する。

=========================

以下は、多次元データ(この場合はOHLC)用の簡単な文法の例である。

library(gramEvol)

Xcolnames <- c("open","high","low","close")

ruleDef <- list(
  res = grule(t(as.data.frame(multi.expr))),
  
  multi.expr = grule( c(single.expr, single.expr, single.expr,
                        single.expr, single.expr, single.expr)),
  
  single.expr = grule(list(r=c( go_rules   = as.character(expression(Expr)),
                                stop_rules = as.character(expression(Expr))))),
  
  
  Expr     = grule(expr, expr & expr ),
  
  expr     = grule(logy_op(one_var,one_var) ),
  one_var  = gsrule('X[<id>,<var_name>]'),
  
  id       = grule(i,numb,i+numb),
  numb     = gvrule(1:10),
  var_name = gvrule(Xcolnames),
  logy_op  = grule(">","<"))

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef, 1)
rbind.data.frame(eval(gr))


文法が生成するルール。

このルールのブロックは、条件の束を持つ1つのルールのようなものである。

X "は属性を持つ行列で、ループ "i "はその上を歩き、好きなものを選ぶ。

                                                       go_rules
r   X[i, "low"] < X[2, "close"] & X[i + 3, "low"] > X[i + 2, "low"]
r.1                             X[i + 2, "open"] < X[i + 8, "high"]
r.2   X[2, "open"] < X[i + 3, "high"] & X[i, "high"] < X[8, "high"]
r.3                                   X[1, "low"] < X[i + 8, "low"]
r.4   X[3, "open"] > X[3, "close"] & X[i + 1, "open"] < X[2, "low"]
r.5                                 X[i, "high"] < X[i + 2, "open"]
                                                       stop_rules
r                                    X[i, "open"] > X[2, "close"]
r.1  X[i, "low"] > X[i, "high"] & X[i + 2, "high"] < X[i, "high"]
r.2                                  X[3, "high"] < X[2, "close"]
r.3    X[1, "high"] > X[2, "open"] & X[i, "high"] > X[i, "close"]
r.4                                  X[4, "open"] < X[2, "close"]
r.5 X[i, "high"] < X[1, "high"] & X[2, "low"] < X[i + 2, "close"]

原理的にはすでにすべてが実装されている。



追記:属性マトリックスのサイズに制限はなく、各インスタンスはどのようなサイズでもよい。ここでの主なことは、すべてのルールが順番に機能することであり、時間に縛られることはない。

 
mytarmailS #:

具体的に何をどのように探したいのか?

例えば、パターンがある、3つのピークがある、あるいは何でもいい(ルール、イベント、パターン、クラスター)


その間に何が起こっても、私たちはそれをノイズとみなし、考慮しない。

そこで、ノイズの多いベクトル/行列を入力として受け取り、パターンがあるかどうかをチェックする......。

それはあなたが考えている概念なのか、それとも別のものなのか?

私のコンセプトは、特別な制約が課されていないため、可能な限り広範であり、多くのものがそれに当てはまります。あなたの例もおそらくそれに当てはまる。特に重要なのは、厳密に定義されたパターンの長さがないという事実だ。

いずれにせよ、私にとって重要なのは、SBでは1または-1の確率は常に0.5であり、確率(頻度)がこの値から強く逸脱している場所を探すべきだということだ。あなたのパターンでは、例えば3つ目のピークの斜面がそうかもしれない。

第3ピークの左斜面にいる」というルールは、再帰関数で表現できるのだろう。しかし、これらの関数が簡単に明示的に書き出せるとはとても思えないので、それを構築するためのMOアルゴリズムが必要になる。

 
Aleksey Nikolayev #:

しかし、私はこれらの関数が簡単に明示的に書き出せるとは思っていないので、それらを構築するためのMOアルゴリズムが必要なのだ。

そこで、あなたの要求に合ったアルゴリズムを提案しよう。


1) 必要なものを自分で書くので、時間の制約がない。

2) 必要なものを 自分で書くので、規則性を探すロジックは何でもよい。

3) 必要なものを 自分で書くので、対数ルールでも関数でも、規則性の記述を自由に選択できる


つまり、私が提案するコンセプトでは

これらのパターンは等価であり、パターン自体はどのような複雑さでも構わない。

     open high low close
[1,]    1    0   0     0
[2,]    0    1   0     0
[3,]    0    0   1     0
[4,]    0    0   0     1
[5,]    0    0   0     0
      open high low close
 [1,]    0    0   0     0
 [2,]    0    0   0     0
 [3,]    1    0   0     0
 [4,]    0    0   0     0
 [5,]    0    0   0     0
 [6,]    0    1   0     0
 [7,]    0    0   1     0
 [8,]    0    0   0     0
 [9,]    0    0   0     0
[10,]    0    0   0     1

AMOにはそれができない。

また、"ストップ "ルールがありますが、これもAMOにはできません。

つまり、表形式のデータを入力とする汎用的なAMOということだ。

理由: