Как получить доступ к GlobalVariables MT4 из других приложений? - страница 4

 

Integer писал (а):
Радуюсь и я сейчас! Провел эксперимент - не только глобальные переменные исчезли, а также все символы из обзора рынка, счета, графики. ... Только переустанавливаться теперь. А что за дела, это виндовс так устроена, или винты, кто знает?

Нет, это чересчур экономичный МТ.
Сохранение всех изменений (графиков, объектов, гл. переменных, списка валют, и т.д.) происходит при закрытии терминала, поэтому после падения терминал загружается в том виде, в котором был загружен предыдущий раз.
И я считаю, что это неправильно...
 
Renat:
В следующем билде мы сделаем периодический сброс переменных на диск после их модификации. Например, раз в 5 минут. Это уменьшит потери при аварийном выходе.

Можно еще сделать событийное фоновое сохранение. Т.е. когда какая-нибудь переменная изменилась, то дается задание специальному потоку в MT, который дожидается выполнения хотя бы одного из двух условий:

1) процессор (и, возможно, диск) станет относительно свободным;

2) пройдет N минут с момента изменения переменной.

После этого он сохраняет изменившиеся переменные на диск.


Преимущества такого метода в более своевременном сохранении, чем только через каждые N минут. Причем при этом не происходит увеличения расхода ресурсов компьютера, т.к. они расходуются по мере их избыточной свободности. А выделение сохранения в отдельный поток еще и позволит более эффективно использовать многоядерные системы, которые сейчас всё больше наводняют рынок домашних компьютеров...

 
favoritefx:
VBAG:
favoritefx, Спасибо, за предложение и за помощь. Действительно, эсли тактировать самому вызов DLL-ки можно, то задержек не будет. Как лучше организовать этот вызов, в цикле while? У меня с Омегой этот фокус не прошел(хотя, возможно где-то была ошибка).
С MQL4 все прекрасно работает!
Реализовывать работу нужно примерно так:
while (!isStopped())
{
   Sleep(SomeTime);
   RefleshRates();
   Action=SomeDLLFunction(Bid,IndikatorsValues,Orders[]);
   case (action)
   какие то де�ст�ия....
}

загружено 2 терминала! разные счета разные брокеры

хочу из одного передать данные в другой!

мыслил так через файлы

1 создаем флаговый файл 1-й терминал

2 записываем в файл данных 1-й терминал

3 2 терминал увидел флаговый файл - ждет

4 1-й терминал закончил запись меняет флаговый файл ( можно забирать ) 1-й терминал ждет когда второй заберет

5 2-й терминал меняет флаговый файл 1-й терминал понял что данные будут забираться не лезет

6 2-й терминал читает файл данных

7 2-й терминал прочитал файл данных меняет флаговый фалй - сообщая 1-му что данные принял полностью

8 1-й терминал может формировать новый пакет данных переход на шаг 1


но это обмен файловый и тут не все гладко есть тонкости в алгоритме обмена


через DLL как то красивее потоки либо DDE либо pipe, либо SOCKET,вариантов много