[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 74
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Массив из 8 точек - это скорее M[8][2], чем M[8][8].
"Любые три" - это выбранные заранее, что ли?
Ну да, массив конечно же M[8][2]. Любые три - это любые из массива, которые должны быть определены в процессе вычисления. Можно сформулировать несколько по-другому: Необходимо найти координаты центра окружности и координаты трех точек, максимально близко расположенных по отношению к этой окружности.
А затем OrderOpenPrice() .
тоесть он сам её определит ?
тоесть он сам её определит ?
Вы перебираете открытые ордера и для каждого ордера команда OrderOpenPrice() выдает значение цены по которой ордер был открыт.
Присвойте ее значение какой-нибудь переменной и используйте.
Короче, задача сводится к такой: есть три точки. Надо провести окружность радиуса r так, чтобы сумма квадратов расстояний от них до окружности была минимальной.
Вообще-то задача серьезная, с налету не решается. Окружность - чай, не прямая. Какие из двух расстояний брать - совсем не очевидно.
Ну конкретный пример:
Покажите правильное расположение.
В каком смысле "он сам её определит"?
Вы перебираете открытые ордера и для каждого ордера команда OrderOpenPrice() выдает значение цены по которой ордер был открыт.
Присвойте ее значение какой-нибудь переменной и используйте.
ну я так и понял. просто при переборе он её сразу автоматически задаст и будет использовать для проверки. ?
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()== OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNum2)
{
if ( Ask>(OrderOpenPrice()+(AD1*Point)) )
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Black);
return(0);
}
Вроде правильно ?
ну я так и понял. просто при переборе он её сразу автоматически задаст и будет использовать для проверки. ?
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()== OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNum2)
{
if ( Ask>(OrderOpenPrice()+(AD1*Point)) )
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Black);
return(0);
}
Вроде правильно ?
Не совсем. А если ордер не выбран? Где нормализация цен при отсылке торгового приказа?
Ордера закрываете в цикле, а значит перебор нужно делать не от нуля, а от OrdersTotal()-1 до >=0
Короче, задача сводится к такой: есть три точки. Надо провести окружность радиуса r так, чтобы сумма квадратов расстояний от них до окружности была минимальной.
Вообще-то задача серьезная, с налету не решается. Окружность - чай, не прямая. Какие из двух расстояний брать - совсем не очевидно.
Ну конкретный пример:
Покажите правильное расположение.
Думаю, что так:
Elenn: Думаю, что так:
Не, не буду браться за такую задачу. В процессе самого вычисления придется решать, какие именно расстояния надо брать (от любой точки до окружности есть два расстояния). Ничего красивого.
Может, ГА тут поможет найти локальный минимум. Но я в этом не силен.
P.S. Вы не уточнили целевую функцию - сумма квадратов расстояний или сумма самих расстояний.
Вообще-то задача серьезная, с налету не решается. Окружность - чай, не прямая.