記事「MQL言語を使用したゼロからのディープニューラルネットワークプログラミング」についてのディスカッション - ページ 5

 
外部変数の形をしたディープネットワークのパラメーターは柔軟性に欠ける。
 

bodyPer "の入力を修正した。単にボディの相対的な長さをロードする代わりに、私はこの値を計算します:bodyPer=0.5+((クローズ-オープン)/p100)/2;

そうすることで、相対的な長さだけでなく、ロウソクの向きも変数に取り込むことができる。これで、4番目の変数のためのスロットが空いた。

 

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

ここでは、まだ形成されていないローソク足のデータを渡している。実際には、ローソク足が開いた時点で、すべてのパラメータは同じになります。すべて=rates[0].openと なります。

 
Vasily Pototsky #:

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

ここでは、まだ形成されていないローソク足のデータを渡している。実際には、ローソク足が開いた時点で、すべてのパラメータは同じになります。すべて=rates[0].openと なります。

正しくない!

int copied=CopyRates(_Symbol,0,1,5,rates);

ここでは、ゼロ・バーからではなく、最初のバーからコピーしています:

CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

最後のバーの値になります。

5つのバーをコピーする必要はないと思います。このように過去の1つのバーをコピーするだけで十分です:

int copied=CopyRates(_Symbol,0,1,1,rates);
 

こんにちは、Anddy!

私の戦略に適応させるためにあなたのコードを分析していますが、今のところ、あなたのDNNは素晴らしいと言えます!共有してくれてありがとう。

yValues[2]>0.6」の使い方がよくわかりません。異なるアセットで数回試した後、この条件により取引が終了したことはありませんでした。これは正しいのでしょうか?

ありがとうございました!

ベスト、
Alexandre

このフォーラムでは、ポルトガル語でコメントしてください。自動翻訳ツールを使用するか、他の言語のフォーラムのいずれかでコメントしてください。

 
トレンド変数が変更されるたびに、トレーニング結果が常に異なるという奇妙な挙動。

コードにロジックエラーがあります!

   double trend=0; // также при trend=100 результаты много лучше и больше количество точек оптимизаций!? 
   if(uod>0)
     {
      highPer=high-close;
      lowPer=open-low;
      bodyPer=close-open;
      trend=1;

     }
   else
     {
      highPer=high-open;
      lowPer=close-low;
      bodyPer=open-close;
      trend=-1; // стоял ноль!
     }
 
Nikolai Kalinin #:
トレンド変数が変更されるたびに、トレーニング結果が常に異なるという奇妙な挙動。

コードにロジックエラーがあります!

活性化関数の特異性。

レイヤーが増えるほど減衰が大きくなり、値が0に近くなる。

オフセットはこの問題を少し修正する。

そのため、しきい値が0.6に設定されると、可能性のあるセットのほとんどが破棄される。また、入力に巨大な数値や複数の大きな数値を入力している場合、ストレートパスでも、ニューラルネットワークの末端により多くの可能な値をもたらすことになる。

そして、より多くの値がしきい値の境界線に達する、または越えるほど、より多くのポジション、または価格チャートをニューラルネットワークに適合させる(経路を記憶させる)機会が増える。
 
Ivan Butko #:

活性化関数の特異性。

レイヤーが増えるほど減衰が大きくなり、値が0に近くなる。

オフセットはこの問題を少し修正する。

しきい値が0.6に設定されている場合、可能性のあるセットのほとんどが破棄される。また、入力に巨大な数値や複数の大きな数値を入力している場合、ストレートパスでも、ニューラルネットワークの末端により多くの可能な値をもたらすことになる。

そして、より多くの値がしきい値の境界線に達する、または越えるほど、より多くのポジション、または価格チャートをニューラルネットワークに適合させる(パスを記憶する)機会が増える。

いずれにせよ、どのようなタイプの最適化であれ、トレーニングの結果は常に大きく変動するため、実際の取引への適用性には疑問が残る。このNSの特殊性をどう説明するのでしょうか?

 
Nikolai Kalinin #:

いずれにせよ、どのようなタイプの最適化であれ、トレーニングの結果は常に非常にばらつきがあり、実際の取引への適用性には疑問が残る。このNSの特殊性をどう説明するのでしょうか?

あなたはこのNSを非常に重要視していますが、実際にはすべてのNS、そしてMOに関連するすべてのもの、一般的に、数字と数字の掛け算や活性化関数に加算器があるところでは、すべてチャートに適合することになります。完全に不安定なシステムである。

さらに、プライシングは非定常プロセスである。

NSは定常的なシステムのためのもので、反復的なものです。

しかし、FXなどでは、より高度でインテリジェントなシステムが必要です。

NSそのものは値動きを記憶するものであり、新しいデータの量が掛け算で得られる数値の可能な組み合わせよりも多ければ、結果を平均化するものである(簡単に言えば、2つか3つの入力を持つ最も単純なNSアーキテクチャ)。

それを掘り下げ、アーキテクチャを構築し、ニューロンやレイヤーを追加するのは面白い。しかし、それは全く役に立たない。
 
Ivan Butko #:

あなたはこのNSを重要視しているが、実はすべてのNS、そしてMOに関連するすべてのもの、一般的に、数字と数字の掛け算があり、活性化関数に加算器があれば、それはすべてグラフに適合する。完全に不安定なシステムである。

さらに、プライシングは非定常プロセスである。

NSは定常的なシステムのためのもので、反復的なものです。

しかし、FXなどでは、より高度でインテリジェントなシステムが必要です。

NSそのものは値動きを記憶するものであり、新しいデータの量が掛け算で得られる数値の可能な組み合わせよりも多ければ、結果を平均化するものである(簡単に言えば、2つか3つの入力を持つ最も単純なNSアーキテクチャ)。

それを掘り下げ、アーキテクチャを構築し、ニューロンやレイヤーを追加するのは面白い。しかし、それはまったく役に立たない。

イヴァン、分かりやすく説明してくれてありがとう。どのような統計でも、それ自体を繰り返す傾向がある。原理的には、NSを最適化(トレーニング)する際に積分指標を使用すれば、無知から知識への移行がいつどのように起こるのか、つまり、どのようにトレードすればより良いのかがポイントでわかります。有意な変数の探索は別の話です。入力を4倍以上にスケーリングする問題は解決できましたか?