Indicadores Multi Timeframe - página 1127

 
Jeaa:

Queridos todos... espero que estéis muy bien...

Aprendí a programar e hice un simple EA para determinar el valor bajo en los 3 últimos barr y abrir una orden de compra... pero tengo un problema, no puso la orden... ¿Alguien puede ayudarme? El programa obtiene el precio bajo y muestra la alerta, pero no pone la orden de compra...


Gracias por adelantado...

//--------------------------------------------------------------------
// NewBar_jeaa_Rev 2.mq4
//--------------------------------------------------------------------
#property copyright "Jeaa"

extern int GV_CantidadBarras=3; // Cantidad de barras
extern int dígitos=5;
//--------------------------------------------------------------------
extern double Lotes = 0.01;
extern double StopLoss = 100;
extern double TakeProfit = 100;
extern int Slippage = 3;


//--------------------------------------------------------------------
bool GV_Flag_NuevaBarra=false; // Flag de una nueva barra
//======================================================================

int start() // Función especial start()
{
double Precio; // variable que registra el precio mínimo y máximo
//--------------------------------------------------------------------
Fun_NuevaBarra(); // Llamada a la función
if (GV_Flag_NuevaBarra==false) // Si no hay nueva barra..
return; // ..return
//=========================================================================

//int IndMax =ArrayMaximum(High,GV_CantidadBarras,1);// Indice de la barra del precio maximo
int IndMin =ArrayMinimum(Low, GV_CantidadBarras,1);// Indice de la barra del precio minimo

Precio=Bajo[IndMin];

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Precio,Slippage,StopLoss,TakeProfit, "My orderrr",16384,0,Blue);

Alert(Symbol(),": Barras= ",GV_CantidadBarras, // Mostrar mensaje de precios max y min
", Min= ",DoubleToString(Precio,dígitos));

devolver;
}

void Fun_NuevaBarra() // Descripción de la Funcion que detecta ..
{ // .. una nueva barra
static datetime NewTime=0; // variable que almacena fecha y hora
GV_Flag_NuevaBarra=false; // Inicializa nueva barra a falso (no hay nueva barra)
if(NewTime!=Time[0]) // Si existe nueva barra el dato es distinto de cero..
{
NewTime=Time[0]; //.. y en ese caso se registra la hora y fecha de la..
GV_Flag_NuevaBarra=true; //nueva barra y se activa el flag que señala la...
//existencia de una nueva barra
}
}

¿Qué error te da en los expertos o en la pestaña del diario del terminal?
 
mladen:
Qué error te da en los expertos o en la pestaña de diario del terminal?

Hola mladen... Gracias por tu respuesta...

2016.09.06 11:42:06.700 NewBar_jeaa_Rev 2 USDJPY,M1: Alerta: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: Alert: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: operaciones comerciales no permitidas por la configuración
2016.09.06 11:41:36.396 NewBar_jeaa_Rev 2 USDJPY,M1: inicializado
2016.09.06 11:41:36.385 NewBar_jeaa_Rev 2 USDJPY,M1 entradas: GV_CantidadBarras=3; digits=5; Lots=0.01; StopLoss=100.0; TakeProfit=100.0; Slippage=3;
2016.09.06 11:41:35.080 Experto NewBar_jeaa_Rev 2 USDJPY,M1: cargado con éxito


2016.09.06 12:57:08.587 '502630': orden de compra 0.01 USDJPY apertura a mercado sl: 50.000 tp: 50.000 falló [S/L o T/P inválidos]
2016.09.06 12:57:08.268 '502630': orden comprar mercado 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:07.224 '502630': orden comprar 0.01 USDJPY apertura en mercado sl: 50.000 tp: 50.000 falló [S/L o T/P inválido]
2016.09.06 12:56:06.921 '502630': orden comprar mercado 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:04.221 Negociación automática habilitada

 
Jeaa:

Hola mladen... Gracias por tu respuesta...

2016.09.06 11:42:06.700 NewBar_jeaa_Rev 2 USDJPY,M1: Alert: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: Alerta: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: operaciones comerciales no permitidas por la configuración
2016.09.06 11:41:36.396 NewBar_jeaa_Rev 2 USDJPY,M1: inicializado
2016.09.06 11:41:36.385 NewBar_jeaa_Rev 2 USDJPY,M1 inputs: GV_CantidadBarras=3; digits=5; Lots=0.01; StopLoss=100.0; TakeProfit=100.0; Slippage=3;
2016.09.06 11:41:35.080 Expert NewBar_jeaa_Rev 2 USDJPY,M1: cargado con éxito


2016.09.06 12:57:08.587 '502630': orden comprar 0.01 USDJPY apertura en mercado sl: 50.000 tp: 50.000 falló [S/L o T/P inválido]
2016.09.06 12:57:08.268 '502630': orden comprar mercado 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:07.224 '502630': orden de compra 0.01 USDJPY apertura en mercado sl: 50.000 tp: 50.000 falló [S/L o T/P inválidos]
2016.09.06 12:56:06.921 '502630': orden de compra mercado 0.01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:04.221 Trading automático activado

Como puedes ver tu stop loss y take profit están mal

Los estás calculando mal: el stop loss y el take profit se calculan como precio de apertura de la orden +- stop loss y/o take profit (el + o - depende del tipo de las órdenes) pero no como 50 (como en tu caso) sino que sería precio de apertura de la orden +- 50*_Punto (para puntos) o 50*_Punto*MathPow(10,MathMod(_Digits,2)) para la distancia en pips del precio de apertura de la orden

 
mladen:

Como puedes ver tu stop loss y take profit están mal

Estás calculando mal: el stop loss y el take profit se calculan como precio de apertura de la orden +- stop loss y/o take profit (el + o - depende del tipo de órdenes) pero no como 50 (como en tu caso) sino que sería precio de apertura de la orden +- 50*_Punto (para puntos) o 50*_Punto*MathPow(10,MathMod(_Digits,2)) para la distancia en pips del precio de apertura de la orden

Estimado mladen...


Gracias por tu ayuda... He cambiado para:


double SL=NormalizeDouble(Precio - StopLoss*Punto,Dígitos);
double TP=NormalizeDouble(Precio + TakeProfit*Punto,Dígitos);

int ticket=Enviar Orden(Símbolo(),OP_BUY,Lotes,Precio,Deslizamiento,SL,TP, "Jeaa",0,0,Azul);


Y el trabajo properlly.


Saludos cordiales.


Jesús

 
Jeaa:

Estimado mladen...


Gracias por tu ayuda... He cambiado para:


double SL=NormalizeDouble(Precio - StopLoss*Punto,Dígitos);
double TP=NormalizarDoble(Precio + TakeProfit*Punto,Dígitos);

int ticket=Enviar Orden(Símbolo(),OP_BUY,Lotes,Precio,Deslizamiento,SL,TP, "Jeaa",0,0,Azul);


Y funciona correctamente.


Un saludo.


Jesús

Bien. Feliz trading :)
 

Hola chicos,

¿podéis añadir el plazo en el mensaje de alerta en el archivo adjunto por favor?

Muchas gracias :)

Archivos adjuntos:
 

Estimado Mladen,

Disculpas por publicar esta solicitud aquí, ya que no soy consciente del lugar correcto.

¿Es posible añadir una opción de Sólo símbolo actual en el indicador adjunto.

Si pudiera, sería de gran ayuda :)

Saludos.

Sameer

Archivos adjuntos:
 
DRADIS33:

Hola chicos,

¿podéis añadir el plazo en el mensaje de alerta en el archivo adjunto por favor?

Muchas gracias :)

Aquí hay una versión con eso añadido


Archivos adjuntos:
 
sameermehta74:

Estimado Mladen,

Disculpas por publicar esta solicitud aquí, ya que no soy consciente del lugar correcto.

¿Es posible añadir una opción de Sólo símbolo actual en el indicador adjunto.

Si pudiera, sería de gran ayuda :)

Saludos.

Sameer

Tienes una solución muy fácil. Añade esta línea :

      StringReplace(Symbols,"current",_Symbol);

antes de la línea 64, y luego en la lista de símbolos introduce "current" en cualquier lugar de la cadena (sin el ""), y será reemplazado por el símbolo actual. O utilice el adjunto :) ( se aplican las mismas reglas para el símbolo actual: para que se muestre sólo el símbolo actual, introduzca sólo "current" en la lista de símbolos)

Archivos adjuntos:
 
mladen:

Tiene una solución muy fácil. Añade esta línea :

antes de la línea 64, y luego en la lista de símbolos introduzca "actual" en cualquier lugar de la cadena (sin el ""), y será reemplazado por el símbolo actual. O utilice el adjunto :) (se aplican las mismas reglas para el símbolo actual: para que sólo se muestre el símbolo actual, introduzca sólo "current" en la lista de símbolos)

Gracias :) Se agradece mucho.
Razón de la queja: