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
Hola,
Necesito un indicador sólo para colocar una etiqueta de texto fijo en un gráfico.
Pueden mostrarme un modelo.
Gracias.
Jo
Hola,
Necesito un indicador sólo para colocar una etiqueta de texto fija en un gráfico.
Me pueden mostrar un modelo.
Gracias.
JoJo
¿Has mirado este hilo : https://www.mql5.com/en/forum/179041
Jo ¿Has mirado este hilo : https://www.mql5.com/en/forum/179041
Mladen,
En el hilo, he encontrado un post que llevar a "TRO_MyNotes" que es exactamente lo que necesito.
Una vez más, Mladen, muchas gracias por tu ayuda.
Jo
Me preguntaba si alguien puede ayudar con esto (post #4739) ?
Gracias.
No sé si lo que pido es posible, pero, en relación con el indicador adjunto, ¿es posible hacer que la línea amarilla que aparece en el canal sea "verdadera"?
Con esto quiero decir que la línea amarilla no se suavizará/recalculará.
Gracias.godrich
No puede
Es un filtro Hodrick/Prescott, su naturaleza es recalcular. Se han hecho intentos de hacerlo (hacerlo puntiagudo, por ejemplo), pero los resultados son cualquier cosa menos similares al original
Hola,
estoy intentando crear el indicador de velas MTF de ma redondeado con la función icustom. Sin éxito, no hay errores en absoluto pero el indicador adjunto no muestra nada. Por favor, ayuda. Gracias.
El código fuente del indicador es este:
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0; // Time frame to use
extern int Length=8;
extern int Method=0; // 0 - SMA
// 1 - EMA
// 2 - SMMA
// 3 - LWMA
extern double Round=2;
extern int Price=0; // Applied price
// 0 - Close
// 1 - Open
// 2 - High
// 3 - Low
// 4 - Median
// 5 - Typical
// 6 - Weighted
extern int BarsToCalculate = 0;
double MAR[],MARda[],MARdb[],slope[] ;
double MA[], MovAle[];
double MaRo;
string indicatorFileName;
bool returnBars;
int init()
{
IndicatorShortName("Rounded ma MTF");
IndicatorBuffers(6);
SetIndexBuffer(0,MAR);
SetIndexBuffer(1,MARda);
SetIndexBuffer(2,MARdb);
SetIndexBuffer(3,MA);
SetIndexBuffer(4,MovAle);
SetIndexBuffer(5,slope);
indicatorFileName = WindowExpertName();
returnBars = timeFrame==-999; if (returnBars) return(0);
if (timeFrame==0) timeFrame= Period();
MaRo=Round*Point;
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { MAR[0] = MathMin(limit+1,Bars-1); return(0); }
if (timeFrame!=Period())
{
limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,-999,0,0)*timeFrame/Period()));
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for (int i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time);
MAR = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,0,y);
slope = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,5,y);
MARda = EMPTY_VALUE;
MARdb = EMPTY_VALUE;
if (slope == -1) PlotPoint(i,MARda,MARdb,MAR);
}
return(0);
}
//
//
//
//
//
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for(int pos=limit; pos>=0; pos--)
{
MA[pos]=iMA(NULL, 0, Length, 0, Method, Price, pos);
if (MA[pos]>MA[pos+1]+MaRo || MA[pos]MAR[pos+1]+MaRo || MA[pos]MAR[pos+1] && MovAle[pos+1]==1.) || (MA[pos]<MAR[pos+1] && MovAle[pos+1]==-1.))
MAR[pos]=MA[pos];
else MAR[pos]=MAR[pos+1];
if (MAR[pos]<MAR[pos+1])
MovAle[pos]=-1.;
else
if (MAR[pos]>MAR[pos+1])
MovAle[pos]=1.;
else MovAle[pos]=MovAle[pos+1];
MARda[pos] = EMPTY_VALUE;
MARdb[pos] = EMPTY_VALUE;
slope[pos] = slope[pos+1];
if (MAR[pos]>MAR[pos+1]) slope[pos] = 1;
if (MAR[pos]<MAR[pos+1]) slope[pos] = -1;
if (slope[pos]==-1) PlotPoint(pos,MARda,MARdb,MAR);
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
void ClearPoint(int i,double& first[],double& second[])
{
if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))
second = EMPTY_VALUE;
else
if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))
first = EMPTY_VALUE;
}
//
//
//
//
//
void PlotPoint(int i,double& first[],double& second[],double& from[])
{
if (first == EMPTY_VALUE)
{
if (first == EMPTY_VALUE) {
first = from;
first = from;
second = EMPTY_VALUE;
}
else {
second = from;
second = from;
first = EMPTY_VALUE;
}
}
else
{
first = from;
second = EMPTY_VALUE;
}
}[/CODE]
and this is my indicator code:
[CODE]//+------------------------------------------------------------------+
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0;
extern int Length = 8;
extern int Method = 0;
extern double Round = 2;
extern int Price = 0;
extern int BarsToCalculate = 0;
extern color WickUpColor = DarkGreen;
extern color WickDnColor = FireBrick;
extern color BodyUpColor = LimeGreen;
extern color BodyDnColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickUpColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickDnColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyUpColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyDnColor);
IndicatorShortName("Rounded ma MTF candles ("+timeFrame+","+Length+","+Round+")");
Length = MathMax(Length,1);
switch(timeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("Rounded ma MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(MathMax(Bars-counted_bars,3*timeFrame/Period()),Bars-1);
for(int i=limit;i>=0;i--)
{
int y = iBarShift(NULL,timeFrame,Time);
int slope=iCustom(Symbol(),timeFrame,"Rounded ma MTF",Length,Method,Round,Price,BarsToCalculate,5,y);
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+
Hola,
Estoy tratando de crear el indicador de velas redondeadas ma MTF con la función icustom. Sin éxito, no hay errores en absoluto pero el indicador adjunto no muestra nada. Por favor, ayuda. Gracias.
El código fuente del indicador es este:
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0; // Time frame to use
extern int Length=8;
extern int Method=0; // 0 - SMA
// 1 - EMA
// 2 - SMMA
// 3 - LWMA
extern double Round=2;
extern int Price=0; // Applied price
// 0 - Close
// 1 - Open
// 2 - High
// 3 - Low
// 4 - Median
// 5 - Typical
// 6 - Weighted
extern int BarsToCalculate = 0;
double MAR[],MARda[],MARdb[],slope[] ;
double MA[], MovAle[];
double MaRo;
string indicatorFileName;
bool returnBars;
int init()
{
IndicatorShortName("Rounded ma MTF");
IndicatorBuffers(6);
SetIndexBuffer(0,MAR);
SetIndexBuffer(1,MARda);
SetIndexBuffer(2,MARdb);
SetIndexBuffer(3,MA);
SetIndexBuffer(4,MovAle);
SetIndexBuffer(5,slope);
indicatorFileName = WindowExpertName();
returnBars = timeFrame==-999; if (returnBars) return(0);
if (timeFrame==0) timeFrame= Period();
MaRo=Round*Point;
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { MAR[0] = MathMin(limit+1,Bars-1); return(0); }
if (timeFrame!=Period())
{
limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,-999,0,0)*timeFrame/Period()));
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for (int i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time);
MAR = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,0,y);
slope = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,5,y);
MARda = EMPTY_VALUE;
MARdb = EMPTY_VALUE;
if (slope == -1) PlotPoint(i,MARda,MARdb,MAR);
}
return(0);
}
//
//
//
//
//
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for(int pos=limit; pos>=0; pos--)
{
MA[pos]=iMA(NULL, 0, Length, 0, Method, Price, pos);
if (MA[pos]>MA[pos+1]+MaRo || MA[pos]MAR[pos+1]+MaRo || MA[pos]MAR[pos+1] && MovAle[pos+1]==1.) || (MA[pos]<MAR[pos+1] && MovAle[pos+1]==-1.))
MAR[pos]=MA[pos];
else MAR[pos]=MAR[pos+1];
if (MAR[pos]<MAR[pos+1])
MovAle[pos]=-1.;
else
if (MAR[pos]>MAR[pos+1])
MovAle[pos]=1.;
else MovAle[pos]=MovAle[pos+1];
MARda[pos] = EMPTY_VALUE;
MARdb[pos] = EMPTY_VALUE;
slope[pos] = slope[pos+1];
if (MAR[pos]>MAR[pos+1]) slope[pos] = 1;
if (MAR[pos]<MAR[pos+1]) slope[pos] = -1;
if (slope[pos]==-1) PlotPoint(pos,MARda,MARdb,MAR);
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
void ClearPoint(int i,double& first[],double& second[])
{
if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))
second = EMPTY_VALUE;
else
if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))
first = EMPTY_VALUE;
}
//
//
//
//
//
void PlotPoint(int i,double& first[],double& second[],double& from[])
{
if (first == EMPTY_VALUE)
{
if (first == EMPTY_VALUE) {
first = from;
first = from;
second = EMPTY_VALUE;
}
else {
second = from;
second = from;
first = EMPTY_VALUE;
}
}
else
{
first = from;
second = EMPTY_VALUE;
}
}[/CODE]
and this is my indicator code:
[CODE]//+------------------------------------------------------------------+
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0;
extern int Length = 8;
extern int Method = 0;
extern double Round = 2;
extern int Price = 0;
extern int BarsToCalculate = 0;
extern color WickUpColor = DarkGreen;
extern color WickDnColor = FireBrick;
extern color BodyUpColor = LimeGreen;
extern color BodyDnColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickUpColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickDnColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyUpColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyDnColor);
IndicatorShortName("Rounded ma MTF candles ("+timeFrame+","+Length+","+Round+")");
Length = MathMax(Length,1);
switch(timeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("Rounded ma MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(MathMax(Bars-counted_bars,3*timeFrame/Period()),Bars-1);
for(int i=limit;i>=0;i--)
{
int y = iBarShift(NULL,timeFrame,Time);
int slope=iCustom(Symbol(),timeFrame,"Rounded ma MTF",Length,Method,Round,Price,BarsToCalculate,5,y);
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+
Reemplazar
slope=iCustom(Symbol(),timeFrame, "Rounded ma MTF",Length,Method,Round,Price,BarsToCalculate,5,y);
con
slope=iCustom(Symbol(),timeFrame, "Rounded ma MTF",0,Length,Method,Round,Price,BarsToCalculate,5,y);
Esto es lo que obtengo cuando coloco zup 150 con el indicador gann sq9 mxi nmc en el mismo gráfico :
gran gracias, puede ser mi error, yo también tengo la versión de Poruchik,
sinceramente
gran gracias, puede ser mi error, también tengo la versión de Poruchik, sinceramente
Háganos saber lo que pasó
Tal vez sólo un problema de una construcción específica metatrader (Yo uso la construcción 788 actualmente)
Como usted sabe, ZigZag puede y va a repintar
El uso de alertas (popups) como señal en un indicador de recálculo es una cosa muy peligrosa y esa es la razón por la que hace mucho tiempo decidí no hacerlas - en lo que a mí respecta es mejor no hacer alertas en tal indicador, que tener que explicar más tarde, a las personas que no están familiarizadas con las razones por las que se añaden algunas alertas, por qué se dan señales en un indicador de recálculo
saludosGracias señor. Aprecio su respuesta