Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 72
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
Si lo comparas con la balanza, así es:
Gracias.
Bien, entonces según entiendo, obtenemos tres funciones personalizadas diferentes con el retorno de la correcta (si buscamos tres parámetros diferentes)
ArraySort
entonces
ArrayBsearch por el número correcto
y luego, ¿cómo afrontarlo?
Exactamente la transición de una matriz a un elemento de la estructuraNo lo entiendes.
Necesitas hacer una única función que rellene y ordene el array declarado globalmente. La matriz tendrá que ser pasada a la función por referencia.
Y necesitas funciones adicionales que saquen los datos que necesitas de este array.
No lo entiendes.
Necesitas hacer una sola función que llene y ordene el array declarado globalmente. La matriz tendrá que ser pasada a la función por referencia.
Y necesitas funciones adicionales que tomen los datos que necesitas de este array.
ok, ¿puede demostrar cómo sacar algo de un array de estructuras? digamos que rellenado y ordenado
cómo transferir por referencia y escribir
Por favor, indique cómo debería ser la condición. Si se activa un stop loss, entonces el lote se multiplica por 2, y si la siguiente orden activa un take profit, el lote volvería al lote original, que estaba antes del stop loss.
Lo entiendo así, pero no sé cómo seguir...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
otra pregunta, ¿qué escribí mal en el bloque de borrar órdenes? no siempre borra las órdenes, en el registro dice
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Otra pregunta, ¿qué he escrito mal en el bloque para borrar los pedidos? No siempre borra los pedidos, en el registro dice
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Está intentando eliminar una orden de mercado, no se eliminan, se cierran con la función OrderClose(). Para que el bucle se borre o se cierre correctamente, tenemos que distinguir la orden por su tipo.
if(OrderType()<=OP_SELL) - para órdenes de mercado, if(OrderType()>OP_SELL) - para órdenes pendientes.
Hay una cosa llamadaCHARTEVENT_MOUSE_MOVE
Pregunta: ¿funciona esto en dispositivos móviles donde no hay ratón?
Por favor, indique cómo debería ser la condición. Si se activa un stop loss, entonces el lote se multiplica por 2, y si la siguiente orden activa un take profit, el lote volvería al lote original, que estaba antes del stop loss.
Lo entiendo así, pero no sé cómo seguir...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
Por favor, indique cómo debería ser la condición. Si se activa un stop loss, entonces el lote se multiplica por 2, y si la siguiente orden activa un take profit, el lote volvería al lote original, que estaba antes del stop loss.
Lo entiendo así, pero no sé cómo seguir...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
La solución a este problema depende de la lógica completa del Asesor Experto, usted puede rastrear la activación de stoploss o takeprofit por su comentario.
if(StringFind(OrderComment(),"tp")>=0)// сработал тейкпрофит
...
No lo entiendes.
Necesitas hacer una sola función que llene y ordene el array declarado a nivel global. La matriz tendrá que ser pasada a la función por referencia.
Y necesitas funciones adicionales que saquen los datos que necesitas de este array.