Ermitteln der Anzahl der Dezimalstellen beliebiger Zahlen (nicht nur Anführungszeichen) unter Umgehung von Digits() in MQL4 und MQL5 - Seite 18

 
Dmitry Fedoseev:

Anscheinend, aber verzweifeln Sie nicht, es ist nicht alles verloren, ich glaube an Sie.

Und was soll das hier? Fahren Sie fort, bitte.

 
fxsaber:

Ohne über das MMS hinauszugehen.

#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:

Danke, so weit, so gut.

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


Die DLL-Variante ist 20% schneller als die bessere MQL-Variante, die wahrscheinlich nicht mehr beschleunigt werden kann (es kam keine einfache Variante heraus).

Dateien:
 
Ich persönlich würde keine Dlls verwenden, auch nicht um eines 20%igen Gewinns willen, da dies die Sicherheit zumindest verringert, die Komplexität der Nutzung erhöht und zweideutig aussieht. Wenn Sie die Software eines anderen Anbieters verwenden, ist es besser, DLL-Aufrufe ganz zu deaktivieren...
 

fxsaber:

Die DLL-Variante ist 20% schneller als die bessere MQL-Variante, die wahrscheinlich nicht mehr beschleunigt werden kann (keine einfache Variante).

Ihr Code kann beschleunigt werden, wenn Sie die Array-Größe von 128 auf 10000 erhöhen.

Ilya Malev:
Ich persönlich würde keine Dlls verwenden, auch nicht um der 20%igen Beschleunigung willen, denn das verringert zumindest die Sicherheit, erhöht die Komplexität der Nutzung und sieht zweideutig aus. Wenn Sie die Software eines anderen Anbieters verwenden, ist es besser, DLL-Aufrufe ganz zu deaktivieren...

Ich habe ein Beispiel gepostet, um zu zeigen, wie viel effizienter Bare-Memory-Arbeit im Vergleich zu nativen Implementierungen ist. Und für mich sind 20 % Verzögerung bei nativem Code ein sehr, sehr gutes Ergebnis.

aber ja - weniger Sicherheit und alles andere. Aber wenn Sie Geschwindigkeit wollen und es für sich selbst wollen, können Sie)

 
TheXpert:

Es handelt sich im Wesentlichen um einen einzigen Low-Level-Systemfunktionsaufruf. Ihr Code kann beschleunigt werden, indem die Array-Größe von 128 auf 10000 erhöht wird.

Ich habe natürlich verschiedene Größen ausprobiert. Aus irgendeinem Grund haben sie keinen Einfluss auf das Ergebnis.

 
fxsaber:

Ich brauche sie für die HistoryTicks-Bibliothek. Vielen Dank für Ihre Teilnahme.

Übrigens, haben Sie etwas in Ihren Bibliotheken, um Eulen von MT4 auf MT5 zu übertragen, ohne die Handelsfunktionen für identische MT4-Arbeit mit Aufträgen und Auftragshistorie zu ändern? Bitte senden Sie mir den Link, wenn Sie ihn haben.

 
Ilya Malev:

Übrigens, haben Sie eine in Ihren Bibliotheken, um Eulen von MT4 zu MT5 zu übertragen, ohne Handelsfunktionen für identische MT4 Arbeit mit Aufträgen und Auftragshistorie zu ändern? Wenn Sie eine solche Bibliothek haben, schicken Sie mir bitte den Link.

Ich habe alle Bibliotheken in meinem Profil unter der Rubrik Veröffentlichungen.

 
fxsaber:

In meinem Profil, unter Publikationen, liegen alle Bibliotheken herum.

Das verstehe ich. Ich hatte gehofft, eine Antwort von einem Insider zu bekommen, wie vollständig es implementiert ist und einen Link, damit ich nicht selbst danach suchen muss. Wie auch immer, es ist egal, ich werde es sowieso selbst schreiben, denn ich mag die Ideen anderer Leute und nicht so sehr den Code anderer Leute :)

 
Ilya Malev:

Das verstehe ich. Ich hatte gehofft, eine Antwort von einem Insider zu bekommen, wie vollständig es implementiert ist und einen Link, damit ich nicht selbst danach suchen muss. Wie auch immer, es macht nichts, ich werde es sowieso selbst schreiben, da ich die Ideen anderer Leute mag und nicht so sehr den Code anderer Leute :)

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


Vollständige Identität. Als ich mit dem Schreiben begann, hatte ich keine Ahnung, wie viele Fallstricke ich vermeiden musste. Ich hätte es nicht noch einmal versucht.

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