DLLを使わずにMetaTrader 5で直接OpenCLを使ってできることは次のとおりです。 - ページ 11 1...456789101112131415161718 新しいコメント 削除済み 2017.04.14 22:37 #101 fxsaber:どうやら、アルゴトレーダーのプログラミングの目的は、このよう なもの、つまり数行の中にすべての取引ロジックが含まれているというものらしい。この例では、シグナルがポジティブなトレンドを示すために、アルゴトレーディングの目標全体は、実際にはたった1本の線に含まれています。オーダーロジックとは関係ないが、TSの結果には決定的な意味を持つ。"全く同じライン "は、どんな有能なExpert Advisorにもあるのです。そして、アルゴトレーダーが書いているものです。 そして、実際の取引ではどのように表示されるのでしょうか。機嫌が悪いんですね。きっと、実作業とは関係ない些細なこと(Pingが飛んだり、パケットロスしたり、ネットワークの電圧変動でローバにトラブルが起きたり)に問題があるのだろう。ちなみに、これは私のテーマでも あり、ゆっくりロボットを作っています。 Konstantin 2017.04.15 01:50 #102 Alexey Oreshkin: なぜ? ロボット用のguiは全く作ったことがないので、無駄な時間を過ごす意味がないと思っています。また、starbitrage戦略を視覚的に分析する方法がわからない))。解析はすべて計算データのみですが、その分デバッグ段階で十分なログが取れています。例えば、ストラテジーのデバッグ 段階でこのようなデータが使われますが、その可視化では何も分かりません。 ファイル: test_Cointegration.zip 2823 kb 削除済み 2017.04.15 02:06 #103 fxsaber:どうやら、アルゴトレーダーのプログラミングの目的は、このよう なもの、つまり数行の中にすべての取引ロジックが含まれているというものらしい。この例では、シグナルがポジティブなトレンドを示すために、アルゴトレーディングの目標全体は、実際にはたった1本の線に含まれています。オーダーロジックとは関係ないが、TSの結果には決定的な意味を持つ。"全く同じライン "は、どんな有能なExpert Advisorにもあるのです。そして、アルゴトレーダーが書いているものです。 ダニはスキャルピングにのみ適しています。正しいエントリーのためのテクニカル分析がないため、ポジションの半分がフラットで動かなくなるため、クローズドアルゴリズムの短期戦略でさえも信頼できないのである。ランダムに入力し、その結果が対応する。しかし、ティックによるエントリーは、スキャルピングのような、エントリー・エグジットで5〜10銭の利益を得るようなものでしょうか。もう一度言いますが、あなたは彼らの過去の状態を知っていますが、未来の状態を知ることはありません。それは外国為替の性質である。 この可視化されたナンセンスの代わりに、あなたのエキスパート-アドバイザに指標のカップルを添付し、彼らはチャートを分析し、0.5以上の確率でさらなる価格の動きのベクトルを識別します。) Vladimir Karputov 2017.04.15 11:46 #104 このトピックに関係のないコメントは、「GUIコンセプト」に移動しました。 Stanislav Dray 2017.04.15 11:47 #105 もう一度、DLLを使わずにMetaTrader 5のターミナルで 直接OpenCLを使って何ができるかを見つけるためにトピックに来ます。デタラメなハナシを読まなければならない...頼むから、このテーマで書くことがないのなら、一切書かないでくれ...。 Marat Sultanov 2017.04.18 19:49 #106 とても不思議です。 まさにターミナルでメモリリークしているような感じです。それを実証するためにスクリプトを書きました。見落としがないか、本当にバグなのか、確認したいです。//+------------------------------------------------------------------+ //| OpenCL_MemoryLeak.mq5 | //| Copyright 2017, Progid | //| http://www.mql5.com/en/users/progid/ | //| 18.04.2017 | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, Progid" #property link "http://www.mql5.com/en/users/progid/" #property version "1.00" //+------------------------------------------------------------------+ //| define //+------------------------------------------------------------------+ #ifndef _Error_ #define _Error_(info) { Print("Error: ",info," line: "+(string)__LINE__+" file: "+__FILE__+" function: "+__FUNCTION__+"; GetLastError: "+(string)GetLastError()); } #endif #ifndef _ErrorDefault_ #define _ErrorDefault_(info,r) { _Error_(info) r; } #endif #define _RAM_Print_ Print("RAM used: Program(",MQLInfoInteger(MQL_MEMORY_USED)," MB) Terminal(",TerminalInfoInteger(TERMINAL_MEMORY_USED)," MB)"); //+------------------------------------------------------------------+ //| resource //+------------------------------------------------------------------+ //#resource "Gpu_Code_0.cl" as string _CL_GpuCode_0 string _CL_GpuCode_0 = "" "__kernel void GPU_Test (global int * buf_0," " global int * buf_1," " global int * buf_r," " " " local int * l_buf_1)" "{" " const int id = get_global_id(0);" " " " buf_r[id] = 0;" " " " l_buf_1[id] = buf_0[id] * buf_1[id];" " " " buf_r[id] = l_buf_1[id];" "}"; //+------------------------------------------------------------------+ //| include //+------------------------------------------------------------------+ #include <OpenCL\OpenCL.mqh> //+------------------------------------------------------------------+ //| global var //+------------------------------------------------------------------+ COpenCL _OpenCL; const int _Size = 5000; int _Buf_0[]; int _Buf_1[]; int _Buf_r[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { if (ArrayResize(_Buf_0, _Size) != _Size) _ErrorDefault_("", return) if (ArrayResize(_Buf_1, _Size) != _Size) _ErrorDefault_("", return) if (ArrayResize(_Buf_r, _Size) != _Size) _ErrorDefault_("", return) for (int i=0; i<_Size; ++i) { _Buf_0[i] = i; _Buf_1[i] = i; } if (!GPU_Init()) _ErrorDefault_("", return) while(!_StopFlag) { if (!GPU_Test()) _ErrorDefault_("", break) } _OpenCL.Shutdown(); Print("Completed!"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool GPU_Init() { #define _gpu_error_ _OpenCL.Shutdown(); return false //---init if (!_OpenCL.Initialize(_CL_GpuCode_0, true)) _ErrorDefault_("", _gpu_error_) //---kernels if (!_OpenCL.SetKernelsCount(1)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.KernelCreate(0, "GPU_Test")) _ErrorDefault_("", _gpu_error_) //---buffers if (!_OpenCL.SetBuffersCount(3)) _ErrorDefault_("", _gpu_error_) //buf_0 if (!_OpenCL.BufferCreate(0, _Size*sizeof(int), CL_MEM_READ_ONLY)) _ErrorDefault_("", _gpu_error_) //buf_1 if (!_OpenCL.BufferCreate(1, _Size*sizeof(int), CL_MEM_READ_ONLY)) _ErrorDefault_("", _gpu_error_) //buf_r if (!_OpenCL.BufferCreate(2, _Size*sizeof(int), CL_MEM_WRITE_ONLY)) _ErrorDefault_("", _gpu_error_) //---args if (!_OpenCL.SetArgumentBuffer(0, 0, 0)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.SetArgumentBuffer(0, 1, 1)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.SetArgumentBuffer(0, 2, 2)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.SetArgumentLocalMemory(0, 3, _Size*sizeof(int))) _ErrorDefault_("", _gpu_error_) //---write to GPU if (!_OpenCL.BufferWrite(0, _Buf_0, 0, 0, _Size)) _ErrorDefault_("", return false) if (!_OpenCL.BufferWrite(1, _Buf_1, 0, 0, _Size)) _ErrorDefault_("", return false) //--- #undef _gpu_error_ return true; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool GPU_Test() { for (int c=0; c<100; ++c) { //---Execute uint GlobalWorkOffset[1] = {0}; uint GlobalWorkSize[1] = {0}; GlobalWorkSize[0] = _Size; if(!_OpenCL.Execute(0, 1, GlobalWorkOffset, GlobalWorkSize)) _ErrorDefault_("", return false) if(!_OpenCL.BufferRead(2, _Buf_r, 0, 0, _Size)) _ErrorDefault_("", return false) } //---RAM int RAM_Used = TerminalInfoInteger(TERMINAL_MEMORY_USED); if (RAM_Used > 3024) _ErrorDefault_("RAM used: "+(string)RAM_Used+" > 3024 MB", return false) static ulong LastMSC = 0; if (GetMicrosecondCount() - LastMSC >= 3000000) { _RAM_Print_ LastMSC = GetMicrosecondCount(); } //--- return true; }メモリが漏れているのが、かなり目立つ。1分間に100MB。MQLInfoInteger(MQL_MEMORY_USED) で除外されているので、プログラム上ではリークを除外しています。これは本当にバグなのか、サービスデスクに問い合わせるべきなのか。このスクリプトは、プログラム自身とターミナルによって消費されたRAMの量をログに出力します。 Konstantin 2017.04.19 00:29 #107 Marat Sultanov:とても不思議です。 まさにターミナルでメモリリークしているような感じです。それを実証するためにスクリプトを書きました。見落としがないか、本当にバグなのか、確認したいです。メモリが漏れているのが、かなり目立つ。1分間に100MB。MQLInfoInteger(MQL_MEMORY_USED) で除外されているので、プログラム上ではリークを除外しています。本当にバグなのか、servicedeskに行く価値はあるのか? この件に関する研究結果を後日ここに投稿してください、犬の埋葬場所がわかるように )) Marat Sultanov 2017.04.19 09:55 #108 OpenCLを実用的なタスクで使っている人はいないのでしょうか?:)Konstantin: その犬がどこに埋まっているのか、調べた結果をここに投稿してください ))OKです。すみません、私と同じで、これが原因で行き詰っているのか、それとも一般的な開発のために知りたいのか? Igor Volodin 2017.04.19 10:15 #109 Marat Sultanov:OpenCLを実用的なタスクで使っている人はいないのでしょうか?:) そうなんですが、あなたの例には手が回らないんです Marat Sultanov 2017.04.19 11:04 #110 Igor Volodin: そうなんですが、あなたの例には手が回らないんです素晴らしい。このスクリプトは、プログラム自身と端末の両方で消費されたRAMの量をログに出力します。このスクリプトを実行すると、端末が何MBのRAMを消費しているか、すぐにログで確認することができます。プログラムで集中計算を行うことはありますか? 1...456789101112131415161718 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どうやら、アルゴトレーダーのプログラミングの目的は、このよう なもの、つまり数行の中にすべての取引ロジックが含まれているというものらしい。
この例では、シグナルがポジティブなトレンドを示すために、アルゴトレーディングの目標全体は、実際にはたった1本の線に含まれています。
オーダーロジックとは関係ないが、TSの結果には決定的な意味を持つ。
"全く同じライン "は、どんな有能なExpert Advisorにもあるのです。そして、アルゴトレーダーが書いているものです。
そして、実際の取引ではどのように表示されるのでしょうか。機嫌が悪いんですね。きっと、実作業とは関係ない些細なこと(Pingが飛んだり、パケットロスしたり、ネットワークの電圧変動でローバにトラブルが起きたり)に問題があるのだろう。ちなみに、これは私のテーマでも あり、ゆっくりロボットを作っています。
なぜ?
ロボット用のguiは全く作ったことがないので、無駄な時間を過ごす意味がないと思っています。
また、starbitrage戦略を視覚的に分析する方法がわからない))。解析はすべて計算データのみですが、その分デバッグ段階で十分なログが取れています。例えば、ストラテジーのデバッグ 段階でこのようなデータが使われますが、その可視化では何も分かりません。
どうやら、アルゴトレーダーのプログラミングの目的は、このよう なもの、つまり数行の中にすべての取引ロジックが含まれているというものらしい。
この例では、シグナルがポジティブなトレンドを示すために、アルゴトレーディングの目標全体は、実際にはたった1本の線に含まれています。
オーダーロジックとは関係ないが、TSの結果には決定的な意味を持つ。
"全く同じライン "は、どんな有能なExpert Advisorにもあるのです。そして、アルゴトレーダーが書いているものです。
ダニはスキャルピングにのみ適しています。正しいエントリーのためのテクニカル分析がないため、ポジションの半分がフラットで動かなくなるため、クローズドアルゴリズムの短期戦略でさえも信頼できないのである。ランダムに入力し、その結果が対応する。しかし、ティックによるエントリーは、スキャルピングのような、エントリー・エグジットで5〜10銭の利益を得るようなものでしょうか。もう一度言いますが、あなたは彼らの過去の状態を知っていますが、未来の状態を知ることはありません。それは外国為替の性質である。 この可視化されたナンセンスの代わりに、あなたのエキスパート-アドバイザに指標のカップルを添付し、彼らはチャートを分析し、0.5以上の確率でさらなる価格の動きのベクトルを識別します。)
もう一度、DLLを使わずにMetaTrader 5のターミナルで 直接OpenCLを使って何ができるかを見つけるためにトピックに来ます。
デタラメなハナシを読まなければならない...頼むから、このテーマで書くことがないのなら、一切書かないでくれ...。
とても不思議です。
まさにターミナルでメモリリークしているような感じです。
それを実証するためにスクリプトを書きました。見落としがないか、本当にバグなのか、確認したいです。
メモリが漏れているのが、かなり目立つ。1分間に100MB。
MQLInfoInteger(MQL_MEMORY_USED) で除外されているので、プログラム上ではリークを除外しています。
これは本当にバグなのか、サービスデスクに問い合わせるべきなのか。
このスクリプトは、プログラム自身とターミナルによって消費されたRAMの量をログに出力します。
とても不思議です。
まさにターミナルでメモリリークしているような感じです。
それを実証するためにスクリプトを書きました。見落としがないか、本当にバグなのか、確認したいです。
メモリが漏れているのが、かなり目立つ。1分間に100MB。
MQLInfoInteger(MQL_MEMORY_USED) で除外されているので、プログラム上ではリークを除外しています。
本当にバグなのか、servicedeskに行く価値はあるのか?
この件に関する研究結果を後日ここに投稿してください、犬の埋葬場所がわかるように ))
OpenCLを実用的なタスクで使っている人はいないのでしょうか?:)
その犬がどこに埋まっているのか、調べた結果をここに投稿してください ))
OKです。すみません、私と同じで、これが原因で行き詰っているのか、それとも一般的な開発のために知りたいのか?
OpenCLを実用的なタスクで使っている人はいないのでしょうか?:)
そうなんですが、あなたの例には手が回らないんです
そうなんですが、あなたの例には手が回らないんです
素晴らしい。このスクリプトは、プログラム自身と端末の両方で消費されたRAMの量をログに出力します。このスクリプトを実行すると、端末が何MBのRAMを消費しているか、すぐにログで確認することができます。
プログラムで集中計算を行うことはありますか?