Бета-тестирование MetaTrader 5 началось! - страница 130

 

Здравствуйте!

Мой скрипт работает в МТ4.

При переводе на рельсы МТ5 встретилась проблема.

Коротко о программе.

Внешняя прога записывала в текстовый файл строку, которую скрипт выводил на график. Этот файл записывался в директорию C:\Program Files\МT 4.

Затем скрипт считывал строку из файла и выполнял свою задачу в соответствии с этой строкой.

Для работы с файлом использовалась функция  _lopen из  kernel32.dll. 

Выбор такой схемы был из-за того, что МТ4 блокировал внешним прогам доступ к папке 

C:\Program Files\МT 4\experts\files, а штатные функции работы с файлами не пускал дальше этой папки.

Все работало.

После перевода на МТ5  функция  _lopen не может открыть файл. Файл в папку C:\Program Files\МT 5 внешней прогой записывается. Пробовал записывать файл и в С:\ - не помогло. Весь остальной код работает, но  требуемого текста, естественно, не выводится. Т.к. возвращаемая строка пустая, то имеем просто "Text".

Ниже часть кода. В чем проблема?

...
#import "kernel32.dll"
   int _lopen  (string path, int of);
   int _lcreat (string path, int attrib);
   int _llseek (int handle, int offset, int origin);
   int _lread  (int handle, string buffer, int bytes);
   int _lwrite (int handle, string buffer, int bytes);
   int _lclose (int handle);
#import

...

string ReadFile (string path) 
{  
    int handle=_lopen (path,0); // OF_READ         
    if(handle<0) 
      {
        Print("Ошибка открытия файла ",path); 
        return (""); // при ошибке возвращается пустая строка
      }
...
}

 



 
vicondi >>:

Здравствуйте!


Для работы с файлом использовалась функция _lopen из kernel32.dll.

Выбор такой схемы был из-за того, что МТ4 блокировал внешним прогам доступ к папке


После перевода на МТ5 функция _lopen не может открыть файл. Файл в папку C:\Program Files\МT 5 внешней прогой записывается. Пробовал записывать файл и в С:\ - не помогло. Весь остальной код работает, но требуемого текста, естественно, не выводится. Т.к. возвращаемая строка пустая, то имеем просто "Text".

Используйте юникодные функции.

 
vicondi >>:

Здравствуйте!

Мой скрипт работает в МТ4.

При переводе на рельсы МТ5 встретилась проблема.

Коротко о программе.

Внешняя прога записывала в текстовый файл строку, которую скрипт выводил на график. Этот файл записывался в директорию C:\Program Files\МT 4.

Затем скрипт считывал строку из файла и выполнял свою задачу в соответствии с этой строкой.

Для работы с файлом использовалась функция _lopen из kernel32.dll.

Выбор такой схемы был из-за того, что МТ4 блокировал внешним прогам доступ к папке

C:\Program Files\МT 4\experts\files, а штатные функции работы с файлами не пускал дальше этой папки.

Все работало.

После перевода на МТ5 функция _lopen не может открыть файл. Файл в папку C:\Program Files\МT 5 внешней прогой записывается. Пробовал записывать файл и в С:\ - не помогло. Весь остальной код работает, но требуемого текста, естественно, не выводится. Т.к. возвращаемая строка пустая, то имеем просто "Text".

Ниже часть кода. В чем проблема?






Предлагаю перейти на стандартные средства MQL5, по крайней мере в части открытия и закрытия файла...


Предлагаю использовать как минимум вот эти вещи - FileOpen, FileClose.


При этом файл прекрасно открывается если он расположен в каталоге "\MQL5\Files"

 
Объясните плиз разницу между OBJ_TEXT и OBJ_LABEL.
 
Interesting >>:
Объясните плиз разницу между OBJ_TEXT и OBJ_LABEL.

Вот основные различия




 
Rosh >>:

Вот основные различия




Спасибо, теперь понятно...

 

Во время исполнения стала выскакивать ошибка

GN 2 nnReg_ga03 (EURUSD,M15) 15:00:52 Unhandled exception 0xC0000005
OH 2 nnReg_ga03 (EURUSD,M15) 15:00:52 
GN 2 nnReg_ga03 (EURUSD,M15) 15:00:52 Total calls: 1
если можно, подскажите: что это? как избавиться?
 
zigan >>:

Во время исполнения стала выскакивать ошибка

если можно, подскажите: что это? как избавиться?

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

Пишите мне в личные сообщения

 

Проинсталлировал терминал.

В окне Marked Watch активировал инструмент #ESZ9

Попытался сделатть drag-and-drop этого инструмента в существующее окно котировок.

В результате - exception. После этого терминал вылетает при загрузке. Помогает только чистка профайлов.


Time : 2009.11.25 18:26
Program : Client Terminal
Version : 500.226 (24 Nov 2009)
Revision : 15001
OS : Windows XP Professional Service Pack 3 (Build 2600)
Processors : 2 x X86 (level 6)
Memory : 2061356/45188 kb
Virtual : 2097024/1933204 kb

 
А почему при цене 1183,60 по gcz9 это на открытой позиции не отражается, позиция была открыта на 1165,90 (такое впечатление что терминал не обрабатывает изменение цены)?