![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
Estoy buscando una solución para aplicar algoritmos de indicadores en la matriz de precios.
en MQL4 algunos indicadores tienen esta función, como: iCCIOnArray, iBandsOnArray...
Pero los indicadores como el ADX no tienen esta función.
¿Alguien tiene idea de cómo puedo aplicar el cálculo de indicadores sobre una matriz predefinida (no desde el servidor de cotizaciones)?[lang=pl]Si usted sabe cómo se calutaded indicador dado puede hacer todo:)
Por favor, explique con más precisión lo que necesita exactamente![](https://c.mql5.com/forextsd/smiles/smile.png)
Saludos,
Grzesiek[/lang]
...
ADX utiliza lo que se llamarango atrue (Max(High,PreviousClose)-Min(Low,PreviousClose) y esa es la base del cálculo de ADX
Debido a los valores de High, Low y Close requeridos no se puede aplicar a una matriz, En general, si usted ve que hay un precio requerido, entonces el indicador debe ser aplicable a una matriz. Si no hay un parámetro de precio, entonces casi seguro que no se puede aplicar a una matriz (suponiendo que el indicador en primer lugar está operando en los precios)
[lang=pl]Si usted sabe cómo se calutaded indicador dado puede hacer todo:)
Por favor, explique con más precisión lo que necesita exactamente![](https://c.mql5.com/forextsd/smiles/smile.png)
Gracias,
Grzesiek[/lang]Gracias Grzesiek.
Estaba buscando una buena solución. finalmente, la mejor solución, es incrustar el código indi en el código experto.
de todos modos, a menos que alguien me muestre otra manera, lo aplicaré de esta manera.
¿Tiene el archivo fuente? El archivo *.ex4 está compilado, por lo que no tiene acceso al código fuente.
Saludos
solicitar
star821
Pruebe esto
________________________
Algunas explicaciones : No utilicé los que publicaste sino que hice estos (el indicador adjunto en tu post tiene mi nombre, pero esa versión no está hecha por mí, pero esa no es la única razón por la que no utilicé ese indicador). ...
saludos
Mladenhelo Mladen
¿es posible adaptar el stc EA para un HMA color nrp-indi y High-low trend indi?
he escrito un pseudocódigo (* no sé codificar en absoluto...
*):
************************************************************
externos:
Lote#
periodo para el HMA
???.
.....................
repetir:
obtener el color del punto zigzag (cierre de la barra);
obtener el color de la tendencia del HMA (cierre de barra);
----------------------------------------------------------------
// abrir vender
si el último punto-zigzag = azul && la tendencia HMA = roja -> abrir ticket de VENTA (sólo una vez por color de tendencia HMA)
si no se puede abrir la venta-> reintentar 3 veces
si no hay éxito alerta & email: no se pudo abrir la venta para el símbolo,TF, tiempo;
si no
// abrir compra
si el último punto zigzag = rojo && tendencia HMA = azul -> abrir ticket de COMPRA (sólo una vez por color de tendencia HMA)
si no se puede abrir la compra-> reintentar 3 veces
si no hay éxito alerta & email: no se pudo abrir la compra para el símbolo,TF, tiempo;
-------------------------------------------------------------------
si la tendencia HMA ( roja ) cambia a azul -> cerrar vender, esperar 10 seg;
si la tendencia HMA ( azul ) cambia a rojo -> cerrar compra, esperar 10 seg;
-------------------------------------------------------------------
cerrar todas las operaciones el viernes a las 12:00h AM (GMT)...
****************************************************************
se que habra algunas perdidas pero no me molesta...
no quiero ningún SL ...
saludos
Cado
hma_color_nrp.ex4high_-_low_trend.mq4
ATR + MA y ancho de banda + MA
[lang=it]Hola, necesito un indicador personalizado que, en una ventana separada, escriba atr y media móvil calculada en ella y lo mismo para el ancho de banda. He hecho el código en mql4 y he utilizado el IMAONARRAY para calcular la MA, pero el indicador no funciona.
Este es uno de los códigos de teo..
Gracias
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int AtrPeriod=14;
//---- buffers
double AtrBuffer[];
double TempBuffer[];
double MaBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 1 additional buffer used for counting.
IndicatorBuffers(2);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,AtrBuffer);
SetIndexBuffer(1,TempBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,MaBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="ATR("+AtrPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,AtrPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Average True Range |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
//----
if(Bars<=AtrPeriod) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;
//----
i=Bars-counted_bars-1;
while(i>=0)
{
double high=High;
double low =Low;
if(i==Bars-1) TempBuffer=high-low;
else
{
double prevclose=Close;
TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);
}
i--;
}
//----
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
for(i=0; i<limit; i++)
AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
double MyArray[];
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
ArrayResize( MyArray, limit);
ArraySetAsSeries(MyArray,true);
for(i=0; i<limit; i++)
{
MyArray = AtrBuffer;
}
for(i=0; i<limit; i++)
{
MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);
}
//----
return(0);
}
//+------------------------------------------------------------------+[/lang]
...
Pruébalo ahora![](https://c.mql5.com/forextsd/smiles/smile.png)
[lang=it]Hola, necesito un indicador personalizado que, en una ventana separada, escriba atr y calcule la media móvil en ella y lo mismo para el ancho de banda. He hecho el código en mql4 y he utilizado el IMAONARRAY para calcular la MA, pero el indicador no funciona.
Este es uno de los códigos de teo..
Gracias
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int AtrPeriod=14;
//---- buffers
double AtrBuffer[];
double TempBuffer[];
double MaBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 1 additional buffer used for counting.
IndicatorBuffers(2);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,AtrBuffer);
SetIndexBuffer(1,TempBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,MaBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="ATR("+AtrPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,AtrPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Average True Range |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
//----
if(Bars<=AtrPeriod) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;
//----
i=Bars-counted_bars-1;
while(i>=0)
{
double high=High;
double low =Low;
if(i==Bars-1) TempBuffer=high-low;
else
{
double prevclose=Close;
TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);
}
i--;
}
//----
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
for(i=0; i<limit; i++)
AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
double MyArray[];
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
ArrayResize( MyArray, limit);
ArraySetAsSeries(MyArray,true);
for(i=0; i<limit; i++)
{
MyArray = AtrBuffer;
}
for(i=0; i<limit; i++)
{
MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);
}
//----
return(0);
}
//+------------------------------------------------------------------+[lang=tr]Hola, ¿alguien puede ayudarme a construir esta fórmula en el código de Metatrader?
(esto es en metastock fórmula:)
Q1:=Input("PERIOD",1,1000,3);
Q2:=Input("PERIOD",0.001,100,1);
Q3:=Q2/100;
Q4:=Mov( Typical(),Q1,E) ;
Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));
Q5
...
Interesante![](https://c.mql5.com/forextsd/smiles/smile.png)
Lo único que hay que ajustar para diferentes marcos de tiempo es el porcentaje. El 1% parece una buena opción para un gráfico de 4 horas, pero aquí hay un ejemplo de un gráfico de 15 minutos con el 0,5% en lugar del 1% por defecto
PD: No tengo ni idea de cuál es el nombre original, así que lo he llamado como está
saludos
mladen
[lang=tr]Hola, ¿puede alguien ayudarme a construir esta fórmula en el código de Metatrader?
(esto es en metastock fórmula:)
Q1:=Input("PERIOD",1,1000,3);
Q2:=Input("PERIOD",0.001,100,1);
Q3:=Q2/100;
Q4:=Mov( Typical(),Q1,E) ;
Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));
Q5
Interesante
Lo único que hay que ajustar para diferentes marcos de tiempo es el porcentaje. El 1% parece una buena opción para un gráfico de 4 horas, pero aquí hay un ejemplo de un gráfico de 15 minutos con el 0,5% en lugar del 1% por defecto
PD: No tengo ni idea de cuál es el nombre original, así que lo he llamado como está
saludos
mladen[lang=tr]gracias mladen lo probaré, creo que funcionará
[/lang]