記事"相場パターンを見つけるための計量的アプローチ:自己相関、ヒートマップ、散布図"についてのディスカッション - ページ 2

 
Maxim Dmitrievsky:

こんにちは、MetaQuotesはpython APIを変更しました。後で修正して新しいノートブックを添付します。

また、このサイトで新しいドキュメントをチェックできます。

迅速なご回答とご協力に感謝いたします。


新しいファイルを待っています。

 

いい記事だ!あなたの仕事を共有してくれてありがとう!

Python API の問題を修正する時間があることを願っています。


/Rasoul

削除済み  

固定ノート

ファイル:
削除済み  

PythonのAPIが変更されたため、ノートブックのバージョンを修正しました。

ファイル:
 
Maxim Dmitrievsky:

PythonのAPIが変更されたため、ノートブックのバージョンを修正しました。

記事に添付

 

Close[-1]=(Close[0]-Close[lag])-((Close[lag]-Close[lag*2])-(Close[lag-1]-Close[lag*2-1])。

ここで 同じ計算式を当てはめると、MA予測と同じような状況になり、期間が長ければ長いほど、一歩先のMA予測の精度が高くなります。

私が行ったのは、大きな期間のMAをとり、1小節先を予測し、そこから価格予測を計算するというものです。予測誤差(実際の価格予測)を計算した。価格の増分を計算した。その結果、誤差は増分よりも大きかった。つまり、「今日も昨日と同じようになる」というのが最良の予測だと言える。

削除済み  
Rorschach:

クローズ[-1] = (クローズ[0]-クローズ[ラグ]) - ((クローズ[ラグ]-クローズ[ラグ*2]) - (クローズ[ラグ-1]-クローズ[ラグ*2-1])))

ここで 同じ計算式を当てはめると、MA予測と同じような状況になり、期間が長いほど一歩先のMA予測の精度が高くなります。

私が行ったのは、大きな期間のMAをとり、1小節先を予測し、そこから価格予測を計算するというものです。予測誤差(実際の価格予測)を計算した。価格の増分を計算した。その結果、誤差は増分よりも大きかった。つまり、「今日も昨日と同じようになる」というのが最良の予測だと言える。

そこでは、フィルタリングされた系列(特定の、条件付きで、時間)に対する自己回帰が使用されている。近隣の時計の増分が回帰変数として使われる。そう、これは一歩先の予測なのだ。詳しい実験はしていない。mt5でランダム・ウルフ用のカスタム・シンボルを作れば、記事のボットでテストできます。残念ながら私は彼らと友達ではありません。誰かが作ってくれるかもしれません。
 
#property script_show_inputs
#include <Math\Stat\Math.mqh>
#include <rndxor128.mqh>//https://www.mql5.com/ja/articles/273
//--- 入力パラメータ
input string   symbol_origin="EURUSD";// カスタムシンボルを作成するためのシンボル名 
input string   symbol_name="MySymbol";// ユーザーキャラクター名 
input datetime From=D'2019.01.01';
input datetime To=D'2020.01.01';

void OnStart()
  {
   CustomSymbolCreate(symbol_name,"",symbol_origin);
   SymbolSelect(symbol_name,true);
   int count=100;/標準偏差 m1=sqrt(count)
   RNDXor128 xor;
   //xor.SRand(6);//(GetTickCount());
   MqlRates A[];
   double B[]; ArrayResize(B,count);
   int total=CopyRates(symbol_origin,PERIOD_M1,From,To,A);
   for(int i=0;i<total;i++)
     {for(int j=0;j<count;j++) {B[j]=(xor.Rand()<2147483648)?_Point:-_Point;}
      MathCumulativeSum(B);
      A[i].open=(i>0) ? A[i-1].close : 1.1;
      A[i].high=MathMax(B)+A[i].open;
      A[i].low=MathMin(B)+A[i].open;
      A[i].close=B[count-1]+A[i].open;
      A[i].tick_volume=count;
     }
   Print(CustomRatesReplace(symbol_name,From,To,A));
  }
チャート設定(Ctrl+O)で、必要なバーの数を 選択する必要があります。
削除済み  
Rorschach:
チャート設定(Ctrl+O)で、必要なバーの数を 選択する必要がある。

後で、自己回帰で同じ方法を行い、系列をpythonにアップロードし、モデルを構築する。

 

記事を読むのをとても楽しんでいます!

この例では、記事全体を通して1時間を選択した後に.diff(lag)を設定していることに気づきました。 つまり、25のラグが実際には25日のラグに対応するということです。

例外は3Dプロットで、時間を選択する前にラグを適用しています。これは意図的なのでしょうか?