¡Pide! - página 134

 
bakhul:
Podría alguien ayudarme a añadir una alerta a este filtro, cuando cruza el nivel 0 o cambia de color. Gracias a los que quieran ayudarme...

Tal vez usted tendría mejor suerte para publicar aquí: https://www.mql5.com/en/forum

 

Cuántas órdenes de compra y venta abiertas actualmente en EA

Acabo de pasar por 134 páginas con la esperanza de que alguien ya haya respondido a esta pregunta. Pero no tuve suerte...

Después de crear y ajustar todo tipo de cruce, y el punto de pivote, y el rango ATR, y romper la estrategia que puedo concebir con los cientos de diferentes indicadores que tengo. Me di cuenta de que un EA automatizado completo necesita toneladas de variables para las que hay que codificar. Así que en su lugar, estoy empezando a crear asesores expertos asistidos por el usuario. Bueno a las preguntas en cuestión ...

¿Qué código se puede utilizar para contar cuántas órdenes abiertas de compra y cuántas órdenes abiertas de venta tiene el EA actualmente abierto en el mercado?

No quiero que cuente cuántas órdenes abiertas hay en total porque yo también estaré colocando órdenes en la misma cuenta para compensar las órdenes actuales que el EA ha colocado.

Eventualmente me gustaría configurar filtros que alteren la proporción de órdenes de compra y venta para fines de cobertura.

 

Un poco de ayuda por favor...

Hola a todos,

Originalmente publiqué esto como un nuevo hilo, pero se trasladó a otro hilo de programación (no tengo ninguna objeción a su movimiento BTW) y ahora parece haberse perdido debido a la cantidad de carteles en ese hilo.

Tal vez alguien aquí me puede ayudar?

Casi he terminado mi primer EA después de casi 7 días de ensayo y error y cortar y pegar y horas de investigación....

El problema es que no se puede hacer un seguimiento de los resultados.

Quiero que el EA elimine todas las operaciones actuales y pendientes y salga después de alcanzar 10.000 en la equidad. Abajo está esa parte del código hasta ahora:

bool StopTrade;

int total = OrdersTotal(), cnt = 0, ExitAtEquity=10000;

for (cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

if (AccountEquity ()== ExitAtEquity)//(TimeCurrent()- OrderOpenTime() >= ActiveMinutes*60 )

{if(OrderType()==OP_BUY)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);

if(OrderType()==OP_SELL)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);

if(OrderType()>OP_SELL)

OrderDelete(OrderTicket());

StopTrade=true;}

}

if (dclose==dopen && OrdersTotal() < ConcurrentTrades && StopTrade != true)

Como puede ver, el EA mira la Equidad y luego establece el valor bool de la variable StopTrade a true. El EA entonces reconoce el comando y no procesa nada bajo el StopTrade != true durante un ciclo, pero luego el valor bool del StopTrade se restablece supongo y las operaciones continúan.

En primer lugar, ¿hay alguna forma de conseguir que esto haga lo que necesito en la forma en que lo estoy haciendo?

En segundo lugar, ¿hay alguna función que pueda utilizar para simplemente decirle al EA que salga?

Toda la ayuda es muy apreciada.

NB.

cutzpr - How Many Currently open Buy, and Sell Orders from EA

Creo que parte de mi código puede ayudarte con lo que necesitas.

 

Bueno me había imaginado que un bucle que tirara todas las órdenes abiertas sería un comienzo, pero no sabría que decirle al EA para que solo mire las Órdenes puestas por el EA y no tenga en cuenta las órdenes que yo ponga manualmente. Gracias.

 

Número mágico

cutzpr - necesitas usar un número mágico y luego usar algo como lo siguiente

for (cnt=total;cnt>=0;cnt--)

{

OrderSelect(0,SELECT_BY_POS,MODES_TRADES);

if (OrderMagicNumber()==número mágico)

{if(OrderType()==OP_BUY)

 

Bueno, echando un vistazo a ese código, conjuré este trozo de código de abajo. No estoy seguro de que haya codificado correctamente. He configurado

int MaxLong=5,MaxShort=5;

extern double Magic=10000;

extern int MaxOpenOrders=10;

así que..

si (b<=MaxLong)

{comercio

}

si (s<=MaxShort)

{comercio

}

Pero el EA sigue enviando la máxima compra, y la máxima venta. En lugar de contar cuántas órdenes hay de cada una y limitarse a la MaxLong y Short. Sé que debe haber algo mal en el código pero no lo veo.

for (int cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber()==Magic)

{if(OrderType()==OP_BUY)

{

b++; // add order to Long Quantity

if(TP != 0)

{

if(b!= 0)

{

if(Bid >= ((OrderOpenPrice()+TP*Poin)+Spread))

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // Long position closed.

CMT=OrderCloseTime();

b--; // Long Order closed. Remove one order from total Longs

return(0);

}

}

}

}

if (OrderMagicNumber()==Magic)

{if(OrderType()==OP_SELL)

s++; // Add one to Short order Quantity

if (TP != 0)

{

if(s!= 0)

{

if(Ask <= ((OrderOpenPrice()-TP*Poin)+Spread))

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // Short position closed.

CMT=OrderCloseTime();

s--; // Short Order Closed. Remove one order from total shorts

return(0);

}

}

}

}

}
 
cutzpr:
Bueno, echando un vistazo a ese código, conjuré esta pieza de código de abajo. No estoy seguro de que esté bien codificado. He configurado

int MaxLong=5,MaxShort=5;

extern double Magic=10000;

extern int MaxOpenOrders=10;

así que..

if (b<=MaxLong)

{comercio

}

si (s<=MaxShort)

{comercio

}

Pero el EA sigue enviando la máxima compra, y la máxima venta. En lugar de contar cuántas órdenes hay de cada una y limitarse a la MaxLong y Short. Sé que debe haber algo mal en el código pero no lo veo.

Bueno, creo que estás complicando demasiado las cosas. Trate de usar algunas partes más cortas de código en lugar de una función grande. Esto debería darte alguna pista:

int totalOrders(int type)

{

int totalNumber = 0;

for (int cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber() == Magic && OrderType() == type) totalNumber++;

}

return(totalNumber);

}

[/CODE]

AND HERE IS EXAMPLE HOW YOU CAN USE IT

[CODE]

int totalBuy = totalOrders(OP_BUY);

int totalSell = totalOrders(OP_SELL);

if( (totalBuy + totalSell) < MaxOpenOrders)/*TOTAL NUMBER OF ORDERS WASN'T REACHED*/

{

if(totalBuy <= MaxLongOrders)

{

//OPENING LONG IS PERMITED

}

if(totalSell <= MaxShortOrders)

{

//OPENING SHORT IS PERMITED

}

}

 

[ASK] Indicador "SilverTrend_Signal"

Soy un principiante en forex y en la programación de mql4. Tengo un indicador SilverTrend_Signal (adjunto aquí) y

quiero hacer un EA a partir de este indicador pero tengo un problema con este indicador, la señal puede cambiar

en la misma barra, por ejemplo la flecha de señal de tendencia alcista aparece en el gráfico y luego puede desaparecer y tal vez

cambiar a la flecha de señal de tendencia bajista en la misma barra. ¿Puede alguien ayudarme a resolver este problema?

Utilizo este indicador en el periodo de tiempo M1 y EU.

Muchas gracias.

(Lo siento, mi inglés no es lo suficientemente bueno)

Archivos adjuntos:
 

Mi opinión personal es que usted debe permanecer lejos de usar indicadores que repintan para las señales. Especialmente en el gráfico M1. Las señales cambian con demasiada frecuencia. Sólo estás pidiendo señales no estables y problemas. La historia pasada se ve bien porque es el pasado.

 
willya:
Soy un principiante en la programación de forex y mql4. Tengo un indicador SilverTrend_Signal (lo adjunto aquí) y

Quiero hacer un EA de este indicador pero tengo un problema con este indicador, la señal puede cambiar

en la misma barra, como la flecha de señal de tendencia alcista aparece en el gráfico y luego puede desaparecer y tal vez

cambiar a la flecha de señal de tendencia bajista en la misma barra. ¿Puede alguien ayudarme a resolver este problema?

Utilizo este indicador en el periodo de tiempo M1 y EU.

Muchas gracias.

(Lo siento, mi inglés no es lo suficientemente bueno)

No estoy seguro de cómo se repinta pero si lo hace SOLO en la barra actual, entonces usar la señal al cierre de la barra (confirmada) estará bien.

Si repinta más de la barra actual, entonces usted puede olvidarse de usar su señal para un EA.

FerruFx

Razón de la queja: