// string в виде простой структуры #define DEFINE_STRING(NAME, LENGTH) \ struct NAME \ { \ protected: \ uchar Data[LENGTH]; \ \ public: \ void operator =( const string Str ) \ { \ StringToCharArray(Str, this.Data); \ } \ \ string Get( void ) const \ { \ return(CharArrayToString(this.Data)); \ } \ }; #define MAX_SYMBOL_LENGTH 20 DEFINE_STRING(SYMBOLNAME, MAX_SYMBOL_LENGTH) template <typename T> struct Pos { T sym[10]; int dir[10]; }; void OnStart() { Pos<SYMBOLNAME> Save[1]; // Будем сохранять в файл Pos<SYMBOLNAME> Load[]; // Сюда считаем из файла Save[0].sym[0] = _Symbol; if (FileSave(__FILE__, Save) && FileLoad(__FILE__, Load)) Print(Load[0].sym[0].Get()); // через Get() получаем string-значение }
FileSave и FileLoad разработчики не перенесли из MQL5 в MQL4. Поэтому для MT4 используйте запись/чтение по старинке - будет работать.
Строковое поле мешает. Его надо заменить на какой-нибудь массив фиксированного размера, на uchar.
Боюсь, что без структур - никак, там же у тебя string.
В принципе, вон, fxsaber - вполне годный костыль предлагает.
Но, лично я бы предпочел через csv-файл или ему подобный (у меня, скажем, есть класс ini-файла, мне этот формат более приятен).
Так наглядней:
struct Pos{ protected: uchar sym[100]; public: int dir[10]; string GetSym(int i){ return CharArrayToString(sym,10*i,10); } void SetSym(int i,string str){ StringToCharArray(str,sym,10*i,10); } };
Вместо поля sym использовать методы GetSym() и SetSym(). Длина символа не более 10-ти знаков.
Эту структуру (и массив структур) получится сохранять в файл.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть структура
В другом советнике надо данные с файла считать и охранить в такую же структуру.
пробую FileReadStruct(handle,open);
Как считать структуру ?
Можно конечно без структур,через csv файл, но хочется через структуры.
Структуру считываем в MQL4.