記事についてのディスカッション

 

新しい記事「トレーディングにおけるニューラルネットワークの実用化。 Python (パートI)」はパブリッシュされました:

今回は、Pythonによるディープニューラルネットワークのプログラミングに基づいたトレードシステムの実装を一つ一つ分析します。 Googleが開発した機械学習ライブラリ「TensorFlow」を使って行います。 また、ニューラルネットワークの記述にはKerasライブラリを使用します。

ニューラルネットワーク学習のデータ準備に関するポイントを考えてみましょう。

  • 意思決定のために、2つのニューラルネットワークを用いて、一方向にポジションを開くために使用します。
  • 前述のポイントによれば、トレーニングデータは、各方向ごとに2つのグループに分割する必要があります。
  • 前のシステムと同様に、最初のニューラルネットワークをトレーニングして、標準的なテクニカルインジケータと同様のインジケータを構築します。 以前のシステムでは、自分で書いたインジケータを使用していたので、タスク中のExpert Advisorに負荷をかけたくなかったので、このソリューションを使用しました。 ターミナルからはクオートしか受け取れないので、Pythonを使用します。 ニューラルネットワークのデータを用意するには、インジケータをPythonスクリプトで構築する必要があります。 このようなインジケータを構築するためのニューラルネットワークを教えることで、スクリプト内で重複する必要がなくなります。 
  • 2番目のニューラルネットワークは、トレード戦略を作成することに基づいて、シグナルインジケータを構築します。
  • ニューラルネットワークは、EURUSDのH1チャートでトレーニングされます。
  • その結果、システムを構築するためには、買いのためのニューラルネットワークを2つ、売りのためのネットワークを2つ用意する必要があります。 このように、4つのニューラルネットワークがシステムの中で機能することになります。

作者: Andrey Dibrov

 

記事ではなく探求

1.

定数10 000(1と4ゼロ)の説明は、記事のテキストまたはソースにありません , 記事で検索が51回使用されている

私はこれがEURUSDの桁数であることを疑ったが、なぜ100 000(1と5のゼロ):

inB[15]=(iOpen(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iLow(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*100000;
inB[16]=(iHigh(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iOpen(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*100000;
inB[17]=(iHigh(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iLow(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*10000;
inB[18]=(iHigh(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iOpen(NULL,PERIOD_H1,i+1))*10000;
inB[19]=(iOpen(NULL,PERIOD_H1,i+1)-iLow(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*10000;


10000と100000という数字はどこから来たのでしょうか?


2.PythonTestExpert

このコードは全般的に謎です:

void OnTick()
  {
   MqlDateTime stm;
   TimeToStruct(TimeCurrent(),stm);
   
   for(int i=0; i<=14; i++)
     {
      in[i]=in[i+5];
     }


このコードは全般的に謎です。ティックごとに配列をシフトしているのだと思いますが、配列の初期値はどこから取得しているのでしょうか?配列の15番目の要素から配列の最後までを埋めます。


3.

DibMin1-1.mq5とDibMax1-1.mq5のコードが99%同じで、2つのインジケータに分かれていて、1つのインジケータで2行(バッファ)で実行されないのはなぜですか?



4.Pythonについても質問です。最初は、 Python スクリプトに対するコメントも、スクリプトを書いた目的もありませんでしたが、記事の最後に突然、スクリプトが何をしているのかの説明と、Expert Advisorを最適化する 際に、このスクリプトのデータをすでに使用したという事実が現れました。読者の皆さん、このスクリプトのデータはどこにあったのでしょう?

記事を書いている間に、NSの学習目標に対する別のアプローチの例も挙げることにした。

?




この記事が気に入らないとは書かないが(あるいは、この記事が無茶苦茶か?)、「トレーディングにおけるニューラルネットワークの実践的応用」という記事のタイトルは非常にうるさい。Python "というタイトルは非常にうるさく、検索エンジンがこの記事を最初の検索結果に表示するのは残念だ。

 
Igor Makanu:

これは探求であって、記事ではない。

1.

定数10,000(1と4つのゼロ)について、記事本文にもソースにも記述がない。

これはEURUSDの桁数ではないかと疑われたが、ではなぜ100 000(1と5のゼロ)な のか:


10000と100000という数字はどこから来たのか?どういう意味なのか?


2.Pythonテストエキスパート

このコードは全般的に謎です:


配列の初期値はどこから取得しているのでしょうか?配列の15番目の要素から配列の最後までを埋めます。


3.

DibMin1-1.mq5とDibMax1-1.mq5のコードは99%同じですが、1つのインジケータで2行(バッファ)で実行されないのはなぜですか?



4.Pythonに関しても質問です。最初は Python スクリプトへのコメントも、スクリプトを書いた目的もありませんでしたが、記事の最後に突然、スクリプトが何をしているのかの説明と、Expert Advisorを最適化する 際に、このスクリプトのデータをすでに使用したという事実が現れました。さて、読者に戻って、このスクリプトのデータがどこにあったか見てみよう:

記事を書いている間に、NSの学習目標に対する別のアプローチの例も挙げることにした。

?




この記事が気に入らないとは書かないが(あるいは、この記事が無茶苦茶なのか?)、「トレーディングにおけるニューラルネットワークの実用化」という記事のタイトルは非常にうるさい。Python "というタイトルは非常にうるさく、検索エンジンがこの記事を最初の検索結果に表示するのは残念だ。

良い質問をありがとう

1.10,000 か 100,000 か?" * " または " / " ? など。NSの入力データを形成する。(私の頭蓋骨の中にあるニューラルネットワークは、ファイルに出力されたデータを視覚的に気に入った。多分、もう一つの箱の中のニューラルネットワークも気に入るだろう。冗談だよ)NSでは、ニューラルネットワーク自体のハイパーパラメーター、アーキテクチャ、そして入力データの両方を実験しなければならない。ここでは、「2の2乗は4」ではなく、「2の2乗は?」だろう。

2.PythonTestExpertの 質問について。ストラテジーテスターのExpert AdvisorをH1の始値で動かしています。そして、インジケータクラスタのシフトは各バーで行われます。別のケースでは、1日に1回、00時にインジケータのシフトを使用しています。ここでも実験が必要です。

3.2つのインディケータ - 純粋に便宜的なもので、これは特殊なケースです。多くの場合、戦略は一方向の取引で構築される。したがって、データのサンプリングには、その日の極大値か極小値を示す1本の指標線を使用する方が便利です。ここでも、"前後 "のシフトを試してみてください。

4.Pythonスクリプトについて - そう、単純化しすぎたかもしれない。しかし、この記事の私の目標は、Python統合を使ったニューラルネットワークの実用的なアプリケーションの シンプルさを示すことだった。この段階では - 入力データの取得、トレーニング、テスト。「ボタンを押して結果を得る」。このトピックがこのような形で取り上げられたことがあっただろうか?私は知らない。他の人たちによって。でも、共有したかったんだ......。

5.そして、不条理の問題についての冗談として - テクニカル指標と呼ばれる一連の数式を箱の中に見て、お金を稼ごうとするのは不条理ではありませんか!))))。

 
Andrey Dibrov:

5.そして、不条理という質問に対するジョークとして、テクニカル指標と呼ばれる一連の数式を箱の中で見て、お金を稼ごうとするのは不条理ではないか!))))。

この記事が不合理なのは、腰を落ち着けて資料を読むことができないからである。一貫性のあるプレゼンテーションも、方法論の説明も、研究の目的もない。

これだ

この記事を書きながら、NSの学習目標に対する別のアプローチの例も挙げることにした。そのために、PythonIndicatorsスクリプトに変更を加えてみよう。

これは、記事の素材が劣った方法で準備されていることを示すもので、あなたは与えられた方法論の可能性をさらに探りたいのです。

このようなプレゼンテーションでは、「科学的な突っつき方」、つまり、「私はスピンをしてきたし、何が得られるか正確に知っている」という方法によって、他の何かをスピンしようとしないように見える。

ここでのロジックは、NSをこれから起こる出来事ではなく、達成された目標に対してトレーニングしているということだ。その方が論理的だと思うかもしれない。結局のところ、予測を立てるよりも過去の出来事を評価する方が簡単なのだ。

その結果、このような指標を得ることができるのだ。


プロ

最適化の結果である。

ペイントの切り抜き? なぜ画面上の日付とサイズが違うのか? 最適化パラメータの値はどこにあるのか?

これは何ですか?- Googleの "画像で検索 "ですか? こんな感じです:


 
Igor Makanu:

一貫性のあるプレゼンテーションも、方法論の説明も、研究の目的もなく、単純な話から複雑な話までしているのではなく、単に提示された資料に従うことに論理性がないのだ。

この

記事を書きながら、NSの学習目標に対する別のアプローチの例も挙げることにした。そのために、PythonIndicatorsスクリプトに少し変更を加えてみよう。

もしあなたが、与えられた方法論のさらなる可能性を探りたいのであれば、新しい目標を記述し、用意されたコードから何を使うかを記述してください。

このようなプレゼンテーションでは、「科学的な汲み上げ」の方法によって別の何かを紡いでみてはどうだろうか。


について

私は全くコメントしたくない - ペイントからの切り抜きセット? なぜ画面上の異なる日付、異なるサイズがありますか? 最適化パラメータの値はどこにありますか?

これは何ですか?- googleの "画像検索 "ですか? 君にはこう見えるのか?


原則的に、私はすべてに同意します - 私はコメントを考慮して記事を確定します。ありがとうございました。

 
Andrey Dibrov:

原則的に、私はすべてに同意する。コメントを考慮に入れて、記事を完成させるつもりだ。ありがとう

素晴らしい!

少なくとも私はこの方向性にとても興味があります。

ZY:はい、ここからは前回のメッセージの続きです。論文にあるすべての研究結果には再現性があるべきで、論文の妥当性を確認できるだけでなく、どこでそれを手に入れたか(最適化のスクリーンショット)を質問されることもないでしょう。


Sv.

 
MT5パッケージをインストールしましたが、使用したことはありません。簡潔にするために、すべてのインジケータを削除し、パイソンプログラムから取引することは可能です。
 
Maxim Dmitrievsky:
MT5パッケージをインストールしましたが、使用したことはありません。簡潔にするために、すべてのインジケータとトレードをパイソンプログラムから削除することができます。

はい、インジケータを使用してパイソンプログラムでNSを訓練しました。そして、別のパイソンプログラムは、訓練されたNSを使用して取引します...

 
<br/ translate="no">。

4.Pythonスクリプトについて - たしかに単純化しすぎたかもしれない......。しかし、この記事での私の目標は、Pythonの統合を使ったニューラルネットワークの実用的なアプリケーションの シンプルさを示すことでした。この段階では、入力データの取得、トレーニング、テストを行っている。「ボタンをクリックして結果を得る」。このトピックがこのような形で取り上げられたことがあるかどうか、私は知らない。私ではありません。他の人たちによって。でも、共有したかったんだ......。

5.そして、不条理の問題についてのジョークとして - テクニカル指標と呼ばれる一連の数式を箱の中で見て、お金を稼ごうとするのは不条理ではありませんか!))))。

「Python統合を 使ったニューラルネットワークの実用的な応用の 単純さを示すために あなたは失敗した。あなたの提案する手順は単純とは呼べない。そして、全く統合されていない

「MetaTrader5パッケージはこの目的のために書かれた。

ニューラルネットワークのハイパーパラメータの最適化と入力データの品質準備なくして、深刻な結果は語れない。Pythonは、これらの重要かつ単純ではないステップを実行するためのすべてを備えています。あなたの記事にはそれがありません。

「ボタンをクリックすれば結果が得られる」という のは、あなたのアプローチのことではありません。機械学習では、機械学習の自動化という分野全体が発展している。そこでは、あなたがデータを収集し、それをプログラムに渡すと、プログラムが前処理の方法とテクニックを決定し、このデータに最適な結果を与えるモデルを選択し、ハイパーパラメータを最適化し、使用するための準備の整った結果を生成する。

この記事には、ニューラルネットワークを作成し使用するための誤った一連のステップが示されている。統合が完全には使われていないという事実は悲しいが、致命的なものではない。それに、記事のタイトルはもっと控えめにすべきだ。

幸運を祈る。

 
Vladimir Perervenko:

「Pythonの統合を使ったニューラルネットワークの実用的なアプリケーションの シンプルさを示す ために あなたは失敗した。あなたの提案する手順はシンプルとは呼べない。そして、統合はまったくない

「MetaTrader5パッケージはこの目的のために書かれた。

ニューラルネットワークのハイパーパラメータの最適化と入力データの品質準備なしには、深刻な結果は語れない。Pythonは、これらの重要かつ単純ではないステップを実行するためのすべてを備えています。あなたの記事にはそれがありません。

「ボタンをクリックすれば結果が得られる」という のは、あなたのアプローチのことではありません。機械学習では、機械学習の自動化という分野全体が発展している。そこでは、あなたがデータを収集し、それをプログラムに渡すと、プログラムが前処理の方法とテクニックを決定し、このデータに最適な結果を与えるモデルを選択し、ハイパーパラメータを最適化し、使用するための準備のできた結果を提供する。

この記事には、ニューラルネットワークを作成し使用するための誤った一連の手順が示されているが、これは大きな欠陥だと私は思う。統合が完全には使われていないという事実は悲しいが、致命的なものではない。それに、記事のタイトルはもっと控えめにすべきだ。

幸運を祈る。

記事の最後にあるビデオをご覧になれば、データの取得、NSのトレーニング(ハイパーパラメータ)、そして結果のインディケータの構築の全プロセスに2分ほどかかることにお気づきでしょう。これは決して難しいことではなく、「選ばれし者」だけでなく、どんなトレーダーでも利用できるものです。

統合の問題についてこの記事で説明されている段階、特に入力データの受信とこのデータのサンプリングで、創造的なプロセス全体が行われます。個人的には、この目的のために独自の指標を使用している。そして今、私はあなたに少しストレスを与えるだろう))))- ニューラルネットワークの 開発のこの段階では、純粋な時系列を分析するためのハイパーパラメーターはあまり重要ではない。基本的に、NSは現在、ロボット工学のために(広い意味で)「研ぎ澄まされて」いる。分類のためである。つまり、完全な画像に対しては完璧に機能する。しかし、NSを犬猫で訓練し、耳だけを見せると、大げさに言えば、帽子をかぶったパイオニアという答えが返ってくる。そして、私たちの仕事では、完全なイメージは過去にしかなく、現在にはない......。だからこそ、このNSトレーニングの準備段階が重要なのだ。そして統合。- これは純粋に技術的なプロセスだ。Pythonはそれを大幅に簡素化し、トレーディングにおける実践的な応用の 平面にまで引き上げてくれる

機械学習では、機械学習の自動化という方向性が生まれています。そこでは、データを収集し、それをプログラムに渡すと、プログラムが前処理の方法や方法を決定し、このデータに対して最良の結果を得ることができるモデルを選択し、ハイパーパラメータを最適化し、使用するための準備の整った結果を生成します。
この場合も、完全な画像を分類するのに適している。トレーニング中に品質を決定することができる場合......我々は、テスト、MT5での最適化などに戻ってこなければならない。そして、ここで統合するのはもっと難しいが、将来の仕事の展望としては、そうだ...。
この記事は、ニューラルネットワークを作成し使用する段階の誤った順序を示している。統合が十分に活用されていないことは悲しいことだが、致命的なことではない。そしてもちろん、記事のタイトルはもっと控えめにすべきだ
正しい順序とは?
 

PythonIndicators .mq5 と PythonPrices.mq5 の2つのスクリプトを実行すると、空の .csv ファイルが作成されます。

ありがとうございます。