[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 74

 
Mathemat:

Una matriz de 8 puntos es M[8][2] en lugar de M[8][8].

¿Son los "tres" preseleccionados o qué?


Bueno, sí, el array es por supuesto M[8][2]. Los tres cuales son cualquiera de la matriz que tiene que ser definida en el proceso de cálculo. Podemos formularlo de forma ligeramente diferente: necesitamos encontrar las coordenadas del centro de una circunferencia y las coordenadas de tres puntos lo más cercanos posible a esa circunferencia.
 
 
atztek:


Y luego OrderOpenPrice() .


¿así que lo definirá por sí mismo?
 
Myth63:

¿para que lo identifique él mismo?
¿Qué quiere decir con "lo encontrará"?
Usted mira a través de las órdenes abiertas, y para cada orden, el comando OrderOpenPrice() da el valor del precio al que se abrió la orden.
Asigna su valor a alguna variable y utilízala.
 
Elenn: Bueno, sí, el array es por supuesto M[8][2]. Los tres son cualquiera de la matriz, que deben ser definidos en el proceso de cálculo.

En resumen, el problema se reduce a esto: hay tres puntos. Hay que dibujar un círculo de radio r tal que la suma de los cuadrados de las distancias de ellos al círculo sea mínima.

En realidad, es una gran tarea, que no puede resolverse en un abrir y cerrar de ojos. Un círculo no es una línea recta. Cuál de las dos distancias tomar no es en absoluto evidente.

He aquí un ejemplo concreto:

Muestra la disposición correcta.

 
atztek:
¿Qué quieres decir con "lo detectará"?
Usted mira a través de las órdenes abiertas, y para cada orden, el comando OrderOpenPrice() da el valor del precio al que se abrió la orden.
Asigna su valor a alguna variable y utilízala.


Yo lo entendí así. Lo pondrá automáticamente y lo utilizará para la comprobación. ?

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);

}

¿Parece que está bien?

 
Myth63:


Yo lo entendí así. Lo pondrá automáticamente y lo utilizará para comprobarlo. ?

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);

}

¿Parece que está bien?

No del todo. ¿Y si no se selecciona ninguna orden? ¿Dónde está la normalización del precio cuando se envía una orden comercial?

Los pedidos se cierran en un bucle, lo que significa que la búsqueda debe hacerse no desde cero, sino desde OrdersTotal()-1 hasta >=0

 
Mathemat:

En resumen, el problema se reduce a esto: hay tres puntos. Tienes que dibujar un círculo de radio r tal que la suma de los cuadrados de las distancias de ellos al círculo sea mínima.

En realidad es una gran tarea, no es algo que se pueda hacer en un abrir y cerrar de ojos. Un círculo no es una línea recta. Cuál de las dos distancias tomar no es en absoluto evidente.

Un ejemplo concreto:

Muestra la disposición correcta.


Creo que sí:
 

Elenn: Думаю, что так:

No, no aceptaré esa tarea. En el proceso de cálculo propiamente dicho, tendrás que decidir qué distancias tomar (hay dos distancias desde cualquier punto al círculo). Nada bonito.

Tal vez GA pueda ayudar a encontrar el mínimo local aquí. Pero no soy bueno en eso.

P.D. No has especificado la función objetivo: suma de cuadrados de las distancias o suma de las propias distancias.

 
Mathemat:

En realidad es una gran tarea, no es algo que se pueda hacer en un abrir y cerrar de ojos. Un círculo no es una línea recta.

Entiendo que la tarea no es fácil. No quiero reducir el problema a una estúpida búsqueda de todas las variantes posibles de "tres". Según tengo entendido, la variante con una línea recta también "participará" en todos los puntos, pero no en tres de ellos. ¿Cómo crees que podría ser la variante de una línea para que la suma de las distancias de los tres "mejores" puntos a esta línea sea mínima?