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

 
ミハイル・マルキュカイツ

そういうプログラマーなんです。コツをつかむまで、誰もきちんと説明できない...。とにかく、みんな!!!!!!聞いてください。ここからが大事な長文です......。


それは進化だ......やるか、死ぬかだ :) 私はそのプログラマーと同じだ。

 
ミハイル・マルキュカイツ

とにかく人!!!!!!!聞いてください。カミングアップ 重要な長文記事......。

師匠、燃やせ!

 

私が建玉残高(OI)に強いこだわりを持っていることは、皆さんもよくご存じのとおりです。なぜなら、OIは取引量の性質を判断する上で重要なリンクだからです。デルタと合わせて...ムフフ...。ちょっと美味しいネタ...。OIは確かに万能ではありませんが、モデルの性能の質を10%でも向上させることは、すでに高いウェイトを占めます!!!!そして、おお、ミラクル!!!!やっとの思いでたどり着いたのですが、残念ながらMT5しかそのような機能はなく、MT4から5への乗り換えの決め手となりました。Rafilのおかげで時間が短縮され、移行に良いスタートを切ることができたと、大いに感謝しています。EAはすでに書き込まれており、1週間分の統計がある。もちろん、これだけでは十分ではありませんが、M5、特にSiでは、この時間枠ではスプレッドの影響は一般的な商品のボラティリティと比較して小さいため、テストを開始する可能性があります。まあ...データはあるんだけど、思った通りのものしかないんだよね。モデルをトレーニングし、Delta+Volume+OIの組み合わせがどのようなものかを確認するため。Мкуль5については、それなりの知識はあるのですが、見つけてから、こんな素晴らしい力強い言語で誤解の壁に直面し、ゴールしてしまったようです。TCの一般的なコンセプトはこうだ。

今回は、モデルの理論値と数値の主な違いを探ってみることにする。

トレーニングセットの準備には、以下のアプリケーションスクリプトを使用しています。基本ストラテジーのシグナルをcsvファイルにアンロードするスクリプトです。そして、モデルを構築して、別の指標に突っ込むのです。私は2つ持っています。BuySiとSellSi、これらはAIを含む同じ指標です。入力については、これらの指標は、指標Delta+AD+OIのセットに対応しています。インジケーターからインジケーター、特にワンパッケージで...。何が問題なんだろう...。でも、ダメなんです...。があります.と、この美しく素晴らしいプログラミング言語についてこんなに知っているのは私だけだと思うのですが......。だからはどこだったかな......あ、そうだ......。問題はこれだ。

スクリプトでは1つのデータをファイルにアンロードしていますが、信号時のテストでは、プリントに他の値が表示されます。例えば、同じ信号がファイルに書かれていても、実際に入力でテストしてみると全く違うということがあります。そして、ここにパラドックスがあります。ハンドル初期化、バッファアクセス自体はスクリプトからコピーしたものです。しかし、BuySiは手で確認したため、テストの時点では十分なデータをロードしています。そして、最も興味深いのは、OMは同じファイルをロードし、AIの入力ですが、ADは標準、ターミナル1であることです。ファイル内のいくつかの値で、実際には他の。テストしている楽器とは別の楽器でインジケータを呼び出そうとすると、まさにこのパラメータが関係しているように思うのです。相場とインジケータの値の同期に問題があるのでは?この解決策には、事前の準備が必要な場合もあるかと思います。だから、人に助けを求めるのです。なぜ、スクリプトは同じiAD値を取得するのに、テストするとこれらの値が異なり、その結果、信号が変化し始めるのですか?アイコンがチャート上にある場合、つまり初期化時に計算されている場合は、以下のように表示されます。

私見ですが、非常に良いと思います。OMの影響はすぐに感じられますが、テスターで動かすと絵が変わってしまう...しかも良い方向には向かわない。

さらに、テスターは異なる信号で2回のランを行います。インダクターでバッファーをくみ上げれば間に合います。AIの計算は遅延して行われ、エラー4806は出なくなりましたが、踊る信号とデータの違い、STANDARD iAD indicatorと絶対同一のコード 助けを期待して、こんな長い記事を書くのが面倒だったとは、かなり消耗してます。iCustomで、現在とは異なるインストゥルメントでインジケータを呼び出すと、問題が発生するのだと思います。ただ、同じようにOIをdrizzling始めたが、私はその後、特定のファイルからロードするように強制し、すべてが合格したが、iADをどうするか?

このようにスクリプトで呼び出すと、データの入ったファイルが作成されます。

AD_H =iAD("BR-12.17",   0, VOLUME_REAL);  Sleep(1500);

で、バッファにアクセスすると、こんな感じ。

  double AD(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(AD_H,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

そして、このように入力を計算します。

      double AD=(AD(i+1)-AD(i+PNT+1))*Cont;

これはすべてスクリプトですが、AIを使ったインジケーターで、ハンドルが次のように書かれている場合に動作します。

AD_H =iAD("BR-12.17",   0, VOLUME_REAL);  

バッファーのアクセスはこんな感じ...

  double AD(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(AD_H,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

入力計算はこんな感じ...。

      double AD=(AD(i+1)-AD(i+PNT+1))*Cont;

すべてがコピーされただけなので、無理もない。でも、どうしてこんなに仕上がりに差が出るのでしょう。他の記号でインジケータが呼び出されたからだと思いますが。他のシンボルでインジケータを呼び出す前に、同期やその他のチェックなど、何かを準備する必要はありません。どうなんでしょう?

 
ヴィザード_。

マスター、発射!


OOO 明らかに...真剣な人たちが集まってきました。討論が熱くなると思います :-)

 

そして、今度はインジケータをコンパイルしてみると、ファイルに送ったデータをそのままプリンタに出力してくれるのです。しかし、テスト中は、入力の同じ信号が別の値になっています。どうして?

 

映画はないんですね......。悲しい:-)

 

あくまで推測ですが...

ADは出来高に依存するため、ゼロバーの値は常に変化しています。 あらかじめ生成されたADの値をファイルに埋めておき、そのファイルを読み込んでテストに使用する場合、EA自体ではまだわからない時期に、すでに生成されたゼロバーの値を使用して、先回りしている可能性が十分にあります。

 
Dr.トレーダー

あくまで推測ですが...

ADは出来高に依存するので、ゼロバー上の値は常に変化しています。 あらかじめ生成されたADの値をファイルに埋めておき、このファイルを読み込んでテストに使用すると、EA自体ではまだわからない時期に、すでに生成されたゼロバーの値を使って、先回りしている可能性が高いです。


いいえ、ADを使ってファイルを書き込むことはなく、すべてシンボルから直接取得します。同期チェックの不足が原因ではないかと思います。また、エラー4806は常に発生していました。メインインジケータにディレイを導入したところ、エラーは出なくなりましたが、問題は解消されませんでした。:-(

 

以下は、コンパイル後のターミナルからのプリントです。

2017.11.27 20:59:17.625 Buy_Si (Si-12.17,M5)2017.11.23 11:05:00 1.0 -116.0 64.0 2292.0 -206.0 413 4.

とこちらも代理店から。

2017.11.27 20:59:38.318 2017.11.23 11:10:40 2017.11.23 11:05:00 1.0 -116.0 140.0 -1889.0 -993.0 1 4

時間11:05:-116はファイルから取得したOIで、これも同じです。そして、異なるシンボルから3つのAD値があります。すると、うまくバーが回ってきて、パラメータがポン。

ADのデータが違う理由同期チェックが挿入された......?

 

コードがないと何もわからない。

単純にインジケータの値を読み、ログに書き出す(あるいは、後で比較しやすいようにcsvファイルに書き出す)ための最小限の関数を備えたシンプルなExpert Advisorを作る必要があります。この場合、結果は異なるので、Expert Advisorのコードと一緒にサービスデスクに送信する必要があります。
また、そのコードを端末に添付することもできます。https://www.mql5.com/ru/forum/1111/page2096。そうすれば、知識のある人がチェックして、何が問題なのかを確認したり、説明したりすることができます。