¿Cómo codificar? - página 282

 
gilben:
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

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)

 
g.pociejewski:
[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

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

mladen:
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

Mladen

helo 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

Archivos adjuntos:
 

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_separate_window

#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

k3rn3l:
[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_separate_window

#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]
Archivos adjuntos:
atr__ma.mq4  2 kb
 

[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

[/lang]

 

...

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

cedid:
[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

[/lang]
Archivos adjuntos:
levels.gif  22 kb
 
mladen:
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]