Página 1 de 1
Busco alma caritativa que me cree dos buffers
Publicado: 24 Jun 2020 13:13
por landorra
Me gustaría abusar de la generosidad de los foreros presentes para suplicar una (espero) pequeña ayuda en el indicador que anexo en este hilo. Ya adelanto que está en ruso.
Lo que hace es dibujar dos líneas similares a lo que hace el Envelopes, però usando fibos. La línea superior se llama Band UP, y la inferior Band LO. Me gustaría que alguien pudiese crear un par de buffers con los que poder capturar esos valores, ya que los necesito para un EA que estoy planteando.
Espro que quien tenga a bien aceptar mi ayuda reciba en la vida 1000 veces la gratitud que yo le daré.

Re: Busco alma caritativa que me cree dos buffers
Publicado: 24 Jun 2020 17:33
por sfriendsm2
Hola landorra,
la verdad es que no hay nada que hacer, ya que los buffers ya están creados, este es el código donde se crean:
SetIndexBuffer(1,upBuffer); SetIndexStyle(1,BNT); //SetIndexDrawBegin(1,HalfLength);
SetIndexBuffer(2,dnBuffer); SetIndexStyle(2,BNT); //SetIndexDrawBegin(2,HalfLength);
Lo que tienes que hacer para acceder a ellos es seleccionar la salida 1 y 2 de dicho indicador, cuando lo llames desde el EA.
Sl2 y suerte.
Re: Busco alma caritativa que me cree dos buffers
Publicado: 25 Jun 2020 02:17
por Karachiento
Creo que landorra no se refiere a crearlos, si no a extraer los valores de esos buffers. Yo no uso mql4 y no tengo instalado el editor (desconozco si sirve el mismo que para mql5). Para extraer los valores de estos buffers puedes usar la función iCustom()
https://docs.mql4.com/indicators/icustom
Saludos
Re: Busco alma caritativa que me cree dos buffers
Publicado: 25 Jun 2020 07:34
por landorra
Karachiento escribió: 25 Jun 2020 02:17
Creo que landorra no se refiere a crearlos, si no a extraer los valores de esos buffers. Yo no uso mql4 y no tengo instalado el editor (desconozco si sirve el mismo que para mql5). Para extraer los valores de estos buffers puedes usar la función iCustom()
https://docs.mql4.com/indicators/icustom
Saludos
Exactamente. A eso mismo me refiero. Se nota que no soy programador, ja, ja.

¿Y te importaría explicarme cómo debería añadir esa función y dónde hacerlo, por favor? Lo cierto es que sólo sé abrir archivos con el metaeditor, pero tocarlos es otra historia.

Re: Busco alma caritativa que me cree dos buffers
Publicado: 25 Jun 2020 09:59
por Karachiento
A la función la usas en tu ea, no necesitas modificar nada en el indicador. solo necesitas tener claro cuantos inputs necesita, cuantos buffers tiene y cual es cada uno.
En el ejemplo de la documentacion de mql4:
double val=iCustom(NULL,0,"SampleInd",13,1,0);
donde:
val: variable que contendrá el valor del buffer del indicador
NULL: si se trata del mismo símbolo del gráfico donde esta activo el ea
0: si el timeframe es el mismo que el gráfico donde esta activo el ea
"SampleInd": Nombre (o path si esta es otro directorio) del indicador que debe estar compilado y ubicado en terminal_directory\MQL4\Indicators\ directory.
13: es un parámetro input del indicador (por ejemplo, el periodo de una media móvil). si tiene 1 solo, se pondrá solo 1 valor. si el indicador tiene 3 inputs por ejemplo, van 3 valores (input1, input2, input3,)
1: es el indice el buffer del indicador que quieres copiar. si el indicador tiene un solo buffer va 0, si tiene mas, le especificas cual quieres (si hay dos buffers, especificas si quieres el 0 o el 1)
0: pides el valor del indicador para la vela actual. si quieres otro valor modificas ese numero
no te lo escribo por que la sintaxis en mql4 es distinta a mql5 y no la conozco.
espero haberte ayudado. saludos!
Re: Busco alma caritativa que me cree dos buffers
Publicado: 25 Jun 2020 11:46
por X-Trader
Hola Landorra, revisando tu indicador veo que en realidad tiene 7 buffers, que son los siguientes:
double tmBuffer[], upBuffer[], dnBuffer[];
double clrSEL[], clrBUY[]; double arrSEL[], arrBUY[];
double wuBuffer[], wdBuffer[], FLAG[];
Los dos buffers que te interesan son upBuffer[] y dnBuffer[], que ocupan
¿Cómo puedes llamarlos desde un EA? Fácil, usa esta sintaxis:
double UpBand = iCustom(NULL, 0, "tma-cg-mtf-indicator", 0, 24, 6, 1.618, FALSE, FALSE, 3, 2, 3, 0, 16776960, 55295, 3, 233, 234, 1, FALSE, 1, TRUE, TRUE, FALSE, FALSE, "alert2.wav", 1, 0);
double LowBand = iCustom(NULL, 0, "tma-cg-mtf-indicator", 0, 24, 6, 1.618, FALSE, FALSE, 3, 2, 3, 0, 16776960, 55295, 3, 233, 234, 1, FALSE, 1, TRUE, TRUE, FALSE, FALSE, "alert2.wav", 2, 0);
En la estructura anterior observa que:
- NULL representa el símbolo actual.
- 0 representa el timeframe actual
- El siguiente argumento es el nombre del indicador entre comillas (en azul)
- Lo que va después en verde es una lista con todos los parámetros del indicador.
- El parámetro que va en rojo hace referencia al nº de buffer al que quieres acceder dentro del indicador. Observa que upBuffer es el segundo buffer (por tanto, el 1 ya que empieza la numeración en 0), y dnBuffer es el tercero (por tanto, 2).
- Por último, el cero del final indica el shift del indicador (por defecto 0 para coger el último valor salvo que quieras tomar un valor retrasado)
Échale un ojo y pruébalo, a ver si te funciona.
Saludos,
X-Trader
Re: Busco alma caritativa que me cree dos buffers
Publicado: 26 Jun 2020 07:41
por landorra
Genial. Gracias a ambos por vuestra ayuda.

Re: Busco alma caritativa que me cree dos buffers
Publicado: 26 Jun 2020 10:46
por X-Trader
Al hilo de esto, estuve analizando el indicador y por desgracia repinta (ie, aunque la flecha la dibuja en una determinada vela, realmente la pinta unas velas después por lo que tu punto de entrada siempre es más tarde y generalmente a un precio peor del que aparentemente sería.
La buena noticia es que hay una versión que no repinta (aunque a cambio da muchas señales falsas) y también un EA basado en el indicador, los subo adjuntos a este mensaje.
Saludos,
X-Trader