Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Глабольные переменные в памяти не находятся, они из файла читаются и сразу в файл записываются.
О-как!!! Хорошо. А я сразу маны почитал, стал ковырять gvariables.dat и чего-то усомнился в этом. То есть, Вы хотите сказать, что при открытом терминале каждый тик gvariables.dat обновляется? Если это так, то как же??, как же?? его расковырять??? Подскажите, пожалуйста!!!
...........
Попробовал - записывается в файл только при создании или изменении значения, а GlobalVaribaleGet() - из памяти берет.
Не на каждом тике, записывается в файл при выполнении GlobalVariableSet(), а вот считывается ли из фала при каждом вызове GlobalVariableGet() не знаю. Скорее всего нет - считываются, но можно поэкспериментировать. Создать переменную, скопировать файл, удалить переменную, вернуть файл на место и попробовать снова получить переменную если она существует, значит из фала читается, если не существует, значит из памяти. Кстати и скопировать и токрыть закрыть файл получилось.
...........
Попробовал - записывается в файл только при создании или изменении значения, а GlobalVaribaleGet() - из памяти берет.
Надо поразмыслить и пощупать получше что к чему.....
А еще такой важный вопрос. А не возникнет ли проблем с изменением gvariables.dat? На каком уровне защита этого файла построена? Возможно, терминал может отслеживать контрольную сумму или еще что-то, что бы быть уверенным что файл в порядке? Изменишь файл, а он ошибку выдавать будет или вообше улетит.
Спасибо Вам за столь обстоятельный ответ. Я относительно недавно занимаюсь с MT4 и хочу, прежде чем броситься с головой программировать советники, хочу до конца понять ограничения и возможности.
Сразу выяснился серьезный недостаток применения DLL для передачи информации от своего приложения в MT4:
-если DLL вызывается из советника, подгруженного на одном инструменте, то информация из моего приложения будет обработана только в момент прихода тика поэтому инструменту. Нет тика - нет информации, а на других инструментах жизнь продолжается, а сигнал к ним не пришел, поскольку тика на советник не поступало. При такой схеме, существует потенциальная возможность задержки сигнала.
В этой связи, возникает вопрос. Возможен ли вызов одной DLL из разных советников одновременно? При такой возможности можно развесить советники, которые будут обращаться к одной DLL по разным инструментам, что позволит снизить вероятность задержки сигнала. Кузяво как-то?...
Интересно, есть ли альтернативные способы загнать извне сигнал в MT4?
А на круг получается, что проще всего будет банально из советника читать сигнал и реал-тайм файла. Как вы думаете?
Вызов DLL из разных советников возможен. Более того, у них даже будет одна область переменных! То есть советники смогут обмениваться друг с другом сигналами через переменные, объявленные внутри DLL.
Эту идею реализовать могу, делал нечто похожее.
Пишите - favoritefx@mail.ru
Получается, если даже в файле поменять содержимое переменной, то MT об этом знать скорей всего не будет и читать будет из памяти старое значение?
Надо поразмыслить и пощупать получше что к чему.....
А еще такой важный вопрос. А не возникнет ли проблем с изменением gvariables.dat? На каком уровне защита этого файла построена? Возможно, терминал может отслеживать контрольную сумму или еще что-то, что бы быть уверенным что файл в порядке? Изменишь файл, а он ошибку выдавать будет или вообше улетит.
Integer , Вы имеете ввиду системные вещи самого терминала или пользвательские? Просто согласитесь, это было бы красиво писать напрямую свои данные в gvariables.dat или в память.
Не совсем понял про системные и пользовательские, скорее подразумевал терминал. Думаю, что наилушим вариантом была бы dll для обмена данными, без самодеятельности.
favoritefx, Спасибо, за предложение и за помощь. Действительно, эсли тактировать самому вызов DLL-ки можно, то задержек не будет. Как лучше организовать этот вызов, в цикле while? У меня с Омегой этот фокус не прошел(хотя, возможно где-то была ошибка).
Реализовывать работу нужно примерно так: