[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 341
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Los parámetros de indicación guardados se "introducen" en los indicadores una vez durante la inicialización de la plantilla, luego "se vuelven completamente independientes"/.
Todos los parámetros modificados del indicador se guardan en la plantilla, si ha cambiado los parámetros del indicador, vuelva a guardar la plantilla.
>> Gracias.
mazepa 08.12.2009 17:42
RESPUESTA: ¡en el CÓDIGO!
Si entiendo el algoritmo, entonces a la hora establecida abrimos compra (venta), si el precio ha pasado >10 pips en la otra dirección, entonces cerramos la orden y nos colocamos en la dirección opuesta.
Para cerrar, estoy utilizando mi propia función universal.
¡//Función para cerrar todas las órdenes de mercado en--------------------------------------------------------------------------------------------------
void _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //cruzar todas las órdenes para todas las divisas
{
if (OrderSelect(i,SELECT_BY_POS)==true) //si la orden se selecciona con éxito
{
if (OrderSymbol()!=Símbolo()) continue; //si la orden está en la moneda incorrecta, continúe la búsqueda
{
switch(OrderType()) //en la orden requerida, determine el tipo (Bue_Sell) y ciérrela
{
case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
return;
}
Así que ahora antes de abrir en sentido contrario sólo tienes que escribir _CloseAllOrder()
Amigos, sólo estoy aprendiendo. Por favor, no mire el contenido del programa, sólo ayúdeme a encontrar un error en el programa:
int start()
{
switch(CurrentState)
{
case STATE_SHORT:
MyOrderTicket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1, 0, 0,NULL, 1, 0, Red);
OrderSelect(MyOrderTicket,SELECT_BY_TICKET);
if (OrderModify(OrderTicket(),OrderOpenPrice(),Bid+90*Point,Bid-Profit1*Point,0,Green)==true)
{CurrentState=STATE_1;
break;
}
case STATE_1:
OrderSelect(MyOrderTicket,SELECT_BY_TICKET);
if(Ask <= OrderTakeProfit())
{CurrentState=STATE_SHORT;
break;
}
if(Bid >= (OrderOpenPrice()+Profit1*Point)
{CurrentState=STATE_SHORT;
break;
}
}
//----
return(0);
}
El error es el siguiente: \N - Paréntesis izquierdo desequilibrado. ¿Dónde está el error?
Amigos, sólo estoy aprendiendo. Por favor, no mire el contenido del programa, sólo ayúdeme a encontrar un error en el programa:
Lo tengo:
necesidad:
Cómo declarar un array unidimensional sin aplicar un registro a cada celda de memoria (es posible)
sino por una secuencia unidimensional
¿¡o la secuencia unidimensional es sólo para constantes numéricas y lógicas!?
Lo tengo:
>> tenemos que hacerlo:
¡Gracias, amigo!
Una pregunta más. Si (OrdersTotal()==0) este... si el número de órdenes abiertas es igual a cero... entonces como será...si el número de órdenes abiertas PARA EL DÍA es igual a cero.
¿No hay algo como OrdersDayTotal?
no, pero siempre podemos escribir nuestra propia función)
Cuenta las órdenes de compra y venta, para un determinado símbolo, abiertas hoy. No hay pedidos pendientes.
if(OrdersDayTotal(Symbol())==0) {...}
algo así)
mazepa 08.12.2009 17:42
RESPUESTA: ¡En el COD!
Si entiendo el algoritmo, abrimos la compra (venta) a la hora establecida, si el precio pasa >10 pips en la otra dirección, cerramos la orden y nos movemos al lado contrario.
Utilizo mi propia función universal para cerrarlo.
//Función de cierre de todas las órdenes de mercado en ventana--------------------------------------------------------------------------------------------------
void _CerrarTodoOrden()
{
for(int i=0; i<OrdersTotal(); i++) //retirar todos los pedidos de todas las monedas
{
if (OrderSelect(i,SELECT_BY_POS)==true) //si el pedido se ha seleccionado correctamente
{
if (OrderSymbol()!=Symbol()) continue; //si el pedido está en la moneda incorrecta, continúa la búsqueda
{
switch(OrderType()) //cuando la orden requerida es enviada, define su tipo (Bue_Sell) y la cierra
{
caso 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
caso 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
volver;
}
Así que ahora sólo tienes que escribir _CloseAllOrder() antes de abrir en sentido contrario
La función es la bomba me costó un par de páginas, muchas gracias.mazepa 08.12.2009 17:42
RESPUESTA: ¡En el COD!
Si entiendo el algoritmo, abrimos la compra (venta) a la hora establecida, si el precio se ha movido >10 pips en la otra dirección, cerramos la orden y nos movemos en la dirección opuesta.
Para el cierre utilizo mi propia función universal.
//Función de cierre de todas las órdenes de mercado en ventana--------------------------------------------------------------------------------------------------
void _CerrarTodoOrden()
{
for(int i=0; i<OrdersTotal(); i++) //retirar todos los pedidos de todas las monedas
{
if (OrderSelect(i,SELECT_BY_POS)==true) //si el pedido se ha seleccionado correctamente
{
if (OrderSymbol()!=Symbol()) continue; //si el pedido está en la moneda incorrecta, continúa la búsqueda
{
switch(OrderType()) //cuando la orden requerida es enviada, define su tipo (Bue_Sell) y la cierra
{
caso 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
caso 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
volver;
}
Así que ahora sólo tienes que escribir _CloseAllOrder() antes de abrir en sentido contrario
La función es la bomba me costó un par de páginas, muchas gracias.