他のタイムフレームに移動する際、インジケーターのグローバル変数の構造を変更するにはどうすればよいですか? - ページ 5 1234567 新しいコメント Nikolai Semko 2021.07.11 08:50 #41 fxsaber:パフォーマンス測定を書けば、比較できて面白いかもしれませんね。 なるほど。どうぞ。 私のパートはこちらです。 私はボールから次のテストインジケータを提案します(黄色でマークされたものは、TF間の配列構造の保存と復元を担当しています): 最初に呼び出されると、ウィンドウ内のランダムノードの配列(デフォルトでは100)が生成され、ベジェ曲線で接続されます。 TF を変更した場合、時刻と価格に連動するノードは保存され、変更されない。 より良い計量化のためには、ノード数を 1000 にするのが良い。 #property indicator_chart_window #include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 #include <CVar\StructArr.mqh> #define SIZE 100 struct Node { datetime time; double price; }; Node line[]; ulong t0 = GetMicrosecondCount(); CStructArr<Node> Var("Bezier",line); ulong t1=GetMicrosecondCount()-t0; int OnInit() { if (ArraySize(line) == 0) GenerateLine(); else { Print("Востановление данных - " + string(t1)+ " микросекунд"); Print("Время uint[] -> T[] - " + string(Var.uint_to_t)+ " микросекунд"); } DrawBezier(line); return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { return(rates_total); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void GenerateLine() { ArrayResize(line,SIZE); for (int i = 0; i<SIZE; i++) { line[i].time = Canvas.TimePos(double(rand() % W.Width)); line[i].price = Canvas.Price(rand() % W.Height); } t0 = GetMicrosecondCount(); Var.Set(line); t0 = GetMicrosecondCount()-t0; Print("Сохранение данных - " + string(t0)+ " микросекунд"); Print("Время T[] -> uint[] - " + string(Var.t_to_uint)+ " микросекунд"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DrawBezier(Node &arr[]) { int size = ArraySize(arr); if (size>1) { Canvas.Erase(0x00FFFFFF); int X[],Y[]; ArrayResize(Y,size); ArrayResize(X,size); for(int i=0; i<size; i++) { X[i] = (int)Canvas.X(line[i].time); Y[i] = (int)Canvas.Y(line[i].price); } Canvas.PolylineSmooth(X,Y,0xFFFF00FF,3); Canvas.Update(); } } //+------------------------------------------------------------------+ 2021.07.11 04:41:02.705 TestVar (EURUSD,M6) Сохранение данных - 15 микросекунд 2021.07.11 04:41:02.705 TestVar (EURUSD,M6) Время T[] -> uint[] - 4 микросекунд 2021.07.11 04:42:03.085 TestVar (EURUSD,M10) Востановление данных - 317 микросекунд 2021.07.11 04:42:03.085 TestVar (EURUSD,M10) Время uint[] -> T[] - 4 микросекунд 2021.07.11 04:42:10.012 TestVar (EURUSD,M12) Востановление данных - 878 микросекунд 2021.07.11 04:42:10.012 TestVar (EURUSD,M12) Время uint[] -> T[] - 4 микросекунд 2021.07.11 04:42:44.235 TestVar (EURUSD,M30) Востановление данных - 1061 микросекунд 2021.07.11 04:42:44.235 TestVar (EURUSD,M30) Время uint[] -> T[] - 8 микросекунд 2021.07.11 04:43:20.556 TestVar (EURUSD,M20) Востановление данных - 303 микросекунд 2021.07.11 04:43:20.556 TestVar (EURUSD,M20) Время uint[] -> T[] - 4 микросекунд 2021.07.11 04:43:25.339 TestVar (EURUSD,M15) Востановление данных - 443 микросекунд 2021.07.11 04:43:25.339 TestVar (EURUSD,M15) Время uint[] -> T[] - 5 микросекунд をSIZE=1000とした場合。 2021.07.11 05:01:32.602 TestVar (EURUSD,M5) Сохранение данных - 41 микросекунд 2021.07.11 05:01:32.602 TestVar (EURUSD,M5) Время T[] -> uint[] - 26 микросекунд 2021.07.11 05:01:36.541 TestVar (EURUSD,M6) Востановление данных - 586 микросекунд 2021.07.11 05:01:36.541 TestVar (EURUSD,M6) Время uint[] -> T[] - 64 микросекунд 2021.07.11 05:01:38.317 TestVar (EURUSD,M10) Востановление данных - 648 микросекунд 2021.07.11 05:01:38.317 TestVar (EURUSD,M10) Время uint[] -> T[] - 35 микросекунд 2021.07.11 05:01:40.534 TestVar (EURUSD,M12) Востановление данных - 567 микросекунд 2021.07.11 05:01:40.534 TestVar (EURUSD,M12) Время uint[] -> T[] - 36 микросекунд 2021.07.11 05:01:42.814 TestVar (EURUSD,M15) Востановление данных - 449 микросекунд 2021.07.11 05:01:42.814 TestVar (EURUSD,M15) Время uint[] -> T[] - 44 микросекунд 2021.07.11 05:01:45.015 TestVar (EURUSD,M20) Востановление данных - 728 микросекунд 2021.07.11 05:01:45.015 TestVar (EURUSD,M20) Время uint[] -> T[] - 59 микросекунд 2021.07.11 05:01:47.536 TestVar (EURUSD,M30) Востановление данных - 2349 микросекунд 2021.07.11 05:01:47.536 TestVar (EURUSD,M30) Время uint[] -> T[] - 45 микросекунд ファイル: TestVar.mq5 6 kb StructArr.mqh 3 kb Mikhail Nazarenko 2021.07.11 09:11 #42 MQLでは、グローバルな インジケータ変数に対する何らかのポインタがあれば最高です。これらは、インジケーターのインストール時に一度だけ初期化されます。 例えば、 intglobal Var;。この場合、これらのリソースはすべて必要ないでしょう。夢を見るのはやめて、前に進みましょう。 fxsaber 2021.07.11 09:26 #43 Nikolai Semko:これが私の作品です。 array out of range in 'iCanvas.mqh' (114,55) Maxim Kuznetsov 2021.07.11 09:33 #44 Mikhail Nazarenko:MQLでは、グローバルな インジケータ変数に対する何らかのポインタがあれば最高です。これらは、インジケーターのインストール時に一度だけ初期化されます。例えば、 intglobal Var;。この場合、これらのリソースはすべて必要ないでしょう。夢を見るのはやめて、前に進みましょう。 PersistentStorageの他に、ServerSideStorage(ちょっとしたものでもサーバーサイドに保存する)、AuthorOwnedCloud(一部のデータを作者が管理できるようにする)などがあればいいのですが...21世紀のものですね :-)... 夢よ、もういい...。 fxsaber 2021.07.11 09:35 #45 Nikolai Semko:TFが変わっても、時間や価格に連動するノードは保持され、変化しない。 これはアレイキャストの統計的な指標となるのでしょうか? PapaYozh 2021.07.11 09:38 #46 Taras Slobodyanik::)誰も「松葉杖」「車輪の再発明」「別端末へのデータ転送の困難さ」「MQL手段で解決しなければならない」...などと書かないのが不思議です。 メタクオーツソリューションは松葉杖とモウベツトンであることが判明)MQのこのソリューションはどこにあるのでしょうか? Nikolai Semko 2021.07.11 09:42 #47 fxsaber: array out of range in 'iCanvas.mqh' (114,55) 最新版 1.43https://www.mql5.com/ru/code/22164 古いバージョンのようです。 ファイル: iCanvas.mqh 52 kb Nikolai Semko 2021.07.11 09:47 #48 fxsaber:これはアレイキャストの統計的な指標となるのでしょうか? 誰もあなたが自分で調整することを止めはしません。 HH あと、文字列の話は勘弁してください。 この種のタスクでは、これらは無関係です。そのため、私のクラスには実装されていませんし、私の構造体は文字列型を 含むことができません。 クラスで実装されていますよね。しかし、私たちは別のことを話しているのです。 Taras Slobodyanik 2021.07.11 10:16 #49 PapaYozh: MQのこのソリューションはどこにあるのでしょうか? そう、もちろん、こうした解決策はまったく存在しないのです。 そこでユーザーは、FileWriteStructや GlobalVariableSetといった「松葉杖型自転車」を考案した。 そして、最も松葉づえのいらない解決策は、もちろん、変数をリソースに書き込むことと、構造体をグローバル変数に書き込むことである) fxsaber 2021.07.11 10:17 #50 Nikolai Semko: 最新版 1.43https://www.mql5.com/ru/code/22164 古いバージョンのようです。 エラーが発生したバージョンです。 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
パフォーマンス測定を書けば、比較できて面白いかもしれませんね。
なるほど。どうぞ。
私のパートはこちらです。
私はボールから次のテストインジケータを提案します(黄色でマークされたものは、TF間の配列構造の保存と復元を担当しています):
最初に呼び出されると、ウィンドウ内のランダムノードの配列(デフォルトでは100)が生成され、ベジェ曲線で接続されます。
TF を変更した場合、時刻と価格に連動するノードは保存され、変更されない。
より良い計量化のためには、ノード数を 1000 にするのが良い。
をSIZE=1000とした場合。
MQLでは、グローバルな インジケータ変数に対する何らかのポインタがあれば最高です。これらは、インジケーターのインストール時に一度だけ初期化されます。
例えば、
intglobal Var;
。この場合、これらのリソースはすべて必要ないでしょう。夢を見るのはやめて、前に進みましょう。
これが私の作品です。
MQLでは、グローバルな インジケータ変数に対する何らかのポインタがあれば最高です。これらは、インジケーターのインストール時に一度だけ初期化されます。
例えば、
intglobal Var;
。この場合、これらのリソースはすべて必要ないでしょう。夢を見るのはやめて、前に進みましょう。
PersistentStorageの他に、ServerSideStorage(ちょっとしたものでもサーバーサイドに保存する)、AuthorOwnedCloud(一部のデータを作者が管理できるようにする)などがあればいいのですが...21世紀のものですね :-)...
夢よ、もういい...。
TFが変わっても、時間や価格に連動するノードは保持され、変化しない。
これはアレイキャストの統計的な指標となるのでしょうか?
:)
誰も「松葉杖」「車輪の再発明」「別端末へのデータ転送の困難さ」「MQL手段で解決しなければならない」...などと書かないのが不思議です。
メタクオーツソリューションは松葉杖とモウベツトンであることが判明)
fxsaber:
最新版 1.43
https://www.mql5.com/ru/code/22164 古いバージョンのようです。
これはアレイキャストの統計的な指標となるのでしょうか?
誰もあなたが自分で調整することを止めはしません。
HH
あと、文字列の話は勘弁してください。
この種のタスクでは、これらは無関係です。そのため、私のクラスには実装されていませんし、私の構造体は文字列型を 含むことができません。
クラスで実装されていますよね。しかし、私たちは別のことを話しているのです。
そう、もちろん、こうした解決策はまったく存在しないのです。
そこでユーザーは、FileWriteStructや GlobalVariableSetといった「松葉杖型自転車」を考案した。
そして、最も松葉づえのいらない解決策は、もちろん、変数をリソースに書き込むことと、構造体をグローバル変数に書き込むことである)
最新版 1.43
https://www.mql5.com/ru/code/22164 古いバージョンのようです。
エラーが発生したバージョンです。