Чтение и запись в память из советника

 

Добрый день! Кто-нибудь знает как можно записывать значения переменных в оперативную память и считывать из нее из советника.

Был бы очень благодарен за помощь. Идеальным вариантом был бы кусок кода.

 
А разве значения переменных хранятся не в оперативной памяти? Уточните вопрос
 
Sepulca:
А разве значения переменных хранятся не в оперативной памяти? Уточните вопрос

Нужно, чтобы два работающих советника обменивались значениями некоторых переменных.

Сейчас такой обмен организован через файл. Мне это решение не очень нравится.

 
Используйте глобальные переменные https://docs.mql4.com/ru/globals
Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются. Обращением к глобальной переменной считается не только установка нового значения, но и чтение значения глобальной переменной.

Глобальные переменные клиентского терминала доступны одновременно из всех MQL4-программ, запущенных на клиентском терминале.
 
Спасибо большое! Все понял.
 
В продолжение темы теперь сам спрошу. В документации читаем:
"Синтаксис языка программирования торговых стратегий MQL4 синтаксически очень похож язык программирования Си, за исключением некоторых возможностей:
- отстутствует адресная арифметика;
- отсутствует оператор do ... while;                     " и т. д.
Но вот кусок кода из работающего индикатора:
#import "DF.dll"
 int DigitalFilter(int FType, int P1, int D1, int A1, int P2, int D2, int A2,
                   double Ripple, int Delay, double& arr[]);
Последний параметр это разве не адрес массива ?
 
Видимо, под адресной арифметикой подразумевались операции, производимые над адресами переменных, а не просто передачу параметров в функцию по ссылке.
 
Да, похоже конструкция типа double& допустима только в описании внешних функций между #import. В других местах компилятор выдает ошибку.
 
Sepulca:
Да, похоже конструкция типа double& допустима только в описании внешних функций между #import. В других местах компилятор выдает ошибку.
Ничего подобного, можно передавать пареметр по ссылке в обычные функции:
Конструкция:
void fr(double& r)
{
   r=1;
}
работает нормально.
Насчет других случаев применения и так понятно.
Ведь написано же, что:
- отстутствует адресная арифметика.
 

Отсутствует работа с указателями в терминах C++.

Что-то вроде:

double [] arr = new double[100];
double * pointer = & arr[0]; // pointer - адрес 0-й ячейки массива arr
pointer += 2; // теперь pointer указывает на 2-ю ячейку
*pointer = 3.14159;
Причина обращения: