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

 
イゴール・マカヌ

なんで2クリックでOHLCとスプレッドが表示され、注文の開始/終了時にスプレッドが差し引かれます。

TPが発動した場合、どこから差し引けばいいのでしょうか?テスターが描いたバランスラインとエクイティラインから?そして、その最終的な価値から?どうすればいいのか、調べなければ...。
 
Renat Fatkhullin:

プログラミング言語とその未来について語るあなたは、TIOBE Indexが プログラミング言語の人気を示す最も権威あるインデックスであることを知らないでしょう。

あなたにとって、それはノナメなんです。

このTIOBE Indexに 再度アクセスしたところ、
1件の言及があった:

次の50の プログラミング言語

以下の言語一覧は、#51~#100を表 します。なお、プログラミング言語の違いは比較的小さい ので、一覧表(アルファベット順)のみと した。

  • 4次元/4次元、ABC、ActionScript、Alice、Applescript、AutoLISP、B4X、bc、Bourne shell、CIL、CL(OS/400)、Clojure、CoffeeScript、Common Lisp、Crystal、cT、Elixir、Emacs Lisp、Erlang、F#、Factor、Hack,Icon, Inform, Io, J, Korn shell, Ladder Logic, LiveCode, Maple, ML,MQL4, NATURAL, Nim, OpenCL, OpenEdge ABL, PILOT, PL/I, PostScript, Q, Ring, RPG, S, Simulink, Small Basic, SPARK, SPSS, Stata, Tcl, Verilog.

 
elibrarius:

すべてのHighとLowについて、時間による到着順を維持する必要がある、つまり、私が書いた順とは限らない。

私のスクリプトがまさにそうです。

for(int i = ArraySize(ticks) - 1; i >= 0; i--)
   {
      ticks[i].bid = ticks[i].ask;
   }

Pythonでテストしているのか、Rでテストしているのか?- オリジナルキャラクターのOHLCをアップロードし、チャートにスクリプトをドロップ.おっと、その場で書くと、設定に時間D'2021.01.01' を入れる必要がありますね

このOHLCは 完全に同期しています。

 

一般的に、私の考えは生半可なもので、落とし穴があるかもしれません。例えば、価格がLowに達する前に少し下がり、その後Highまで上がり、Lowまでしか上がらないということです。
すべてのティックがなければ、最初のTPやSLを推定することは不可能です。

ただし、私のMOモデルでは、TPとSLの両方がバー上でトリガーした場合、最初にトリガーした方が不利なバリエーション、つまりSLだと考えています。


でも、私以外の誰かが、そんなリアルなOHLCの恩恵を受けられるとしたら...と考えると、何か考えさせられるものがありますね。

 
イゴール・マカヌ

これは、まさに私のスクリプトが行っていることです。

Pythonでテストしているのか、Rでテストしているのか?- オリジナルキャラクターのOHLCをアンロードし、スクリプトをチャートにドロップする・・・。おっと、その場で書くと、設定に時間D'2021.01.01' を入れる必要がありますね

このOHLCは 完全に同期しています。

ファイルにアップロードして、RやpythonやDLLやリモートサーバー にアップロードするんです。
 
elibrarius:

一般的に、私の考えは生半可なもので、落とし穴があるかもしれません。例えば、価格がLowに達する前に少し下がり、その後Highまで上がり、Lowまでしか上がらないということです。
すべてのティックがなければ、最初のTPやSLを評価することは不可能です。

ただし、私のMOモデルでは、TPとSLの両方がバー上でトリガーした場合、最初にトリガーした方が不利なバリエーション、つまりSLだと考えています。


でも、私以外の誰かが、そんなリアルOHLCの恩恵を受けるとしたら...と考えると、何か考えさせられるものがありますね。

もちろん、ティック到着時刻がなければ、OHLCだけでは、以前の高値や安値を推定することはできません。

これは、私が自分自身に行ったのと同じ作業ですhttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

#define  OPEN   0
#define  HIGH   1
#define  LOW    2
#define  CLOSE  3

MqlTick HistoryData[];
MqlTick bar[4];
const datetime t_bar[] = {0, 20, 40, 59};
//+------------------------------------------------------------------+
int OnInit()
{
   ArrayResize(HistoryData, 1, 2000000);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   int handle = FileOpen(_Symbol + "_tick.bin", FILE_WRITE | FILE_BIN | FILE_COMMON);
   if(handle < 0)
   {
      Print("Erorr write array # ", GetLastError());
      return;
   }
   FileWriteArray(handle, HistoryData, 1);
}
//+------------------------------------------------------------------+
void OnTick()
{
   MqlTick tick;
   if(!SymbolInfoTick(_Symbol, tick)) return;
   static datetime LastBarM1 = 0;
   datetime d_minutes = tick.time / 60;
   if(LastBarM1 == 0)   // первый запускt
   {
      for(int i = 0; i < 4; i++) bar[i] = tick; // проинициализируем
      LastBarM1 = d_minutes;
   }

   if(d_minutes != LastBarM1) //--- если новая минута
   {
      if(bar[HIGH].time_msc > bar[LOW].time_msc)   // поменяем местами по времени тика
      {
         MqlTick tmp = bar[LOW];
         bar[LOW] = bar[HIGH];
         bar[HIGH] = tmp;
      }
      datetime t = LastBarM1 * 60;  // посчитаем вренмя, sec = 0
      for(int i = 0; i < 4; i++)    // подменим время тика
      {
         bar[i].time = t + t_bar[i];
         bar[i].time_msc = bar[i].time * 1000;
      }
      ArrayInsert(HistoryData, bar, ArraySize(HistoryData));   // добавим в массив
      for(int i = 0; i < 4; i++) bar[i] = tick;                // проинициализируем
      LastBarM1 = d_minutes;                                   // запомним минуты
   }

   if(tick.ask > bar[HIGH].ask) bar[HIGH] = tick;
   if(tick.ask < bar[LOW].ask)  bar[LOW]  = tick;
   bar[CLOSE] = tick;
}
//+------------------------------------------------------------------+

このスクリプトは、高値/安値の順番を、その前にあったものに応じてアンロードします。

 
イゴール・マカヌ

もちろん、ティック到着時刻がなければ、OHLCだけでは何が高かったのか、安かったのかを推定することはできません。

これは、私が自分自身に行ったのと同じ作業ですhttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

このスクリプトは、以前の内容に応じて、正しい順序でハイ/ローをアンロードします。

ありがとうございます、近いうちにそういうことをやってみます。
 
elibrarius:

一般的には、リアルティックの第二版が必要ですが、6ティックのみです。
Open: Bid and Ask

高値落札

ハイアスク

低入札価格

ローアスク

クローズ:ビッド&アスク

すべてのHighとLowについて、時間による到着の順番を守る必要がある、つまり、私が書いた順番でなくてもよい。

このようなツールを使えば、実際のティックのような精度でBarsを推定することが可能です。もっともっと少ない交通量で。そして、テスターはもちろんそれらを使ってトレードすることを教えるべきです。しかし、本物のティックのエンジンは、何も手を加えなくても大丈夫だと思うのです。

fxsaberは少し前にMT4でやってました。

今は全く問題ありません。実際のティックから、どんな薄型バージョンでもカスラム・エンジンに作り上げ、テストすることができるのです。

 
Renat Fatkhullin:

OpenCLやDirectXと同様に、WinMLとの直接統合を開発する予定です。

さらに、他の言語と同様にC++のモジュール/パッケージを搭載する大きなプロジェクトがあります。つまり、多くのオープンソースライブラリをパッケージ化することが可能になるのです。

マトリックス演算は、少なくともCPU/マルチスレッド/AVXで行うが、GPUでも可能な場合がある。

ハイライトの音は感動的です。特に、C++で同様のKerasや少なくともTenzor Flowのライブラリがあればなおさらです。ありがとうございます。

s.w. WinMLはオンライン作業のみで、トレーニングはないんですよね?でも、いいじゃないですか、モデルがどんどん重くなるんですから。

 
マキシム・ドミトリエフスキー

実際のチャートはどこで、生成されたチャートはどこですか?


上が生成されたチャート、下がマーケットチャート

理由: