launano92
22:08,
Estoy tratando de utilizar el indicador EMA Crossover Signal dentro de un EA y tengo problemas para obtener los valores de él. Estoy usando iCustom () y no importa qué estilo elijo (0 o 1) el indicador simplemente devuelve 2147483647. ¿Alguna idea sobre lo que estoy haciendo mal?
Aquí hay una ilustración de lo que estoy tratando de hacer:
EMA dual = iCustom (NULL, 0, EMA Crossover Signal, 5,13, falso, 0,0);
Impresión (EMA);
Aquí está su código indy:
// ----------------------------------------------- -------------------
//| EMA-Crossover_Signal. Mq4 |
//| Copyright © 2005, Jason Robinson (jnrtrading) |
//|
http://www.jnrtading.co.uk|
//pag----------------------------------------------- -------------------
/*
------------------------------------------------- -----------------
| te permite ingresar dos períodos ema y luego te mostrará |
| Qué punto cruzaron. Es más útil sobre el más corto |
| tramos que se oscurecen por los barescandelabros y cuando |
| el nivel de zoom está afuera. También te permite eliminar el emas |
| en el gráfico. (emas se establecen originalmente en 5 y 6) |
------------------------------------------------- -----------------
*
#property copyright Copyright © 2005, Jason Robinson (jnrtrading)
#property Hyperlink http://www.jnrtrading.co.uk
#property indior_chart_window
#property indior_buffers 2
#property indior_color1 SeaGreen
#property indior_color2 Red
doble CrossUp [];
double CrossDown [];
extern int FasterEMA = 5;
extern int SlowerEMA = 13;
extern bool SoundON = falso;
alerta doble;
doble control = 2147483647;
// ----------------------------------------------- -------------------
//| Función de inicialización del indicador personalizado |
// ----------------------------------------------- -------------------
int init ()
//- indicadores
SetIndexStyle (0, DRAW_ARROW, VACÍO, 3);
SetIndexArrow (0, 233);
SetIndexBuffer (0, CrossUp);
SetIndexStyle (1, DRAW_ARROW, VACÍO, 3);
SetIndexArrow (1, 234);
SetIndexBuffer (1, CrossDown);
//-
return (0);
// ----------------------------------------------- -------------------
//| Función de desinitialización del indicador personalizado |
// ----------------------------------------------- -------------------
int deinit ()
//-
//-
return (0);
// ----------------------------------------------- -------------------
//| Función de iteración del indicador personalizado |
// ----------------------------------------------- -------------------
int start ()
int límite, I, contador;
doble más rápido, ahora, lento, ahora, más rápido, anterior, lento, anterior, más rápido, después, más lento, después;
doble Rango, Promedio de Rango;
int counted_bars = IndiorCounted ();
//- verificar posibles errores
if (counted_barslt; 0) return (-1);
//- la última barra contada será contada
if (counted_barsgt; 0) counted_bars--;
limit = Bars-counted_bars;
para (I = 0; I lt; = limit; I )
contador = I;
Rango = 0;
AvgRange = 0;
for (counter = I; counterlt; = I 9; counter )
AvgRange = AvgRange MathAbs (High [contador] -Low [contador]);
Rango = Promedio de Rango10;
fasterEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, I);
fasterEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, I 1);
fasterEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, I);
slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, I 1);
slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
if ((fasterLINEnowgt; slowerEMAnow) (fasterEMAprevious lt; slowerEMAprevious) (fasterEMAafter gt; slowerEMAafter))
CrossUp [I] = Low [I] - Rango * 0.5;
de lo contrario, si ((fasterEMAnowlt lt; slowerEMAnow) (fasterEMAprevious gt; slowerEMAprevious) (fasterEMAafter lt; slowerEMAafter))
CrossDown [I] = Alto [I] Rango * 0.5;
if (SoundON == verdadero I == 1 CrossUp [I] gt; CrossDown [I] alertTag! = Tiempo [0])
Alerta (EMA Cross Trend bajando, Symbol (), Stage ());
alertTag = Tiempo [0];
if (SoundON == exacto I == 1 CrossUp [I] lt; CrossDown [Id] alertTag! = Tiempo [0])
Alerta (EMA Cross Trend encendido, Symbol (), Stage ());
alertTag = Tiempo [0];
return (0);
Aquí hay una ilustración de lo que estoy tratando de hacer:
EMA dual = iCustom (NULL, 0, EMA Crossover Signal, 5,13, falso, 0,0);
Impresión (EMA);
Aquí está su código indy:
// ----------------------------------------------- -------------------
//| EMA-Crossover_Signal. Mq4 |
//| Copyright © 2005, Jason Robinson (jnrtrading) |
//|
http://www.jnrtading.co.uk|
//pag----------------------------------------------- -------------------
/*
------------------------------------------------- -----------------
| te permite ingresar dos períodos ema y luego te mostrará |
| Qué punto cruzaron. Es más útil sobre el más corto |
| tramos que se oscurecen por los barescandelabros y cuando |
| el nivel de zoom está afuera. También te permite eliminar el emas |
| en el gráfico. (emas se establecen originalmente en 5 y 6) |
------------------------------------------------- -----------------
*
#property copyright Copyright © 2005, Jason Robinson (jnrtrading)
#property Hyperlink http://www.jnrtrading.co.uk
#property indior_chart_window
#property indior_buffers 2
#property indior_color1 SeaGreen
#property indior_color2 Red
doble CrossUp [];
double CrossDown [];
extern int FasterEMA = 5;
extern int SlowerEMA = 13;
extern bool SoundON = falso;
alerta doble;
doble control = 2147483647;
// ----------------------------------------------- -------------------
//| Función de inicialización del indicador personalizado |
// ----------------------------------------------- -------------------
int init ()
//- indicadores
SetIndexStyle (0, DRAW_ARROW, VACÍO, 3);
SetIndexArrow (0, 233);
SetIndexBuffer (0, CrossUp);
SetIndexStyle (1, DRAW_ARROW, VACÍO, 3);
SetIndexArrow (1, 234);
SetIndexBuffer (1, CrossDown);
//-
return (0);
// ----------------------------------------------- -------------------
//| Función de desinitialización del indicador personalizado |
// ----------------------------------------------- -------------------
int deinit ()
//-
//-
return (0);
// ----------------------------------------------- -------------------
//| Función de iteración del indicador personalizado |
// ----------------------------------------------- -------------------
int start ()
int límite, I, contador;
doble más rápido, ahora, lento, ahora, más rápido, anterior, lento, anterior, más rápido, después, más lento, después;
doble Rango, Promedio de Rango;
int counted_bars = IndiorCounted ();
//- verificar posibles errores
if (counted_barslt; 0) return (-1);
//- la última barra contada será contada
if (counted_barsgt; 0) counted_bars--;
limit = Bars-counted_bars;
para (I = 0; I lt; = limit; I )
contador = I;
Rango = 0;
AvgRange = 0;
for (counter = I; counterlt; = I 9; counter )
AvgRange = AvgRange MathAbs (High [contador] -Low [contador]);
Rango = Promedio de Rango10;
fasterEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, I);
fasterEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, I 1);
fasterEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, I);
slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, I 1);
slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
if ((fasterLINEnowgt; slowerEMAnow) (fasterEMAprevious lt; slowerEMAprevious) (fasterEMAafter gt; slowerEMAafter))
CrossUp [I] = Low [I] - Rango * 0.5;
de lo contrario, si ((fasterEMAnowlt lt; slowerEMAnow) (fasterEMAprevious gt; slowerEMAprevious) (fasterEMAafter lt; slowerEMAafter))
CrossDown [I] = Alto [I] Rango * 0.5;
if (SoundON == verdadero I == 1 CrossUp [I] gt; CrossDown [I] alertTag! = Tiempo [0])
Alerta (EMA Cross Trend bajando, Symbol (), Stage ());
alertTag = Tiempo [0];
if (SoundON == exacto I == 1 CrossUp [I] lt; CrossDown [Id] alertTag! = Tiempo [0])
Alerta (EMA Cross Trend encendido, Symbol (), Stage ());
alertTag = Tiempo [0];
return (0);