Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Al menos en los setters de métodos esto está justificado - el código puede ser más legible y compacto, se obtiene una la de parámetros con nombre
ChartObject *hline=HLine::New(1.255).Color(clrGreen).Width(2).Selectable(true); // не надо помнить очерёдность параметров и можно писать в одну строку - цепочкой
// получается вот из подобного :
class HLine:public ChartObject {
public:
HLine(double price);
HLine *New(double _price) { return new HLine(_price); } // это чтобы не городить (new HLine(...)).Method1
HLine *Color(color _clr) { fgColor=_clr; return GetPointer(this); } // а это чтобы получались цепочки obj.Method1(..).Method2(..)
};
y un poco interfiere con la calificación de las funciones por el tipo devuelto.
Siéntase libre de devolver GetPointer(this) desde los métodos.
De esta manera & es más conciso.
Bueno, déjame empezar primero.
Para cerrar una orden, no tenemos que definir el tipo de orden y el precio que corresponde a este tipo. ¡Basta con escribir "cerrar al precio" en OrderClosePrice()!
void OnStart()
{
int i, total = OrdersTotal()-1;
for(i = total; i >= 0; i--)
{
if(OrderType() < OP_SELLSTOP)
{
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100))
printf("***********");
}
}
}/********************************************************************/
¡Muy bien! ) Gracias.
A juzgar por el ejemplo, ¿tampoco necesitas OrderSelect()?
(¡Genial! ) Gracias.
A juzgar por el ejemplo, ¿tampoco se necesita OrderSelect()?
¡Bien! ) Gracias.
Se necesita. Sólo me lo perdí por pereza...
Sí, bueno... Un verdadero desastre.
Pero antes, no me encontré con estos temas.
Así que puede utilizar OrderClosePrice sólo después de la correspondiente OrderSelect. Ya que OrderSelect copia los datos de las funciones de Order(const)-una vez, y el mismo RefreshRates no es capaz de actualizarlos.
Es decir, si, por ejemplo, OrderClosePrice falla en el cierre, entonces el OrderSelect debe hacerse de nuevo antes del siguiente intento (RefreshRates no es necesario).
ZS ¡Este hilo es de 2005! Hay argumentos detallados de los desarrolladores aquí.
Las órdenes abiertas deben analizarse a partir de un número superior, es decir, for(int nom=OrdersTotal()-1; nom>=0; nom--)
Esto es especialmente importante cuando se borran los pedidos.
Pero qué pasará si hacemos lo contrario for(int nom=0; nom<OrdersTotal(); nom++) ?
Al principio, el índice es igual a cero y se elimina el primer pedido con número 0.
Entonces el índice pasa a ser igual a 1. En este momento se desplazan los pedidos restantes y el que tiene el número 1
ocupa la posición cero. El antiguo número 2 ocupa la posición 1. Se borrará.
Entonces el índice se convierte en 2. Y la orden que era la número 4 al principio será eliminada.
Así, se eliminan las órdenes que ocupan posiciones pares al principio. Los impares se quedarán. Esto se puede ver en los comentarios de los pedidos y los números.
Adjunto un script que muestra ambas opciones de borrado y capturas de pantalla
Hay 20 pedidos pendientes
Eliminados uno a uno