[¡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 1079
![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
Parece que algo no funciona. POR FAVOR, AYUDA.
La idea es la siguiente: si la vela es mayor que un determinado valor, entonces prohíbe seguir negociando.
bool Trade=true;
//---------- start()
{.......
if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen(); //--------open order if (no order is open) AND (candlestick is not bigger than)
if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==-1) Trade=false; //--------- poner Tradeen falso siempre que (no haya órdenes abiertas) Y (la vela sea mayor que)
......}
//------- El comercio se utiliza en la función CheckForOpen().
void CheckForOpen() //------------------- comprobar las condiciones y abrir la orden
{int res;
if( Trade && A()==-1 && B()==-1) //------- comprobar las condiciones de apertura
{ res=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,Ask+SL*Point,Bid-TP*Point,"",MAGICMA,0,Red); //--------- si se cumple la condición, se abre la orden
trade=false; } //--------Trade tiene asignado un valor de prohibición de comercio. Y aquí funciona. Si la orden se cierra en la orden de toma, entonces espera a que lleguen las nuevas condiciones definitivas, aunque las antiguas sigan vigentes (antes, el asesor abría órdenes continuamente)
.........}
//-------------------------- comprobar la altura de la vela
int ComprobarVolumen()
{ double volume=High[1]-Low[1]; //-------medir la altura de la vela
if (volume <= CandleVolume*Point) return (1); //---------- si la vela es inferior a
if (volume > CandleVolume*Point) return (-1);//------------si la vela es más de
return(0);}
También probé la versión, pero no funcionó:
void start()
{ .....
if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen();
.....}
.....
int ComprobarVolumen()
{ double volume=Alto[1]-Bajo[1]; //-------medida de la altura de la vela
if (volume <= CandleVolume*Point) return (1); //---------- si la vela es inferior a
if (volume > CandleVolume*Point) {Trade=false; return (-1);}//------------si la vela es superior a
return(0);}
No hay manera de que funcione.
Tal vez deberíamos hacer un indicador primero
Tal vez deberíamos hacer un indicador primero
¡Ayúdame! Cómo hago para que la impresión aparezca una vez, pero en cada tic tenga una caída de impresión.
¡Ayúdame! Cómo hago para que la impresión aparezca una vez, pero en cada tickeo se me caiga la impresión.
imprimir esta información cuando se abre el pedido.
Necesito obtener información sobre las órdenes que ya han sido abiertas manualmente o por otro EA.
Necesito mostrar información sobre las órdenes existentes que ya han sido abiertas manualmente o por otro EA.
¿Qué es este error? Si envío un correo de prueba desde el terminal obtengo un error
- 2010.12.28 18:23:55 Mail: 530 5.7.0 Debe emitir un comando STARTTLS primero. y1sm3265289fak.15
¿y no hay manera de hacerlo sin él?
Se puede, por supuesto, pero el indicador facilita la comprobación visual del algoritmo
Necesito mostrar información sobre las órdenes existentes que ya han sido abiertas manualmente o por otro EA.
Alternativamente, podemos hacer un contador de impresiones. Declaramos una variable entera. Entonces comprobamos si no hay pedidos, lo ponemos a cero. Entonces comprobamos si la variable es igual a cero y hay órdenes en el mercado, entonces imprimimos los datos de la orden e incrementamos esta variable en 1. En cuanto se cierren las órdenes, la variable volverá a ponerse a cero. Esto significa que el código esperará a que aparezca al menos una orden y mostrará información sobre ella en el registro.