Доброго времени суток. Нужно каким-то образом закрывать позицию в конце дня (сугубо экспертинг; дневные бары). Моделирование происходит либо по открытиям, либо по тикам. Т.е. мы либо довольствуемся открытиями, либо кувыркаемся через голову, пытаясь на каком-нибудь 15мин таймфрейме проанализировать предыдущие дни и отловить начало и конец текущего. Есть какие-либо решения данной проблемы? Я вижу несколько виртуально-гипотетических вариантов:
1) Хакерско-читерское закрытие позиции в по любой цене и в любое время. Пусть нечестно, но зато можно было бы без извращений просто задним числом закрывать позицию по нужной цене.
2) Моделирование по открытиям и закрытиям в рамках одного бара. Т.е. сначала тик-открытие, затем тик-закрытие.
3) Выставление ордера, автоматом закрывающегося в определенное время (т.е. в конце дня).
А в чем заключается неудача если функции передается ID текущего графика, на котором запущен индикатор, и имя текущего индикатора, который запущен на текущем графике?
tuner: А в чем заключается неудача если функции передается ID текущего графика, на котором запущен индикатор, и имя текущего индикатора, который запущен на текущем графике?
Если правильно вас понимаю и вам нужен номер подокна, в котором работает прилагаемый вами тестовый код индикатора, то, исходя из описания к функции, оптимальнее применить её второй вариант.
В справке к функции ChartWindowFind() есть пример хороший ещё на эту тему (в том числе, в плане имеющихся там комментариев):
//+------------------------------------------------------------------+//| Сообщает номер окна графика с указанным индикатором |//+------------------------------------------------------------------+int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
{
int window=-1;
//--- if((ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE)==PROGRAM_INDICATOR)
{
//--- функция вызвана из индикатора,имя не требуется
window=ChartWindowFind();
}
else
{
//--- функция вызвана из эксперта или скрипта
window=ChartWindowFind(0,short_name);
if(window==-1) Print(__FUNCTION__+"(): Error = ",GetLastError());
}
//---return(window);
}
Если правильно вас понимаю и вам нужен номер подокна, в котором работает прилагаемый вами тестовый код индикатора, то, исходя из описания к функции, оптимальнее применить её второй вариант.
Тестовый код (добавила несколько строк в ваш):
В справке к функции ChartWindowFind() есть пример хороший ещё на эту тему (в том числе, в плане имеющихся там комментариев):
Благодарю за подсказку, но у меня стоит немного другая задача, из-за чего использование 2-го варианта функции не имеет смысла: я хочу посчитать количество индикаторов с указанным именем на всех открытых графиках терминала. Задача уже решена, но хотелось упростить получившийся код благодаря использованию функции ChartWindowFind() первого варианта, а оказалось что эта функция не работает не только с другими окнами, но и даже с текущим, вот я и спрашиваю баг ли это, имеет ли смысл писать в сервис деск или я чего то не учел и все работает как задумано?
Доброго времени суток. Нужно каким-то образом закрывать позицию в конце дня (сугубо экспертинг; дневные бары). Моделирование происходит либо по открытиям, либо по тикам. Т.е. мы либо довольствуемся открытиями, либо кувыркаемся через голову, пытаясь на каком-нибудь 15мин таймфрейме проанализировать предыдущие дни и отловить начало и конец текущего. Есть какие-либо решения данной проблемы? Я вижу несколько виртуально-гипотетических вариантов:
1) Хакерско-читерское закрытие позиции в по любой цене и в любое время. Пусть нечестно, но зато можно было бы без извращений просто задним числом закрывать позицию по нужной цене.
2) Моделирование по открытиям и закрытиям в рамках одного бара. Т.е. сначала тик-открытие, затем тик-закрытие.
3) Выставление ордера, автоматом закрывающегося в определенное время (т.е. в конце дня).
Буду благодарен за какую-либо помощь. Спасибо.
Баг?
2015.04.13 20:51:10.710 indi AUDJPY,H1: Подокно запрашиваемого индикатора: -1
Баг?
2015.04.13 20:51:10.710 indi AUDJPY,H1: Подокно запрашиваемого индикатора: -1
Нет, не баг.
Возвращаемое значение
Номер подокна в случае удачи. Ноль означает главное окно графика. В случае неудачи возвращает -1.
Нет, не баг.
А в чем заключается неудача если функции передается ID текущего графика, на котором запущен индикатор, и имя текущего индикатора, который запущен на текущем графике?
Если правильно вас понимаю и вам нужен номер подокна, в котором работает прилагаемый вами тестовый код индикатора, то, исходя из описания к функции, оптимальнее применить её второй вариант.
Тестовый код (добавила несколько строк в ваш):
В справке к функции ChartWindowFind() есть пример хороший ещё на эту тему (в том числе, в плане имеющихся там комментариев):
Если правильно вас понимаю и вам нужен номер подокна, в котором работает прилагаемый вами тестовый код индикатора, то, исходя из описания к функции, оптимальнее применить её второй вариант.
Тестовый код (добавила несколько строк в ваш):
В справке к функции ChartWindowFind() есть пример хороший ещё на эту тему (в том числе, в плане имеющихся там комментариев):
Добрый вечер!
Никак не врублюсь: в функции start компилятор требует "return" - function must return a value".
Какое value я must return в данном случае?:
int start()
{
if (Orders!=0||Ord > 0)
{
CritCloseBuy();
CritCloseSell();
}
else
{
CritOpen();
}
return;
}
Может из-за этого OrderClose() не видит открытой позиции?
Добрый вечер!
Никак не врублюсь: в функции start компилятор требует "return" - function must return a value".
Какое value я must return в данном случае?:
int start()
Может из-за этого OrderClose() не видит открытой позиции?
сделай void start() и ошибки не будет
Спасибо! Ошибка исчезла, но позиция все равно не закрывается.