MQL4およびMQL5でDigits()をバイパスして任意の数値(引用符だけでなく)の小数点以下桁数を取得 - ページ 18

 
Dmitry Fedoseev:

らしいが、絶望しないでくれ、すべては失われない、私はあなたを信じている。

さて、これは何のためにあるのでしょうか?続けて、お願いします。

 
fxsaber:

MQLを超えることなく。

#import "msvcrt.dll"
  long memcpy(MqlTick &dst[], int &src[], uint cnt);
  long memcpy(int &dst[], MqlTick &src[], uint cnt);
#import

int TicksToIntArray_thexpert( MqlTick &Ticks[], int &Array[] )
{
  const int Size1 = ArraySize(Ticks);
  const int Size2 = ArrayResize(Array, Size1 * sizeof(MqlTick) / sizeof(int));

  memcpy(Array, Ticks, Size2 * sizeof(int));
  
  return Size2;
}

// Перевод массива int[] в массив тиков.
int IntArrayToTicks_thexpert( int &Array[], MqlTick &Ticks[] )
{
  const int Size1 = ArraySize(Array);
  const int Size2 = ArrayResize(Ticks, Size1 * sizeof(int) / sizeof(MqlTick));

  memcpy(Ticks, Array, Size2 * sizeof(MqlTick));
  
  return Size2;
}

Time[TicksToIntArray_fxsaber2(TicksIn,Array)] = 140528
Time[IntArrayToTicks_fxsaber2(Array,TicksOut)] = 159885
true
Time[TicksToIntArray_thexpert(TicksIn,Array2)] = 58099
Time[IntArrayToTicks_thexpert(Array2,TicksOut2)] = 65944
true
 
TheXpert:

ありがとうございます、今のところ順調です。

https://www.mql5.com/ru/forum/287618/page18#comment_9813963
TicksToIntArray_thexpert
Time[TicksToIntArray(TicksIn,Array)] = 80994
IntArrayToTicks_thexpert
Time[IntArrayToTicks(Array,TicksOut)] = 80410
true

https://www.mql5.com/ru/forum/287618/page18#comment_9814108
TicksToIntArray_fxsaber4
Time[TicksToIntArray(TicksIn,Array)] = 102718
IntArrayToTicks_fxsaber4
Time[IntArrayToTicks(Array,TicksOut)] = 103835
true


DLLバリアントは、おそらくこれ以上加速できない(単純なものが出てこない)より優れたMQLバリアントより20%高速です。

ファイル:
 
個人的には、少なくともセキュリティが低下し、使い方が複雑になり、見た目も曖昧になるので、20%の利益のためとはいえ、dllは使わない方がいいと思います。他人のソフトを使うときは、DLLコールを完全に無効にした方が良いのでは...。
 

fxsaber:

DLLバリアントは、おそらくこれ以上加速できない(単純なものではない)より優れたMQLバリアントより20%高速です。

配列のサイズを 128から10000にすると、コードが高速化されるかもしれません。

Ilya Malev:
私個人としては、たとえ20%のスピードアップのためであっても、dllは使いません。少なくともセキュリティが低下し、使い方が複雑になり、見た目も曖昧になるからです。他人のソフトウェアを使用する場合は、DLLコールを完全に無効にした方が良いのでは...。

私は、ネイティブの実装と比較して、ベアメモリでの作業がどれだけ効率的かを確認するために、より多くの例を掲載しました。そして、私にとってネイティブコードの20%の遅れは、とても、とても良い結果です。

しかし、そうです。セキュリティやその他もろもろを軽減するのです。でも、スピードが欲しくて、自分のために欲しいなら、できる)

 
TheXpert:

配列のサイズを128から10000にすることで、コードを高速化することができます。

もちろん、さまざまなサイズを試しました。なぜか、結果には影響しない。

 
fxsaber:

HistoryTicksのライブラリに必要です。ご参加ありがとうございました。

ところで、MT4と同じように注文や注文履歴を扱う取引機能を 変えずに、MT4からMT5にフクロウを移行するためのライブラリはないのでしょうか?リンクがあれば送ってください。

 
Ilya Malev:

ところで、注文や注文履歴などMT4と同じ作業で取引機能を 変えずにMT4からMT5にフクロウを移行するためのライブラリはあるのでしょうか?もし、そのようなライブラリーがあれば、リンクを送ってください。

私のプロフィールの出版物の欄に全てのライブラリーがあります。

 
fxsaber:

プロフィールの「出版物」には、すべてのライブラリが転がっています。

了解しました。自分でそこを探さなくてもいいので、内部の方の回答、どの程度完全に実装されているのか、リンクがあるといいなと思いました。とにかく、私は他の人のアイデアが好きで、他の人のコードはあまり好きではないので、とにかく自分で書きます :)

 
Ilya Malev:

了解しました。どの程度完全に実装されているのか、自分でそこを探さなくてもいいので、内部の方の回答やリンクがあればいいなと思いました。とにかく、私は他の人のアイデアが好きで、他の人のコードはあまり好きではないので、とにかく自分で書きます :)

https://www.mql5.com/ru/code/16006


総てのアイデンティティ。書き始めたときは、いくつもの落とし穴があるなんて思いもしませんでした。私なら二度と挑戦しないでしょう。

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...