А разве значения переменных хранятся не в оперативной памяти?
Уточните вопрос
Sepulca:
А разве значения переменных хранятся не в оперативной памяти? Уточните вопрос
А разве значения переменных хранятся не в оперативной памяти? Уточните вопрос
Нужно, чтобы два работающих советника обменивались значениями некоторых переменных.
Сейчас такой обмен организован через файл. Мне это решение не
очень нравится.
Используйте глобальные переменные https://docs.mql4.com/ru/globals
Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются. Обращением к глобальной переменной считается не только установка нового значения, но и чтение значения глобальной переменной.
Глобальные переменные клиентского терминала доступны одновременно из всех MQL4-программ, запущенных на клиентском терминале.
Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются. Обращением к глобальной переменной считается не только установка нового значения, но и чтение значения глобальной переменной.
Глобальные переменные клиентского терминала доступны одновременно из всех MQL4-программ, запущенных на клиентском терминале.
Спасибо большое! Все понял.
В продолжение темы теперь сам спрошу. В документации читаем:
"Синтаксис языка программирования торговых стратегий MQL4 синтаксически очень похож язык программирования Си, за исключением некоторых возможностей:
- отстутствует адресная арифметика;
- отсутствует оператор do ... while; " и т. д.
Но вот кусок кода из работающего индикатора:
"Синтаксис языка программирования торговых стратегий 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. В других местах компилятор выдает ошибку.
Ничего подобного, можно передавать пареметр по ссылке в обычные
функции:Да, похоже конструкция типа 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;
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день! Кто-нибудь знает как можно записывать значения переменных в оперативную память и считывать из нее из советника.
Был бы очень благодарен за помощь. Идеальным вариантом был бы кусок кода.