Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5 - страница 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-вариант быстрее на 20% лучшего MQL-варианта, который, скорее всего, больше ускорить не получится (не простой вышел).

Файлы:
 
Я бы лично не стал пользоваться длл-ями, даже ради выигрыша в 20%, т.к. это снижает безопасность как минимум, увеличивает сложность использования и смотрится неоднозначно. Используя чужие программы лучше отключать вызовы dll вообще...
 

fxsaber:

DLL-вариант быстрее на 20% лучшего MQL-варианта, который, скорее всего, больше ускорить не получится (не простой вышел).

так это по сути единственный вызов низкоуровневой системной функции. ваш код ускорить возможно получится если увеличить размер массива -- с 128 до 10000 скажем.

Ilya Malev:
Я бы лично не стал пользоваться длл-ями, даже ради выигрыша в 20%, т.к. это снижает безопасность как минимум, увеличивает сложность использования и смотрится неоднозначно. Используя чужие программы лучше отключать вызовы dll вообще...

я больше выложил пример для того чтобы можно было посмотреть насколько эффективней работа с голой памятью по сравнению с нативными реализациями. И как по мне 20% отставание нативного кода это очень и очень хороший результат.

а так да -- меньше безопасности и все остальное. НО если для себя и хочется скорости, то можно )

 
TheXpert:

так это по сути единственный вызов низкоуровневой системной функции. ваш код ускорить возможно получится если увеличить размер массива -- с 128 до 10000 скажем.

Пробовал, конечно, разные размеры. По какой-то причине не влияют на результат.

 
fxsaber:

Мне для HistoryTicks-библиотеки нужно. Спасибо, что участвуете.

Кстати, у Вас в библиотеках есть такое, чтобы переносить совы из МТ4 в МТ5 без изменения торговых функций для идентичной МТ4 работы с ордерами и с историей ордеров? Киньте ссылку если есть, пож-ста

 
Ilya Malev:

Кстати, у Вас в библиотеках есть такое, чтобы переносить совы из МТ4 в МТ5 без изменения торговых функций для идентичной МТ4 работы с ордерами и с историей ордеров? Киньте ссылку если есть, пож-ста

В профиле в разделе Публикации все библиотеки лежат.

 
fxsaber:

В профиле в разделе Публикации все библиотеки лежат.

Я понимаю. Я надеялся получить инсайдерский ответ, насколько полно это реализовано и ссылку, чтобы самому там не искать. Ну да ладно, не принципиально, я все равно сам напишу в итоге т.к. чужие идеи мне нравятся, а чужой код не очень :)

 
Ilya Malev:

Я понимаю. Я надеялся получить инсайдерский ответ, насколько полно это реализовано и ссылку, чтобы самому там не искать. Ну да ладно, не принципиально, я все равно сам напишу в итоге т.к. чужие идеи мне нравятся, а чужой код не очень :)

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


Полная идентичность. Когда начинал писать, даже не подозревал то количество подводных камней, что придется обходить. По новой не взялся бы больше.

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