Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Karputov
Модератор
58801
Vladimir Karputov  
Напрямую, через глобальные переменные терминала не получается, так глобальные переменные терминала имеют тип "double" и, соответственно, происходит потеря точности при преобразовании.
Dmitry Fedoseev
45359
Dmitry Fedoseev  
Можно разбить на два int, потом соединить.
Yury Kulikov
34459
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
35997
Alexandr Gavrilin  
погляди пример в терминале Pipes там как раз все это и реализовано.
Vladimir Karputov
Модератор
58801
Vladimir Karputov  
Yurich:

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

upd: пример. 

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

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

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

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

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

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

Лучше возьмите пример и проверьте. Способ предложенный Yurich  - рабочий.
Alexander Bereznyak
23066
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
Модератор
58801
Vladimir Karputov  
sandex:
Если Вы не сразу смогли разглядеть где именно размещён код - то вот ссылка на пост с кодом: https://www.mql5.com/ru/forum/41255#comment_1403673
Передача значения типа "long" между индикаторами на разных графиках
Передача значения типа "long" между индикаторами на разных графиках
  • www.mql5.com
Напрямую, через глобальные переменные терминала не получается, так глобальные переменные терминала имеют тип "double" и, соответственно, происходит потеря точности при преобразовании. - - Категория: технические индикаторы и анализ рынка форекс
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий