Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 538
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
Hola Sr. profesionales.No te niegues a un recién llegado a la programación, mira el código, para ver si está escrito correctamente. Que no es demasiado perezoso para ocuparse de ello. No puedo probarlo en el Probador de Estrategias porque es multidivisa. Fichero con el código y los indicadores adjuntos al archivo.
Estoy tratando de escribir un simple EA que cierre todas las posiciones de mi cuenta cuando alcance los valores especificados de ganancias o pérdidas en la moneda de depósito (abro por varios símbolos), pero cierra las posiciones tan pronto como aparecen (((
No entiendo qué es lo que está mal:
Mira esto.
extern int beneficio = 30;
extern int Magia=0;
int CurProfit;
extern bool CurSymbolOnly = false;
int start() // Función especial start
{
//Contador de beneficios de todos los pedidos
doble p1;
int i1, kk1=Total de pedidos(), pr1=0;
for (i1=0; i1<kk1; i1++)
{
if(OrderSelect(i1, SELECT_BY_POS, MODE_TRADES))
{
if (!CurSymbolOnly || OrderSymbol()==Symbol())
{
p1=MarketInfo(OrderSymbol(), MODE_POINT);
if (p1==0) if (StringFind(OrderSymbol(), Symbol())<0) p1=0.0001; else p1=0.01;
if (OrderType()==OP_BUY)
{
pr1+=NormalizeDouble((OrderClosePrice()-OrderOpenPrice())/p1, 0);
}
if (OrderType()==OP_SELL)
{
pr1+=NormalizeDouble((OrderOpenPrice()-OrderClosePrice())/p1, 0);
}
}
}
}
CurProfit=pr1;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
si (beneficio<=pr1)
{
ClosePosWithMaxProfitInCurrency();
}
return(0);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///cierra del más caro al más barato
void ClosePosWithMaxProfitInCurrency(string sy="", int op=-1, int mn=-1)
{
doble pr=0;
int i5, k=OrdersTotal(), np=-1;
if (sy=="0") sy=Símbolo();
for (i5=k-1; i5>=0; i5--)
{
if (OrderSelect(i5, SELECT_BY_POS, MODE_TRADES))
{
si ((OrderSymbol()==sy || sy==") && (op<0 || OrderType()==op))
{
if (mn<0 || OrderMagicNumber()==mn)
{
si (pr<OrderProfit()+OrderSwap())
{
pr=OrderProfit()+OrderSwap();
np=i5;
}
}
}
}
}
si (np>=0)
{
if (OrderSelect(np, SELECT_BY_POS, MODE_TRADES))
{
{for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),9);
if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),9);
}
}
}
}
closeotlojnie();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//cerrarotlojnie
void closeotlojnie()
{
for (int i=TotalPedidos()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket());
if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket());
if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket());
if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket());
}
}
He elaborado una función única para que cree matrices vinculadas de símbolos y número de órdenes (posiciones abiertas) de compra y venta, pruebe el script abriendo varias posiciones en una demo
Gracias por su tiempo, pero es un poco complicado para mí, perdón por la intromisión. Explícame qué, dónde y cómo. Como se dice en los dedos.
Nunca he estado acostumbrado a comerciar con este tipo de scripts.
Gracias por su tiempo, pero es un poco complicado para mí, perdón por la intromisión. Explícame qué, dónde y cómo. Como se dice en los dedos.
Lo he probado y he operado manualmente en una cuenta demo.
¿Cómo lo has probado en una cuenta demo si sólo hay errores? El código que se presentó no podía comerciar. He añadido comentarios al código. Tienes que hacer todo el trabajo tú mismo, sin conocimientos y sin trabajo... No se puede operar en los mercados, especialmente en el de divisas. El resultado será inequívoco. Además de los problemas mencionados, debe utilizar el sistema de comercio que haya elegido. Después de 2-3 meses los resultados se mostrarán, entonces usted decidirá si este sistema es adecuado para usted personalmente y para el comercio en principio.
Pregunta a los moderadores o administradores: ¿Puedo cambiar mi apodo? Intenté registrarme en MQL5, pero resultó que mi nick ya estaba utilizado allí, así que tuve que registrarme con otro. Quiero tener el mismo apodo allí y aquí. Por supuesto, puedo volver a registrarme aquí también, pero he empezado a publicar algo en Code Base y quiero mantener la autoría de mis trabajos (y posts) simplemente "cambiando mi nombre". ¿Es posible?
Escribe a Rosha en un mensaje privado. Espero que la encuentres. Exponer el problema
Bien, gracias.
Hola! Teniendo EAs en una versión anterior de MetaTrader actualicé el terminal. Después de eso volví al 509. Así que los EA han "estado" en 60... Bild, volvieron a la versión de la terminal en la que se escribieron.
La pregunta es: ¿Qué hacer con los EAs que dejan de abrir operaciones en el Probador de Estrategias después de "volver" y los que ya no se pueden probar (el botón de inicio en el Probador de Estrategias simplemente no responde a un clic)?