![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
Siempre se puede escribir int crossTime = Time[0] cuando se ha producido un cruce, y luego utilizar la función iBarShift utilizando la variable crossTime para comprobar cuántas barras han pasado.
Hola Kalenzo,
Siempre puedes escribir int crossTime = Time[0] cuando tengas un cruce, y luego usar la función iBarShift usando la variable crossTime para comprobar cuántas barras han pasado.
¿Cómo escribirías este código para incluir sólo las "Bear Bars" en el recuento?
Entiendo el ibarshift pero esto incluiría todas las barras desde el cruce. Todavía tendría que utilizar un sistema de recuento como lo tengo para contar "Bear Bars" y creo que esto es donde mi problema radica.
Originalmente probé mi código con este código .... El cual funcionó bien.... pero no se tradujo en el código anterior que en realidad se enumeran en mi EA
{
//----
double f=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,0);
double s=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,0);
double fp=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,1);
double sp=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,1);
static bool CrossedUP,CrossedDn;
static int Count=0;
if(f>s && fp<=sp)
{
CrossedUP=true;
CrossedDn=false;
Alert(Symbol()," Crossed UP");
Count=0;
}
else
if(f=sp){
CrossedUP=false;
CrossedDn=true;
Alert(Symbol()," Crossed Down");
Count=0;
}
if(NewBar()==true && f>s || f<s) Count++;
Comment("Crossed UP: ",CrossedUP," Crossed Down: ",CrossedDn," Bars since Cross: ",Count);
//----
return(0);
}Cualquier otra idea sería apreciada.
Gracias,
SaxMan
Lo siento, Omelette,
Esto tampoco funciona
Gracias,
SaxMan
Hola. Prueba con esto.
{
if(MAFastC=MASlowP){
CrossedUp=false;
CrossedDn=true;
BarCount=0;
}
else
if(MAFastC>MASlowC && MAFastP<=MASlowP)
{
CrossedUp=true;
CrossedDn=false;
BarCount=0;
Alert("Crossed Down");
}
if(CrossedDn==true && NewBar()==true && Candle3mP=="Bear")
BarCount++;
if(BarCount>=2 && Candle3mC=="Bear")
{
Alert("Close Long Position");
return(true);
}
else return(false);límite de tiempo con código EA
No puedo colocar un límite de tiempo en mi EA
la línea de código es la siguiente
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)
He tratado de cambiar ese CERO a un 1 o a un 12 y no puedo conseguir que se detenga el comercio ... me gustaría tener el comercio expira en 12 horas ¿cómo puedo hacer esto?
Estoy usando un backtesting. para asegurarme de que funciona... la función de expiración funciona con eso ¿verdad?
Pruebe esto....
{
string fecha_de_expiración = "2007.10.22";
datetime expirevar = StrToTime(expire_date);
if ( CurTime() >= expirevar )
{
Alert ("Versión expirada");
return(0);
}
// código
return(0);
}
Dave
No puedo colocar un límite de tiempo en mi EA
La línea de código es la siguiente
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)
He probado a cambiar ese CERO por un 1 o por un 12 y no consigo parar la operación... me gustaría que la operación expirara en 12 horas ¿cómo puedo hacerlo?
Estoy usando un backtesting. para asegurarme de que funciona... la función expire funciona con eso ¿verdad?compruebe el canal de error;
La aplicación del tiempo de caducidad de la orden pendiente puede ser desactivada en algunos servidores de comercio. En este caso, cuando se especifica un valor distinto de cero en el parámetro de expiración, se generará el error 147 (ERR_TRADE_EXPIRATION_DENIED).
el parámetro es una variable "datetime" no creo que el 12 entre dentro de esa declaración de variable.
No puedo colocar un límite de tiempo en mi EA
La línea de código es la siguiente
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)
He probado a cambiar ese CERO por un 1 o por un 12 y no consigo parar la operación... me gustaría que la operación expirara en 12 horas ¿cómo puedo hacerlo?
Estoy usando un backtesting. para asegurarme de que funciona... la función de expiración funciona con eso, ¿verdad?Hola. Los tiempos de expiración funcionan bien con MT, la única advertencia es que algunos corredores no los permiten - FXDD es uno. El tiempo de expiración tiene que estar en formato de fecha para que funcione - es decir.
He estado probando esto
extern int TradeLifeHour=12;
extern int TradeLifeMin=00;
datetime expirationtime; (no se sabe qué va aquí)
entonces dentro de start()
expirationtime = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60;
y utilizar expirationtime en el área de 0.
Yo el último código pero no sé cómo configurarlo para que el comercio expire en 12 horas
Prueba esto....
{
string fecha_de_expiración = "2007.10.22";
datetime expirevar = StrToTime(expire_date);
si ( CurTime() >= expirevar )
{
Alert ("Versión expirada");
return(0);
}
// código
return(0);
}
DaveAcabo de utilizar el código que te he dado. Cambié la fecha a 2006 y lo puse en un lugar al azar dentro de Bipoler en una cuenta de dinero real FXDD, y funcionó como un encanto.
O mabe minas demasiado simple? No sé
Dave
??
ese código no hace que cada operación que abre mi EA caduque a las 12 horas de su apertura...