Скачать MetaTrader 5

Передача значения типа "long" между индикаторами на разных графиках

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Karputov
Модератор
52885
Vladimir Karputov  
Напрямую, через глобальные переменные терминала не получается, так глобальные переменные терминала имеют тип "double" и, соответственно, происходит потеря точности при преобразовании.
Dmitry Fedoseev
43811
Dmitry Fedoseev  
Можно разбить на два int, потом соединить.
Yury Kulikov
31653
Yury Kulikov  
barabashkakvn:
Напрямую, через глобальные переменные терминала не получается, так глобальные переменные терминала имеют тип "double" и, соответственно, происходит потеря точности при преобразовании.

Можно использовать копирование через структуры, одна структура имеет один long, другая один double.

upd: пример. 

void OnStart()
{
   struct SLong      { long  value;}   v1, v2;
   struct SDouble    { double  value;} d1, d2;
   v1.value=LONG_MAX;
   d1=(SDouble)v1;
   GlobalVariableSet("test",d1.value);
   d2.value=GlobalVariableGet("test");
   v2=(SLong)d2;
   Print(d1.value," ",v1.value," ",v2.value);
   GlobalVariableDel("test");
}
Alexandr Gavrilin
34182
Alexandr Gavrilin  
погляди пример в терминале Pipes там как раз все это и реализовано.
Vladimir Karputov
Модератор
52885
Vladimir Karputov  
Yurich:

Можно использовать копирование через структуры, одна структура имеет один long, другая один double.

upd: пример. 

Происходит потери последних чисел:

2015.03.03 11:30:28.648 test_script (GBPUSD,H1) 1.#QNAN 9223372036854775807 9223372036854775807

Комбинатор
16098
Комбинатор  
barabashkakvn:
Никаких потерь быть не может.
Vladimir Karputov
Модератор
52885
Vladimir Karputov  
Благодарю. Разобрался. Всё передаётся без потерь.
Alexander Bereznyak
22150
Alexander Bereznyak  
TheXpert:
Никаких потерь быть не может.

Как не может быть, посмотрите внимательно справку.

Vladimir Karputov
Модератор
52885
Vladimir Karputov  
sandex:

Как не может быть, посмотрите внимательно справку.

Лучше возьмите пример и проверьте. Способ предложенный Yurich  - рабочий.
Alexander Bereznyak
22150
Alexander Bereznyak  
barabashkakvn:
Лучше возьмите пример и проверьте. Способ предложенный Yurich  - рабочий.

Проверил, происходит потеря последних чисел, скрипт прилагается:

 2015.03.03 18:38:53.942 LongDoubleLong EURUSD,H1:   -9223372036854775808

2015.03.03 18:38:53.942 LongDoubleLong EURUSD,H1:   9.223372036854776e+018

2015.03.03 18:38:53.942 LongDoubleLong EURUSD,H1:   9223372036854775797

Файлы:
Vladimir Karputov
Модератор
52885
Vladimir Karputov  
sandex:
Если Вы не сразу смогли разглядеть где именно размещён код - то вот ссылка на пост с кодом: https://www.mql5.com/ru/forum/41255#comment_1403673
Передача значения типа "long" между индикаторами на разных графиках
Передача значения типа "long" между индикаторами на разных графиках
  • www.mql5.com
Напрямую, через глобальные переменные терминала не получается, так глобальные переменные терминала имеют тип "double" и, соответственно, происходит потеря точности при преобразовании. - - Категория: технические индикаторы и анализ рынка форекс
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий