griha: хочу вести запись действий советника в файл взял пример из справочника к редактору MQL, маленько переделал под себя
а в результате файл OrdersReport.csv пуст, хотя ордера открываются.
натолкнулся на такую же проблему, при открытии файла для записи чтения, и попытке записи в него файл или не создается, или в него ничего не пишется.
Заявка в сервисдек :
при попытке дописать в текстовый файл отркытый с ключем FILE_READ|FILE_WRITE, без предварительной явной установки файлового указателя функцией FileSeek(), запись не происходит вообще.
в предыдущих версиях терминала, при предварительном чтении текстового файла фукцией FileReadString() установка файлового указателя происходила автоматически.
Вот ответ от разработчиков:
Последнее изменение файлового функционала датируется серединой 2008 года.
Никогда раньше нельзя было дописывать в файл без предварительной установки файлового указателя в конец.
Опять вопрос про дополнительные сведения. Это связано с дозаписью в конец файла?
Любые файловые операции чтения-записи автоматически передвигают файловый указатель. Это было всегда и не менялось. Однако, если файл открыт как csv, то возможна промежуточная буферизация данных. Тогда файловый указатель может оказаться не там, где Вы ожидаете. Повторяю, так было всегда - и в предыдущей версии, и в предпредыдущей, с самого начала официального релиза.
Мы многократно повторяли, что принцип умолчания - крайне вреден. В том числе и для файловых указателей. Работайте с файловым указателем явно, если Вы не используете непрерывного чтения или непрерывную запись (особенно это касается экзотических случаев смешанного чтения-записи)
Ваш советник торгует по сигналам 30 мин ADX . Если советник будет торговать по сигналам 1мин ADX, то такие сигналы будут подаваться чаще, чем в первом варианте. Cкриншот в вашем варианте снимается лишь при открытии позиции BUY. Вас интересует отутствие изображения индикаторов с графика на скриншоте (в тестовом режиме). Вам было предложено убедиться в том, что при режиме демо индикаторы на скриншоте присутствуют. Был выложен скрипт с соответствующей функцией для того, чтобы смогли проверить и разобраться в своем вопросе быстро, а не ждать много часов. Прошло более суток. Хочу знать -- какие у вас результаты?
буду держать вас в курсе. пока занят, постараюсь завтра проверить
Подскажите в чем разница при определении имени в функции или при присвоении имени переменной потом передача переменной в функцию?
//-------------- первый вариант (рабочий)string up_line = "upline_", down_line = "downline_";
flatlineup(up_line+TimeToStr(Time[i]), y2,x2,y22,x2,Red,1); Имя присваиваю в теле функции
flatlinedown(down_line+TimeToStr(Time[i]), y1,x1,y11,x1,Blue,1);
dellline(up_line, down_line);
TimeToStr(Time[i]) указывал в имени тренд лайн в теле функции
//--------------- второй вариант (нерабочий)string up_line = "upline_"+TimeToStr(Time[i]);//--или пробовал StringConcatenate() ИМЯ ПРИСВАИВАЮ В ПЕРЕМЕННОЙstring down_line = "downline_"+TimeToStr(Time[i]);//--или пробовал StringConcatenate()
flatlineup(up_line, y2,x2,y22,x2,Red,1); ПЕРЕДАЮ ПЕРЕМЕННУЮ В ФУНКЦИЮ
flatlinedown(down_line, y1,x1,y11,x1,Blue,1);
dellline(up_line, down_line);
Поставил так, другого выхода не знаю.......)
А так ..
хочу вести запись действий советника в файл
взял пример из справочника к редактору MQL, маленько переделал под себя
а в результате файл OrdersReport.csv пуст, хотя ордера открываются.
натолкнулся на такую же проблему, при открытии файла для записи чтения, и попытке записи в него файл или не создается, или в него ничего не пишется.
Заявка в сервисдек :
при попытке дописать в текстовый файл отркытый с ключем FILE_READ|FILE_WRITE, без предварительной явной установки файлового указателя функцией FileSeek(), запись не происходит вообще.
в предыдущих версиях терминала, при предварительном чтении текстового файла фукцией FileReadString() установка файлового указателя происходила автоматически.
Вот ответ от разработчиков:
Последнее изменение файлового функционала датируется серединой 2008 года.
Никогда раньше нельзя было дописывать в файл без предварительной установки файлового указателя в конец.
Опять вопрос про дополнительные сведения. Это связано с дозаписью в конец файла?
Любые файловые операции чтения-записи автоматически передвигают файловый указатель. Это было всегда и не менялось. Однако, если файл открыт как csv, то возможна промежуточная буферизация данных. Тогда файловый указатель может оказаться не там, где Вы ожидаете. Повторяю, так было всегда - и в предыдущей версии, и в предпредыдущей, с самого начала официального релиза.
Мы многократно повторяли, что принцип умолчания - крайне вреден. В том числе и для файловых указателей. Работайте с файловым указателем явно, если Вы не используете непрерывного чтения или непрерывную запись (особенно это касается экзотических случаев смешанного чтения-записи)
Вывод: юзайте FileSeek
Есть.
Ваш советник торгует по сигналам 30 мин ADX . Если советник будет торговать по сигналам 1мин ADX, то такие сигналы будут подаваться чаще, чем в первом варианте. Cкриншот в вашем варианте снимается лишь при открытии позиции BUY.
Вас интересует отутствие изображения индикаторов с графика на скриншоте (в тестовом режиме). Вам было предложено убедиться в том, что при режиме демо индикаторы на скриншоте присутствуют. Был выложен скрипт с соответствующей функцией для того, чтобы смогли проверить и разобраться в своем вопросе быстро, а не ждать много часов. Прошло более суток. Хочу знать -- какие у вас результаты?
буду держать вас в курсе. пока занят, постараюсь завтра проверить
Подскажите в чем разница при определении имени в функции или при присвоении имени переменной потом передача переменной в функцию?
Заранее благодарю.
Можно так, у меня работает
double BullPrice()
{
double BullAveragePrice=0;
double MySummBullLots=0;
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol()) continue;
if (OrderSymbol() == Symbol() && OrderType() == OP_BUY)
{
BullAveragePrice+=OrderOpenPrice()*OrderLots();
MySummBullLots+=OrderLots();
}
}
if (MySummBullLots>0) BullAveragePrice = NormalizeDouble(BullAveragePrice / MySummBullLots, Digits);
return(BullAveragePrice);
}
В папке МТ4 есть пример кода С++ на все случаи жизни в MQL4. Скомпилируйте тот код, и свой туда вставте. Найдёте сразу разницу между Вашим и примером.
Подскажите в чем разница при определении имени в функции или при присвоении имени переменной потом передача переменной в функцию?
А так ..
подскажите ситуация такая, читаю csv файл например так
но csv файл имеет заголовок, первую лишнюю строчку
как программно пропустить первую строчку, или программно удалять в общем при сохранении значения она все портит.
заранее спасибо.