Массив из 8 точек - это скорее M[8][2], чем M[8][8].
"Любые три" - это выбранные заранее, что ли?
Ну да, массив конечно же M[8][2]. Любые три - это любые из массива, которые должны быть определены в процессе вычисления. Можно сформулировать несколько по-другому: Необходимо найти координаты центра окружности и координаты трех точек, максимально близко расположенных по отношению к этой окружности.
В каком смысле "он сам её определит"? Вы перебираете открытые ордера и для каждого ордера команда OrderOpenPrice() выдает значение цены по которой ордер был открыт. Присвойте ее значение какой-нибудь переменной и используйте.
Elenn: Ну да, массив конечно же M[8][2]. Любые три - это любые из массива, которые должны быть определены в процессе вычисления.
Короче, задача сводится к такой: есть три точки. Надо провести окружность радиуса r так, чтобы сумма квадратов расстояний от них до окружности была минимальной.
Вообще-то задача серьезная, с налету не решается. Окружность - чай, не прямая. Какие из двух расстояний брать - совсем не очевидно.
atztek: В каком смысле "он сам её определит"? Вы перебираете открытые ордера и для каждого ордера команда OrderOpenPrice() выдает значение цены по которой ордер был открыт. Присвойте ее значение какой-нибудь переменной и используйте.
ну я так и понял. просто при переборе он её сразу автоматически задаст и будет использовать для проверки. ?
Короче, задача сводится к такой: есть три точки. Надо провести окружность радиуса r так, чтобы сумма квадратов расстояний от них до окружности была минимальной.
Вообще-то задача серьезная, с налету не решается. Окружность - чай, не прямая. Какие из двух расстояний брать - совсем не очевидно.
Не, не буду браться за такую задачу. В процессе самого вычисления придется решать, какие именно расстояния надо брать (от любой точки до окружности есть два расстояния). Ничего красивого.
Может, ГА тут поможет найти локальный минимум. Но я в этом не силен.
P.S. Вы не уточнили целевую функцию - сумма квадратов расстояний или сумма самих расстояний.
Вообще-то задача серьезная, с налету не решается. Окружность - чай, не прямая.
Понимаю, что задача не из простых. Очень не хотелось бы сводить задачу к тупому перебору всех возможных вариантов "троек". Насколько я понимаю, в варианте с прямой тоже будут "участвовать" все точки, а не три из них. Как по-вашему, мог бы выглядеть вариант для прямой, чтобы сумма расстояний от трех "лучших" точек до этой прямой была минимальна?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Массив из 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. Вы не уточнили целевую функцию - сумма квадратов расстояний или сумма самих расстояний.
Вообще-то задача серьезная, с налету не решается. Окружность - чай, не прямая.