Если не обязательно использовать файл попробуйте глобальные переменные
Запускаем терминал .
Запускаем скрипт .
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- GlobalVariableSet("BarsTotal",777) ; int var = GlobalVariableGet("BarsTotal") ; Comment(var); //---- return(0); } //+------------------------------------------------------------------+
Выгружаем терминал . Прошло время .
Запускаем терминал .
Запускаем скрипт .
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- int var = GlobalVariableGet("BarsTotal") ; Comment(var); //---- return(0); } //+------------------------------------------------------------------+
На графике :
Работает .
Спасибо .
Ну а если вырубать комп, то придется писать в файл .
Мне это понадобилось для проверки эксперта на демо на дневных барах .
В начале торговой сессии включается комп .
Запускается терминал и все советники на дневных графиках, советники проверяют наличие нового бара, и делают свою работу .
После отработки советников, выгружается терминал . Вырубается комп .
И жду до следующей сессии .
( самому проверять еще не приходилось)
Точно .
Global Variables
Глобальные переменные (global variables) - это удобный инструмент для организации обмена информацией между программами или для сохранения числовых значений вашей программы на время выключения MetaTrader’а или компьютера.
Да, глобальные переменные тоже сохраняются в файл. Правда, только при корректном завершении работы терминала.
Поэтому файл - надежнее (но тоже не идеальный вариант), при краше терминала (если он случился не в момент записи) информация не потеряется.
Да, глобальные переменные тоже сохраняются в файл. Правда, только при корректном завершении работы терминала.
Поэтому файл - надежнее (но тоже не идеальный вариант), при краше терминала (если он случился не в момент записи) информация не потеряется.
Понятно, спасибо .
Ну а тогда, с глобальными переменными пока так :
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- // первый старт советника if(!GlobalVariableCheck("BarTime")) GlobalVariableSet("BarTime",Time[0]) ; if(GlobalVariableCheck("BarTime")) { int var = GlobalVariableGet("BarTime") ; if (var == Time[0]) {Comment("Тот же бар " , var); return ; // выйти из советника } // Новый бар , работать дальше GlobalVariableSet("BarTime",Time[0]) ; Comment("Новый бар " , var); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем здравствовать :) .
Вот, хочу контролировать время нового бара не в переменной, а в файле .
Поскольку приходится выгружать терминал, даже выключать комп, то все переменные пропадают . А запись в файле сохраняется.
И при следующем включении компа и запуске терминала, можно посмотреть время нулевого бара из файла, и если бар новый, то скрипт отрабатывает дальше, а если бар то же, то выходим из скрипта .
Пока придумал вот такую конструкцию . А компактнее можно сделать ?
С одним дискриптором сделать не получилось . Пришлось делать два - один на запись, другой на чтение .