А что есть в журнале при снятии советника с графика? Обычно там пишется какие объекты утекают, что даёт направление поиска
Угу. Логи я удалил. Но не беда, повторить не долго. Сейчас запущу советник на серваке, утром (может раньше) будут логи.
Но насколько я помню, не смог в них найти указание на то куда утекает память.
И советник не удаляется с графика, скорее всего просто перезагружается сервак, так как в логах отсутствует запись о закрытии терминала. Но это не точно.
Угу. Логи я удалил. Но не беда, повторить не долго. Сейчас запущу советник на серваке, утром (может раньше) будут логи.
Но насколько я помню, не смог в них найти указание на то куда утекает память.
И советник не удаляется с графика, скорее всего просто перезагружается сервак, так как в логах отсутствует запись о закрытии терминала. Но это не точно.
Вы не поняли смысла моего вопроса. Не нужно ждать на сервере, когда там закончится память и он лопнет.
Если в коде есть утечка объектов, то на домашнем локальном компьютере при запущенном советнике перекомпилируйте его - в логи должно быть выведено сообщение о количестве и типе утекаемых объектов. Ну либо запустите его на графике и снимите сразу - тоже должно появиться сообщение об утечке, если она, конечно, есть.
Вы не поняли смысла моего вопроса. Не нужно ждать на сервере, когда там закончится память и он лопнет.
Если в коде есть утечка объектов, то на домашнем локальном компьютере при запущенном советнике перекомпилируйте его - в логи должно быть выведено сообщение о количестве и типе утекаемых объектов. Ну либо запустите его на графике и снимите сразу - тоже должно появиться сообщение об утечке, если она, конечно, есть.
Ничего не пишет при компиляции. Удаляет и ставит по новой. Всё.
NM 000:18:47.545 Experts expert Comm (SBRF-12.23,M1) removed
JI 000:18:47.547 Experts expert Comm (SBRF-12.23,M1) loaded successfully
KQ 000:18:47.560 Experts expert Comm (RTS-12.23,M1) removed
EE 000:18:47.562 Experts expert Comm (RTS-12.23,M1) loaded successfully
На серваке ещё пока работает. Подожду, может там в логах, что то напишет.
Попытался сделать аналог коммента, только чтоб буковки были побольше.
Через какое то время после запуска советника с комментом на нескольких графиках, происходит что то не хорошее, вплоть до потухания экрана и перезагрузки сервака)))
Понятно, что что то делаю не правильно с классом CCanvas, а вот что именно неправильно, я не понимаю.
Кажется понял. Поправьте если понял не правильно.
У меня в коде на каждом тике создаётся ресурс с разными именами.
код из канваса
//--- generate resource namem_rcname="::"+name+(string)ChartID()+(string)(GetTickCount()+MathRand());//--- initialize data with zerosArrayInitialize(m_pixels,0);
//--- create dynamic resourceif(ResourceCreate(m_rcname,m_pixels,width,height,0,0,0,clrfmt))
А при следующем обновлении картинки этот ресурс судя по всему не удаляется.
Объект один и тот же, ресурсы к нему лепятся разные.
В общем переделал код.
вроде так он должен быть правильным.
#include <Canvas\Canvas.mqh>
//+------------------------------------------------------------------+void Comm(string txt, color clr = clrYellow, int FontSize = 20, string Font = "Consolas", int flag = FW_BOLD)
{
int shift = 0;
if(ChartGetInteger(0, CHART_SHOW_ONE_CLICK))
shift = 60;
CCanvas canvas;
canvas.FontNameSet(Font);
canvas.FontFlagsSet(flag);
canvas.FontSizeSet(FontSize);
int width = 0, height = 0;
string result[];
int size = StringSplit(txt, StringGetCharacter("\n", 0), result);
height = (int)(FontSize * 1.8 * size);
for(int i = 0; i < size; i++)
{
int w = canvas.TextWidth(result[i]);
if(width < w)
width = w;
}
if(ObjectFind(0, "Comment") < 0)
canvas.CreateBitmapLabel(0, 0, "Comment", 5, 20 + shift, width, height, COLOR_FORMAT_ARGB_NORMALIZE);
elsecanvas.Attach(0, "Comment", width, height, COLOR_FORMAT_ARGB_NORMALIZE);
canvas.Erase(0x00FFFFFF);
for(int i = 0; i < size; i++)
canvas.TextOut(0, (int)(FontSize * 0.8 * i), result[i], ColorToARGB(clr, 255));
canvas.Update(true);
}
//+------------------------------------------------------------------+
Уже очень давно пользуюсь готовой функцией расчёта лота в зависимости от риска, но в ней не было привязки к размеру стоп-лосса. Сегодня решил написать с нуля свою функцию в виде скрипта (для удобства проверки), но уже с учётом стоп-лосса. Прошу посмотреть формулу расчёта размера лота (выделена жёлтым цветом). Возможно, что-то упустил.
Всякого рода проверки на минимальный, максимальный лот, шаг и т.д., и т.п., не включал, т.к. этим займусь позже!
Уже очень давно пользуюсь готовой функцией расчёта лота в зависимости от риска, но в ней не было привязки к размеру стоп-лосса. Сегодня решил написать с нуля свою функцию в виде скрипта (для удобства проверки), но уже с учётом стоп-лосса. Прошу посмотреть формулу расчёта размера лота (выделена жёлтым цветом). Возможно, что-то упустил.
Всякого рода проверки на минимальный, максимальный лот, шаг и т.д., и т.п., не включал, т.к. этим займусь позже!
Привет, Алексей! Спасибо, что откликнулся. В целях самообразования хочу понять с какой целью нужно учесть стоимость одного тика и ещё кратко поясни, в какой части формулы его применить, если тебя это не затруднит. Возможно, что не совсем понял о чём речь.
Привет, Алексей! Спасибо, что откликнулся. В целях самообразования хочу понять с какой целью нужно учесть стоимость одного тика и ещё кратко поясни, в какой части формулы его применить, если тебя это не затруднит. Возможно, что не совсем понял о чём речь.
С уважением, Владимир.
Для определения суммы которую трейдер готов потерять в случае неудачи. Убыток = Loss*стоимость пункта*лот. Отсюда — лот = допустимый убыток/(Loss*стоимость пункта) Формула примерная.
А что есть в журнале при снятии советника с графика? Обычно там пишется какие объекты утекают, что даёт направление поиска
Угу. Логи я удалил. Но не беда, повторить не долго. Сейчас запущу советник на серваке, утром (может раньше) будут логи.
Но насколько я помню, не смог в них найти указание на то куда утекает память.
И советник не удаляется с графика, скорее всего просто перезагружается сервак, так как в логах отсутствует запись о закрытии терминала. Но это не точно.
Угу. Логи я удалил. Но не беда, повторить не долго. Сейчас запущу советник на серваке, утром (может раньше) будут логи.
Но насколько я помню, не смог в них найти указание на то куда утекает память.
И советник не удаляется с графика, скорее всего просто перезагружается сервак, так как в логах отсутствует запись о закрытии терминала. Но это не точно.
Вы не поняли смысла моего вопроса. Не нужно ждать на сервере, когда там закончится память и он лопнет.
Если в коде есть утечка объектов, то на домашнем локальном компьютере при запущенном советнике перекомпилируйте его - в логи должно быть выведено сообщение о количестве и типе утекаемых объектов. Ну либо запустите его на графике и снимите сразу - тоже должно появиться сообщение об утечке, если она, конечно, есть.
Вы не поняли смысла моего вопроса. Не нужно ждать на сервере, когда там закончится память и он лопнет.
Если в коде есть утечка объектов, то на домашнем локальном компьютере при запущенном советнике перекомпилируйте его - в логи должно быть выведено сообщение о количестве и типе утекаемых объектов. Ну либо запустите его на графике и снимите сразу - тоже должно появиться сообщение об утечке, если она, конечно, есть.
Ничего не пишет при компиляции. Удаляет и ставит по новой. Всё.
На серваке ещё пока работает. Подожду, может там в логах, что то напишет.
Попытался сделать аналог коммента, только чтоб буковки были побольше.
Через какое то время после запуска советника с комментом на нескольких графиках, происходит что то не хорошее, вплоть до потухания экрана и перезагрузки сервака)))
Понятно, что что то делаю не правильно с классом CCanvas, а вот что именно неправильно, я не понимаю.
Кажется понял. Поправьте если понял не правильно.
У меня в коде на каждом тике создаётся ресурс с разными именами.
код из канваса
А при следующем обновлении картинки этот ресурс судя по всему не удаляется.
Объект один и тот же, ресурсы к нему лепятся разные.
В общем переделал код.
вроде так он должен быть правильным.
Ничего не пишет при компиляции. Удаляет и ставит по новой. Всё.
На серваке ещё пока работает. Подожду, может там в логах, что то напишет.
Журнал "Эксперты"
Журнал "Эксперты"
В журнале Эксперты, стерильная чистота.
//---
Да в общем то в причине проблемы разобрались.
Остаётся вопрос, как при закрытии программы, удалить из памяти ресурс созданный канвасом.
Объект я удаляю у него есть имя, а вот имя ресурса в "protected" и его никак не узнаешь.
М да, ООП "весёлая штука".
В итоге пришлось объявлять канвас в глобале, а не в теле функции и добавить в деинит canvas.Destroy();
Полёт нормальный)
Всем доброго дня и хорошего настроения!
Уже очень давно пользуюсь готовой функцией расчёта лота в зависимости от риска, но в ней не было привязки к размеру стоп-лосса. Сегодня решил написать с нуля свою функцию в виде скрипта (для удобства проверки), но уже с учётом стоп-лосса. Прошу посмотреть формулу расчёта размера лота (выделена жёлтым цветом). Возможно, что-то упустил.
Всякого рода проверки на минимальный, максимальный лот, шаг и т.д., и т.п., не включал, т.к. этим займусь позже!
С уважением, Владимир.
Всем доброго дня и хорошего настроения!
Уже очень давно пользуюсь готовой функцией расчёта лота в зависимости от риска, но в ней не было привязки к размеру стоп-лосса. Сегодня решил написать с нуля свою функцию в виде скрипта (для удобства проверки), но уже с учётом стоп-лосса. Прошу посмотреть формулу расчёта размера лота (выделена жёлтым цветом). Возможно, что-то упустил.
Всякого рода проверки на минимальный, максимальный лот, шаг и т.д., и т.п., не включал, т.к. этим займусь позже!
С уважением, Владимир.
Обязательно надо учесть стоимость одного тика.
Обязательно надо учесть стоимость одного тика.
Привет, Алексей! Спасибо, что откликнулся. В целях самообразования хочу понять с какой целью нужно учесть стоимость одного тика и ещё кратко поясни, в какой части формулы его применить, если тебя это не затруднит. Возможно, что не совсем понял о чём речь.
С уважением, Владимир.
Привет, Алексей! Спасибо, что откликнулся. В целях самообразования хочу понять с какой целью нужно учесть стоимость одного тика и ещё кратко поясни, в какой части формулы его применить, если тебя это не затруднит. Возможно, что не совсем понял о чём речь.
С уважением, Владимир.
Для определения суммы которую трейдер готов потерять в случае неудачи. Убыток = Loss*стоимость пункта*лот. Отсюда — лот = допустимый убыток/(Loss*стоимость пункта) Формула примерная.