関数 - 構造体の配列をソートするためのメソッド。賞金10ドル - ページ 4

 
Sergey Dzyublik:

何が問題なのか?

関数そのものに加えて、関数をパラメータとして渡すためだけに、関数のtypedefを行って変数を作成する必要があり、これはラムダマクロの下で行うことである。

 
fxsaber:

確認したところ、動作しています。

残念ながらありません(((;゚Д゚)))


 
Vladimir Pastushak:

悲しいかな、そうではありません((

MT4ではソートがないのですね。
そこで、MT4用の推奨ソートの呼び出しを条件コンパイルに挿入し、MT5用のコードはそのままにしておきます。

 
Vladimir Pastushak:

悲しいかな、そうではありません((


MT4をアップデートしてください。

 

MT4でコードを確認 すると、すべて動作する

2020.04.21 23:27:35.728 スクリプト t EURUSD,H1: 削除されました。

2020.04.21 23:27:35.726 t EURUSD,H1: uninit reason 0

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.0868420.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

時間でソートする。

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21:00:001.0843 1.085271.084291.0851720.04.21 20:00:001です。08535 1.08551.084971.085022020.04.21 22:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.08685 1.087231.085271.08542020.04.21 18:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

価値の高いものから並べ替える。

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.0842920.04.21 21:00:001.08535 1.08551.084971.0850220.04.21 22:00:001.0843 1.08551.084971.085020202020202020202020202020202.085271.084291.085172020.04.21 20:00:001.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

オープンプライスでソートしています。

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.0868420.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

バー(ソートなし) - 受け取ったままの状態。

2020.04.21 23:27:35.726 t EURUSD,H1: 初期化されました。

2020.04.21 23:27:34.279 スクリプト t EURUSD,H1: 正常にロードされました。

MT4ビルド1262

このように解凍してください。

string MqlRatesToStr(MqlRates &arr[])
{
   string result = "";
   for(int i = 0; i < ArraySize(arr); ++i)
   {
      result += (string)(arr[i].close) + " " + (string)(arr[i].high) +(string)(arr[i].low) +(string)(arr[i].open) +(string)(arr[i].time);
   }
   return result;
}
 
Vladimir Pastushak:

提供されたコード では、ソートフィールドを指定できるようにするために、メイン関数ArraySortStructをマクロに戻すことを忘れていました。
しかし、このトピックの筆者は頑なに沈黙を守っている、どうやら私だけが必要としているようだ...。

 

アルゴリズム

1.構造体=文字列最初のループ

2.文字列の配列をソート する。第2ループ(コンプレックス、バブル)。

3.String = 構造体。3つ目のループ。

ほとんど速くならない。

理由

1.構造体はシステム上では文字列として表現され、アライメントのみを考慮する必要がある(バイト単位)。

2.文字列の処理速度は、他のデータ型の処理速度に比べ、はるかに高速です。

3.ループ内では、2つの文字列の比較のうち、1つの操作のみが行われます。フィールドの値を比較する必要はない。

90年代前半にクラリオンでやってました。うまくいった。

Документация по MQL5: Операции с массивами / ArraySort
Документация по MQL5: Операции с массивами / ArraySort
  • www.mql5.com
//| Получение значений границ для тиковых объемов                    | //| Custom indicator initialization function                         | //| Custom indicator iteration function                              | //
 
Sergey Dzyublik:

提供されたコード では、ソートフィールドを指定できるようにするために、メイン関数ArraySortStructをマクロに戻すことを忘れていました。
しかし、このトピックの筆者は頑なに沈黙を守っている、どうやら私だけが必要としているようだ...。

まだ見ていないんです。マクロがよくわからない。全コードを公開していただけるとありがたいです。
 
Алексей Тарабанов:

90年代前半にクラリオンでやってました。飛びました。

涙が出るほど)))

1コース1学期、アルゴリズムとプログラミングの最初の演習授業を覚えています...。最初はパスカルを習ったと思うのですが、IBMの端末を使った授業で、15〜20行でプログラムをコンパイルしていました...まあ、最初は2〜3分、その後、タイピングや構文エラーをたくさんした人は20分までかかっていました

2学期からは、486に取り組んでいました。


飛んでいた))))


SZS: 私の記憶ではEC-1035だったと思うのですが......飛びましたね!?

 
Igor Makanu:

涙が出るほど)))

1年生の前期、アルゴリズムやプログラミングの最初の演習を思い出して...。何を勉強していたのかも覚えていない。最初はPascalだったと思うが、授業はターミナルクラスのIBMコンピュータで、15〜20行のプログラムをコンパイルしていた。まあ、最初は2〜3分勉強していたが、タイピングやシンタックスエラーを連発する人が出てくると20分までかかるようになった

2学期からは、486に取り組んでいました。


とんだとばっちり))))


SZY: 間違ってなかったら、EC-1035でしたね......飛びましたよ

私は1976年に世界初のパーソナル電子デジタルコンピューターに着手しました。設計はウクライナ・ソビエト社会主義共和国科学アカデミー・キエフサイバネティクス研究所が担当しました。その後、「ミンスク32」、そして「EC」と続く。

理由: