indicador tamaño exacto de pips cuerpo vela alert push

Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

Buenas, alguien por aquí tiene algún indicador que te avise una alerta push sobre un tamaño exacto de una vela y lo indique en el grafico a velas pasadas en el Timeframe que se esté viendo al cerrar esa vela ?
Por ejemplo una vela en H1 que quiero que me avise si cierra y el cuerpo de la vela sin mechas mida 6 pips por ejejmplo. y todas las velas que hayan medido exactamente 6 pips al cerrar se muestren con una flecha y hayan enviado una alerta cuando sucedió.

o bien un indicasdor que avise cuando haya velas que cierren como máximo 6 pips al cerrar la vela y que alerte de manera push a la app de mql5 , vamos alerta al movil , creo que se llama así " push ". creo.

Bueno pues un saludito a todos y espero que lo estéis pasando bien en éste mundo tan bonito del trading.
Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

Este indicador avisa cuando la vela ha cerrado en 4 pips :
int start()
{
int limit = MathMin(50000, Bars - 1); // obtener las últimas 50000 velas o menos si no hay suficientes velas
double pointSize = Point * MarketInfo(Symbol(), MODE_POINT); // obtener el tamaño de pip para el símbolo actual
for (int i = limit; i >= 0; i--)
{
double openPrice = iOpen(Symbol(), Period(), i);
double closePrice = iClose(Symbol(), Period(), i);
double candleSize = MathAbs(closePrice - openPrice) / pointSize;
if (candleSize < 4)
{
ObjectCreate("arrow" + IntegerToString(i), OBJ_ARROW, 0, Time, Low - 10 * pointSize);
}
}
return 0;
}
Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

PERO HABRIA QUE REVISAR EL CODIGO FUENTE PORQUE NO LLEGA A FUCNIONAR
Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

extern int pips = 3;

double prevClose;

double spread;
int start()
{
double currentClose = iClose(NULL, PERIOD_CURRENT, 0);
double priceDifference = MathAbs(currentClose - prevClose);
double pipsDifference = priceDifference / Point;

if(pipsDifference >= pips)
{
Alert("La vela actual se ha cerrado con una diferencia de ", pipsDifference, " pips.");
}

prevClose = currentClose;

return 0;
}
Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

Que tal foro, oye podríais hacer que éste codigo funcionara ? es simplemente que salte una alerte cuando el cuerpo de la vela cierre al cerrar la vela con unos determinados pips , por ejemplo 10 pips , y que todas las velas de 10 pips de cuerpo ( no mechas ) al cerrar envíen un mensaje de push al movil por ejemplo . un saludo y gracias .

Avatar de Usuario
X-Trader
Administrador
Mensajes: 12791
Registrado: 06 Sep 2004 10:18
Contactar:

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por X-Trader »

Perdona Eugeniotrading, tengo bastante lío estos días, te lo miro esta semana sin falta.

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
sfriendsm2
Mensajes: 36
Registrado: 24 Jun 2020 17:20

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por sfriendsm2 »

Esto funciona, al menos en MT4.

Parámetros:

pipos ==> Cuánta distancia quieres detectar entre apertura y cierre, medida en pipos
separacionPiposDibujo ==> Cuánta distancia quieres dejar entre las velas y el indicador
avisarTambienMayores ==> Si se activa, muestra todas las velas mayores de ese tamaño. Si se desactiva, sólo las de ese tamaño
mensajePush ==> Si se activa, envía mensaje push al móvil para las nuevas velas que se vayan detectando
alerta ==> Si se activa, muestra una alerta en la plataforma, para las nuevas velas que se vayan detectando
maxBars ==> Máximo de barras a calcular al cargar el indicador

Desde aquí, si deseas modificar algo, ya si deberías ser capaz de hacerlo tú mismo.

Si quieres cambiar el código de flecha al que tú quieras, puedes usar el número que corresponde con el que desees. La correspondencia la tienes aquí: https://docs.mql4.com/constants/objectc ... /wingdings

Sl2.
Adjuntos
arrowPips.mq4
(6.44 KiB) Descargado 41 veces
arrowPips.ex4
(9.9 KiB) Descargado 41 veces
sfriendsm2
Mensajes: 36
Registrado: 24 Jun 2020 17:20

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por sfriendsm2 »

sfriendsm2 escribió: 18 Abr 2023 19:23 Esto funciona, al menos en MT4.

Parámetros:

pipos ==> Cuánta distancia quieres detectar entre apertura y cierre, medida en pipos
separacionPiposDibujo ==> Cuánta distancia quieres dejar entre las velas y el indicador
avisarTambienMayores ==> Si se activa, muestra todas las velas mayores de ese tamaño. Si se desactiva, sólo las de ese tamaño
mensajePush ==> Si se activa, envía mensaje push al móvil para las nuevas velas que se vayan detectando
alerta ==> Si se activa, muestra una alerta en la plataforma, para las nuevas velas que se vayan detectando
maxBars ==> Máximo de barras a calcular al cargar el indicador

Desde aquí, si deseas modificar algo, ya si deberías ser capaz de hacerlo tú mismo.

Si quieres cambiar el código de flecha al que tú quieras, puedes usar el número que corresponde con el que desees. La correspondencia la tienes aquí: https://docs.mql4.com/constants/objectc ... /wingdings

Sl2.
Sin poder probarlo, porque no tengo cuenta en MQL5, lo he adaptado y compilado para MT5. Espero que funcione. Le he añadido el código de flecha como parámetro de entrada.

El código sería:
#property copyright "pruebas"
#property link      "pruebas"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
#property indicator_width1 1

#define  __OBJ_NAME__   "_arrow_"

//--- input parameters
input int   pipos=6;
input int   separacionPiposDibujo=10;
input bool  avisarTambienMayores=true;   
input bool  mensajePush=true;
input bool  alerta=true;
input int   maxBars=5000;
input int   codigoFlecha=254;

double indicatorValue[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, indicatorValue);
   PlotIndexSetInteger(0,PLOT_ARROW,codigoFlecha);
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ARROW); 
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   IndicatorSetString(INDICATOR_LEVELTEXT,0,StringFormat("Detectar %d pipos",pipos));
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int limit = MathMin(maxBars, rates_total-prev_calculated); // obtener las últimas 50000 velas o menos si no hay suficientes velas
   
   if (prev_calculated==0)
      limit--;
      
   double pointSize = Point();               // obtener el tamaño de pip para el símbolo actual

   for (int i = limit; i > 0; i--)
   {
      double openPrice = open;
      double closePrice = close;
      double low = low;
      int candleSize = MathAbs(closePrice - openPrice) / pointSize;
      
      indicatorValue=EMPTY_VALUE;
      
      if (candleSize > pipos && avisarTambienMayores)
         indicatorValue=low - separacionPiposDibujo * pointSize;
      else if (candleSize == pipos)
         indicatorValue=low - separacionPiposDibujo * pointSize;
   }

   if (limit>0 && prev_calculated!=0 && indicatorValue[1]!=EMPTY_VALUE)
   {
      string msg= StringFormat("Se ha detectado una vela de %d pips en %s",MathAbs(close[1] - open[1]) / pointSize,Symbol());
      
      if (alerta)
         Alert(msg);
      else if (mensajePush)
         SendNotification(msg);
   }

   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Adjuntos
arrowPips.mq5
(6.67 KiB) Descargado 40 veces
arrowPips.ex5
(8.88 KiB) Descargado 35 veces
Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

Hola que tal? Oye muchisimas gracias , voy a probarlo .

Ya me había puesto triste porque nadie me contestaba , pues de verdad que mchas gracias.
A ver si lo hago funcionar.
Un saludo
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12791
Registrado: 06 Sep 2004 10:18
Contactar:

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por X-Trader »

Eugeniotrading escribió: 20 Abr 2023 01:42 Hola que tal? Oye muchisimas gracias , voy a probarlo .

Ya me había puesto triste porque nadie me contestaba , pues de verdad que mchas gracias.
A ver si lo hago funcionar.
Un saludo
Jeje no te pongas triste Eugeniotrading, en X-Trader.net antes o después siempre hay respuesta 8).


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12791
Registrado: 06 Sep 2004 10:18
Contactar:

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por X-Trader »

sfriendsm2 escribió: 18 Abr 2023 19:42 Sin poder probarlo, porque no tengo cuenta en MQL5, lo he adaptado y compilado para MT5. Espero que funcione. Le he añadido el código de flecha como parámetro de entrada.

El código sería:
#property copyright "pruebas"
#property link      "pruebas"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
#property indicator_width1 1

#define  __OBJ_NAME__   "_arrow_"

//--- input parameters
input int   pipos=6;
input int   separacionPiposDibujo=10;
input bool  avisarTambienMayores=true;   
input bool  mensajePush=true;
input bool  alerta=true;
input int   maxBars=5000;
input int   codigoFlecha=254;

double indicatorValue[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, indicatorValue);
   PlotIndexSetInteger(0,PLOT_ARROW,codigoFlecha);
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ARROW); 
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   IndicatorSetString(INDICATOR_LEVELTEXT,0,StringFormat("Detectar %d pipos",pipos));
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int limit = MathMin(maxBars, rates_total-prev_calculated); // obtener las últimas 50000 velas o menos si no hay suficientes velas
   
   if (prev_calculated==0)
      limit--;
      
   double pointSize = Point();               // obtener el tamaño de pip para el símbolo actual

   for (int i = limit; i > 0; i--)
   {
      double openPrice = open;
      double closePrice = close;
      double low = low;
      int candleSize = MathAbs(closePrice - openPrice) / pointSize;
      
      indicatorValue=EMPTY_VALUE;
      
      if (candleSize > pipos && avisarTambienMayores)
         indicatorValue=low - separacionPiposDibujo * pointSize;
      else if (candleSize == pipos)
         indicatorValue=low - separacionPiposDibujo * pointSize;
   }

   if (limit>0 && prev_calculated!=0 && indicatorValue[1]!=EMPTY_VALUE)
   {
      string msg= StringFormat("Se ha detectado una vela de %d pips en %s",MathAbs(close[1] - open[1]) / pointSize,Symbol());
      
      if (alerta)
         Alert(msg);
      else if (mensajePush)
         SendNotification(msg);
   }

   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Hola sfriendsm2, ante todo mil gracias por tus aportes.

He revisado la versión para MT5 y aparentemente no es correcta, hay que usar las funciones CopyClose, CopyOpen, CopyHigh y CopyLow para obtener los correspondientes valores (no funciona como la cosa en MQL4), a ver si logro corregirlo para que funcione igual que en MT4.


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

El indicador en MT4 que era el que yo necesitaba funciona e indica todos los pips correctamente , lo que le indicas lo marca en el gráfico , está genial . PERO NO funcionan las alertas, he revisado el codigo y yo reo que está todo bien , algo se me pasa .
A ver si alguién puede echarle un vistazo y modificar alguna com o algo debe de ser por que no salta el aviso al movil , sí salta la indicación en el gráfico correctamente.
Muchas gracias !!!!
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12791
Registrado: 06 Sep 2004 10:18
Contactar:

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por X-Trader »

Ahí te puedo echar un cable: ¿has configurado tu MT4 móvil y tu plataforma de escritorio para que te lance las alertas? Si no, mira este artículo:

https://www.x-trader.net/notificaciones-push-en-mt4/


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Eugeniotrading
Mensajes: 52
Registrado: 01 Jul 2019 15:48

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por Eugeniotrading »

Si si, de hecho recibo ya otras alertas rsi etc.. y he probado en uno limpio en otro mt4, por si hiciera conflicto o algo, que me paso una vez y desde entonces me creo que pueda pasar esas cosas.
Además tengo un indicador de cuerpo de vela, que me muestra los pips encima de la vela y si pongo 4 pips , tanto éste como el indicador de pips salen correctamente , pero al cierre de vela éste no me manda nada.
Ummm... Algo del codigo es pero no veo el error . Tampoco controlo mucho , juego a ver comparaciones entre otros etc.. a ver si veo algo raro .
sfriendsm2
Mensajes: 36
Registrado: 24 Jun 2020 17:20

Re: indicador tamaño exacto de pips cuerpo vela alert push

Mensaje por sfriendsm2 »

X-Trader escribió: 20 Abr 2023 09:08
sfriendsm2 escribió: 18 Abr 2023 19:42 Sin poder probarlo, porque no tengo cuenta en MQL5, lo he adaptado y compilado para MT5. Espero que funcione. Le he añadido el código de flecha como parámetro de entrada.

El código sería:
#property copyright "pruebas"
#property link "pruebas"
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
#property indicator_width1 1

#define __OBJ_NAME__ "_arrow_"

//--- input parameters
input int pipos=6;
input int separacionPiposDibujo=10;
input bool avisarTambienMayores=true; 
input bool mensajePush=true;
input bool alerta=true;
input int maxBars=5000;
input int codigoFlecha=254;

double indicatorValue[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
 {
//--- indicator buffers mapping
 SetIndexBuffer(0, indicatorValue);
 PlotIndexSetInteger(0,PLOT_ARROW,codigoFlecha);
 PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ARROW); 
 PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
 IndicatorSetString(INDICATOR_LEVELTEXT,0,StringFormat("Detectar %d pipos",pipos));
//---
 return(INIT_SUCCEEDED);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
 const int prev_calculated,
 const datetime &time[],
 const double &open[],
 const double &high[],
 const double &low[],
 const double &close[],
 const long &tick_volume[],
 const long &volume[],
 const int &spread[])
 {
//---
 int limit = MathMin(maxBars, rates_total-prev_calculated); // obtener las últimas 50000 velas o menos si no hay suficientes velas
 
 if (prev_calculated==0)
 limit--;
 
 double pointSize = Point(); // obtener el tamaño de pip para el símbolo actual

 for (int i = limit; i > 0; i--)
 {
 double openPrice = open;
 double closePrice = close;
 double low = low;
 int candleSize = MathAbs(closePrice - openPrice) / pointSize;
 
 indicatorValue=EMPTY_VALUE;
 
 if (candleSize > pipos && avisarTambienMayores)
 indicatorValue=low - separacionPiposDibujo * pointSize;
 else if (candleSize == pipos)
 indicatorValue=low - separacionPiposDibujo * pointSize;
 }

 if (limit>0 && prev_calculated!=0 && indicatorValue[1]!=EMPTY_VALUE)
 {
 string msg= StringFormat("Se ha detectado una vela de %d pips en %s",MathAbs(close[1] - open[1]) / pointSize,Symbol());
 
 if (alerta)
 Alert(msg);
 else if (mensajePush)
 SendNotification(msg);
 }

 
//--- return value of prev_calculated for next call
 return(rates_total);
 }
//+------------------------------------------------------------------+




Hola sfriendsm2, ante todo mil gracias por tus aportes.

He revisado la versión para MT5 y aparentemente no es correcta, hay que usar las funciones CopyClose, CopyOpen, CopyHigh y CopyLow para obtener los correspondientes valores (no funciona como la cosa en MQL4), a ver si logro corregirlo para que funcione igual que en MT4.


Saludos,
X-Trader


Pues menos mal que lo revisas. La verdad es que para MT5 no hago absolutamente nada de código, sólo lo hice compilar :)

Eugeniotrading escribió: 20 Abr 2023 13:06 Si si, de hecho recibo ya otras alertas rsi etc.. y he probado en uno limpio en otro mt4, por si hiciera conflicto o algo, que me paso una vez y desde entonces me creo que pueda pasar esas cosas.
Además tengo un indicador de cuerpo de vela, que me muestra los pips encima de la vela y si pongo 4 pips , tanto éste como el indicador de pips salen correctamente , pero al cierre de vela éste no me manda nada.
Ummm... Algo del codigo es pero no veo el error . Tampoco controlo mucho , juego a ver comparaciones entre otros etc.. a ver si veo algo raro .


He realizado un pequeño cambio para que se generase bien el número de pips en el mensaje que envía y corregir un par de warnings que salían al compilar, pero nada que afecte al funcionamiento en sí del envío de mensajes.

Lo he probado en mi teléfono y funciona sin problemas. Sólo se me ocurre que compruebes si tu firewall o algo así está entorpeciendo las comunicaciones. Si genera una alerta (con alerta activada), en las mismas condiciones envía un push (con mensajePush activado). Asegúrate muy bien de seguir los pasos para conectar el MT4 de escritorio con el del móvil, activando la casilla de "permitir notificaciones push"

Adjunto el código final.
Adjuntos
arrowPips.mq4
(6.48 KiB) Descargado 32 veces
arrowPips.ex4
(9.03 KiB) Descargado 29 veces
Última edición por sfriendsm2 el 20 Abr 2023 19:55, editado 1 vez en total.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Indicadores”