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, he adjuntado un indicador en mq4 que alerta cuando el cci<-150
Alerta en base al tick, ¿alguien puede modificarlo para que solo alerte al cierre de la vela?
En este caso solo me gustaría que me alertara cuando el cci es < -150 al final de una vela de 5m
Gracias de antemano
ok, segunda pregunta, creo que esta es fácil:
Estoy construyendo un indicador de usuario para que me avise cuando el precio de cierre cruza una MA
Estoy usando el iCustom para importar el indicador MA
y luego no sé cómo usar el cierre del precio; he probado con CLOSE y PRICE_CLOSE pero sin resultados:
if (CLOSE?>ma1)
adxvalue= -1;
if (PRICE_CLOSE?>ma1)
adxvalue= -1;
Además, quiero que la alerta suene sólo al final de una barra de 5m y que no funcione tic a tic: ¿qué más debo cambiar (esta pregunta es la que aparece en mi post anterior)
Gracias
Hola Codersguru,
Podrías ayudarme a codificar una alerta en Osma Color para que avise cuando los colores cambien.
Gracias
Duncan
//+------------------------------------------------------------------+
//| OsMA_color.mq4 |||
//| Rafael
/ /| marynarz15@wp.pl
//+------------------------------------------------------------------+
#property copyright "Rafael"
#property link "marynarz15@wp.pl"
//---- configuración del indicador
#property ventana_de_separación_del_indicador
#propiedad indicador_buffers 2
#propiedad indicador_color1 Cal
#property indicator_color2 Red
//---- parámetros del indicador
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- búferes del indicador
double ind_buffer1a[];
double ind_buffer1b[];
double ind_buffer2[];
double ind_buffer3[];
//+------------------------------------------------------------------+
//| Función de inicialización de los indicadores personalizados ||.
//+------------------------------------------------------------------+
int init()
{
//---- Se utilizan 2 buffers adicionales para el conteo.
IndicatorBuffers(4);
//---- ajustes de dibujo
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexDrawBegin(0,SignalSMA);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- Asignación de 3 buffers de indicadores
if(!SetIndexBuffer(0,ind_buffer1a) &&
SetIndexBuffer(1,ind_buffer1b) &&
!SetIndexBuffer(2,ind_buffer2) &&
!SetIndexBuffer(3,ind_buffer3))
Print("¡no se pueden establecer los búferes de los indicadores!");
//---- nombre para la etiqueta de la DataWindow y la subventana del indicador
IndicatorShortName("OsMA("+FastEMA+", "+SlowEMA+", "+SignalSMA+")";
//---- inicialización realizada
return(0);
}
//+------------------------------------------------------------------+
//| Promedio Móvil del Oscilador ||.
//+------------------------------------------------------------------+
int inicio()
{
int límite;
int counted_bars=IndicatorCounted();
//---- comprobar posibles errores
if(counted_bars<0) return(-1);
//---- la última barra contada se vuelve a contar
if(counted_bars>0) counted_bars--;
limit=Barras_contadas;
//---- macd contada en el 1er búfer adicional
for(int i=0; i<limit; i++)
ind_buffer2=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)
-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- línea de señal contada en el 2do buffer adicional
for(i=0; i<limit; i++)
ind_buffer3=iMAOnArray(ind_buffer2,Bars,SignalSMA,0,MODE_SMA,i);
//---- bucle principal
double value=0;
for(i=0; i<limit; i++)
{
ind_buffer1a=0.0;
ind_buffer1b=0.0;
value=ind_buffer2-ind_buffer3;
si (valor>0) ind_buffer1a=valor;
si (valor<0) ind_buffer1b=valor;
}
//---- hecho
return(0);
}
//+------------------------------------------------------------------+
Hola
Tengo un indicatore que es capaz de reconocer el patrón de mariposa, pero está escrito para MT3 puede alguien hacerme un favor y convertirlo a MQL4.
adjunto dos pdf.la esencia del patrón y las reglas se mencionan
hola
hola chicos
todos ustedes pueden conocer el nombre de este autor, pero nunca supo que
su método codificado en software.
Pesavento escribió, entre otros, estos maravillosos libros:
* Ratios de Fibonacci con reconocimiento de patrones
* Patrones rentables para el comercio de acciones
* Astro-Ciclos : Punto de vista de los traders
por cierto sé que el software ENSIGN también tiene su herramienta original de estudio de Patrones Pesavento que se puede ver en el siguiente enlace.
si alguien puede importarlo de ENSIGN a MetaTrader 4 será increíble.
http://www.ensignsoftware.com/help/pesavento.htm
hola de nuevo
he encontrado el código del patrón gartley 222 en dos plataformas.
¡si alguien puede traducirlo a MetaTrade 4 será magnífico!
aquí están los códigos :
1.Código de TradeStation para el patrón Gartley 222 encontrado en "Trading the Gartley 222" por Aaron Behle y Mark Conway, p. 38:
Entradas:
Longitud(100),
Fuerza(8),
Tolerancia(0.10),
BullColor(Blue),
BearColor(Red);
Variables:
F1(0.618),
F2(0.786),
F3(1.27),
F4(1.618),
P1Bar(-1),
P2Bar(-1),
T1Bar(-1),
T2Bar(-1),
P1(0.0),
P2(0.0),
T1(0.0),
T2(0.0),
PTValid(False),
HLValid(False),
InZone(False),
GD(0.0),
XA(0.0),
AB(0.0),
BC(0.0),
CD(0.0),
AD(0.0),
C1(Falso),
C2(Falso),
C3(Falso),
C4(Falso),
ABdXA(0.0),
BCdAB(0.0),
CDdBC(0.0),
ADdXA(0,0),
TL1(-1),
TL2(-1),
TL3(-1),
TL4(-1),
TL5(-1),
TL6(-1);
P1Bar = SwingHighBar(1, High, Strength, Length);
P2Bar = SwingHighBar(2, High, Strength, Length);
T1Bar = SwingLowBar(1, Low, Strength, Length);
T2Bar = SwingLowBar(2, Low, Strength, Length);
Si P1Bar -1 y
P2Bar -1 y
T1Bar -1 y
T2Bar -1 Entonces Comienza
{Prueba de un 222 alcista}
{Trough X es T2}
T2 = Low[T2Bar];
{El pico A es P2}
P2 = Alto[P2Bar];
{El pico B es T1}
T1 = Low[T1Bar];
{El pico C es P1}
P1 = Alto[P1Bar];
{D es el punto de compra}
GD = Low[P1Bar]; {Pico C es P1}; {D es el punto de compra}
PTValid = P1Bar < T1Bar y T1Bar < P2Bar y P2Bar < T2Bar;
HLValid = P1 T2 y P1 > T1;
InZone = GD T2 y P2 >= Highest(High, T2Bar);
Si PTValid y HLValid e InZone Entonces Comienza
XA = P2 - T2;
AB = P2 - T1;
BC = P1 - T1;
CD = P1 - GD;
AD = P2 - GD;
ABdXA = AB / XA; {AB debe ser el 61,8% de XA}
C1 = ABdXA > F1 - Tolerancia y ABdXA < F1 + Tolerancia;
BCdAB = BC / AB; {BC debe ser el 61,8-78,6% de AB}
C2 = BCdAB > F1 - Tolerancia y BCdAB < F2 + Tolerancia;
CDdBC = CD / BC; {CD debe ser 127-161,8% de BC}
C3 = CDdBC > F3 - Tolerancia y CDdBC < F4 + Tolerancia;
ADdXA = AD / XA; {AD debe ser el 78,6% de XA}
C4 = ADdXA > F2 - Tolerancia y ADdXA < F2 + Tolerancia;
Si C1 y C2 y C3 y C4 Entonces Comienza
TL1 = TL_New(Fecha[T2Bar], Hora[T2Bar], T2, Fecha[P2Bar], Hora[P2Bar], P2);
Si TL1 >= 0 Entonces Comienza
TL_SetColor(TL1, BullColor);
TL_SetStyle(TL1, Tool_Solid);
TL_SetSize(TL1, 2);
Fin;
TL2 = TL_New(Fecha[P2Bar], Hora[P2Bar], P2, Fecha[T1Bar], Hora[T1Bar], T1);
Si TL2 >= 0 Entonces Comienza
TL_SetColor(TL2, BullColor);
TL_SetStyle(TL2, Tool_Solid);
TL_SetSize(TL2, 2);
Fin;
TL3 = TL_New(Fecha[T1Bar], Hora[T1Bar], T1, Fecha[P1Bar], Hora[P1Bar], P1);
Si TL3 >= 0 Entonces Comienza
TL_SetColor(TL3, BullColor);
TL_SetStyle(TL3, Tool_Solid);
TL_SetSize(TL3, 2);
Fin;
TL4 = TL_New(Fecha[P1Bar], Hora[P1Bar], P1, Fecha, Hora, GD);
Si TL4 >= 0 Then Begin
TL_SetColor(TL4, BullColor);
TL_SetStyle(TL4, Tool_Solid);
TL_SetSize(TL4, 2);
Fin;
TL5 = TL_New(Fecha[T1Bar], Hora[T1Bar], T1, Fecha, Hora, GD);
If TL5 >= 0 Then Begin
TL_SetColor(TL5, BullColor);
TL_SetStyle(TL5, Tool_Dotted);
Fin;
TL6 = TL_New(Fecha[T2Bar], Hora[T2Bar], T2, Fecha, Hora, GD);
Si TL6 >= 0 Then Begin
TL_SetColor(TL6, BullColor);
TL_SetStyle(TL6, Tool_Dotted);
Fin;
Fin;
Fin;
{Test para un 222 bajista}
{El pico X es P2}
{El pico A es T2}
{Pico B es P1}
{El pico C es T1}
{GD es el punto corto}
GD = Alto;
PTValid = T1Bar < P1Bar y P1Bar < T2Bar y T2Bar < P2Bar;
HLValid = T1 > T2 y P1 < P2 y T1 < P1;
InZone = GD > P1 y GD < P2 y T2 <= Lowest(Low, P2Bar);
Si PTValid y HLValid e InZone Entonces Comienza
XA = P2 - T2;
AB = P1 - T2
BC = P1 - T1
CD = GD - T1
AD = GD - T2;
ABdXA = AB / XA; {AB debe ser el 61,8% de XA}
C1 = ABdXA > F1 - Tolerancia y ABdXA < F1 + Tolerancia;
BCdAB = BC / AB; {BC debe ser el 61,8-78,6% de AB}
C2 = BCdAB > F1 - Tolerancia y BCdAB < F2 + Tolerancia;
CDdBC = CD / BC; {CD debe ser 127-161,8% de BC}
C3 = CDdBC > F3 - Tolerancia y CDdBC < F4 + Tolerancia;
ADdXA = AD / XA; {AD debe ser el 78,6% de XA}
C4 = ADdXA > F2 - Tolerancia y ADdXA < F2 + Tolerancia;
Si C1 y C2 y C3 y C4 Entonces Comienza
TL1 = TL_New(Fecha[P2Bar], Hora[P2Bar], P2, Fecha[T2Bar], Hora[T2Bar], T2);
Si TL1 >= 0 Entonces Comienza
TL_SetColor(TL1, BearColor);
TL_SetStyle(TL1, Tool_Solid);
TL_SetSize(TL1, 2);
Fin;
TL2 = TL_New(Fecha[T2Bar], Hora[T2Bar], T2, Fecha[P1Bar], Hora[P1Bar], P1);
Si TL2 >= 0 Entonces Comienza
TL_SetColor(TL2, BearColor);
TL_SetStyle(TL2, Tool_Solid);
TL_SetSize(TL2, 2);
Fin;
TL3 = TL_New(Fecha[P1Bar], Hora[P1Bar], P1, Fecha[T1Bar], Hora[T1Bar], T1);
Si TL3 >= 0 Entonces Comienza
TL_SetColor(TL3, BearColor);
TL_SetStyle(TL3, Tool_Solid);
TL_SetSize(TL3, 2);
Fin;
TL4 = TL_New(Fecha[T1Bar], Hora[T1Bar], T1, Fecha, Hora, GD);
If TL4 >= 0 Then Begin
TL_SetColor(TL4, BearColor);
TL_SetStyle(TL4, Tool_Solid);
TL_SetSize(TL4, 2);
Fin;
TL5 = TL_New(Fecha[P1Bar], Hora[P1Bar], P1, Fecha, Hora, GD);
Si TL5 >= 0 Then Begin
TL_SetColor(TL5, BearColor);
TL_SetStyle(TL5, Tool_Dotted);
Fin;
TL6 = TL_New(Fecha[P2Bar], Hora[P2Bar], P2, Fecha, Hora, GD);
Si TL6 >= 0 Then Begin
TL_SetColor(TL6, BearColor);
TL_SetStyle(TL6, Tool_Dotted);
Fin;
Fin;
Fin;
Fin;
2.Código de Wealth-Lab:
procedimiento Gartley222
(
VPFactor: float;
Tolerancia: float;
Lookback: integer;
HoldBars: integer;
VolMin: entero
);
comenzar
var ATRValue, VP, Reversal: float;
var F1, F2, F3, F4, P1, P2, T1, T2: float
var Bar, P1Bar, P2Bar, T1Bar, T2Bar, p: integer
var XA, AB, BC, CD, AD, D, XD, DT, ABdXA, BCdAB, CDdBC, ADdXA: float
var PTValid, HLValid, InZone, C1, C2, C3, C4: booleano;
var BT, BS, ST, SS: float;
{Constantes de Fibonacci}
F1 := 0.618;
F2 := 0.786;
F3 := 1.27;
F4 := 1.618;
InstalarTimeBasedExit(HoldBars);
for Bar := Lookback to BarCount() - 1 do
comenzar
AplicarParadasAutomáticas(Bar);
ATRValue := ATR(Bar, Lookback);
SetShareSize( 1000 * Int( 10 / ATRValue );
VP := 100 * ATRValue / PriceClose(Bar);
{Buscar picos y valles}
Reversal := Int(VPFactor * VP);
P1 := Pico(Barra, #Alto, F1 * Reversal);
P1Bar := PicoBar(Bar, #Alto, F1 * Reversal);
P2 := Pico(P1Bar, #Alto, Reversión);
P2Bar := PicoBar(P1Bar, #Alto, Reversión);
T1 := Mínimo(Barra, #Mínimo, F1 * Reversión);
T1Bar := TroughBar(Bar, #Low, F1 * Reversal);
T2 := Trough(T1Bar, #Low, Reversal);
T2Bar := TroughBar(T1Bar, #Low, Reversal);
{Prueba de un 222 alcista}
{La depresión X es T2}
{Pico A es P2}
{Pico B es T1}
{Pico C es P1}
{D es la zona de compra}
D := PrecioBajo(Barra);
PTValid := (P1Bar > T1Bar) y (T1Bar > P2Bar) y (P2Bar > T2Bar);
HLValid := (P1 T2) y (P1 > T1);
InZone := (D T2);
si (MarketPosition = 0) y
(SMA(Bar, #Volume, Lookback) >= VolMin) y
(PTValid) y (HLValid) y (InZone) entonces
comenzar
XA := P2 - T2;
AB := P2 - T1;
BC := P1 - T1;
XD := P2 - (F2 * XA);
CD := P1 - XD;
AD := P2 - XD;
ABdXA := AB / XA; {AB debe ser el 61,8% de XA}
C1 := (ABdXA > F1 - Tolerancia) y (ABdXA < F1 + Tolerancia);
BCdAB := BC / AB; {BC debe ser el 61,8-78,6% de AB}
C2 := (BCdAB > F1 - Tolerancia) y (BCdAB < F2 + Tolerancia);
CDdBC := CD / BC; {CD debe ser 127-161,8% de BC}
C3 := (CDdBC > F3 - Tolerancia) y (CDdBC < F4 + Tolerancia);
ADdXA := AD / XA; {AD debe ser el 78,6% de XA}
C4 := (ADdXA > F2 - Tolerancia) y (ADdXA < F2 + Tolerancia);
si C1 y C2 y C3 y C4 entonces
comenzar
DrawLine(P2Bar, P2, T2Bar, T2, 0, #Azul, #Sólido);
DrawLine(T1Bar, T1, P2Bar, P2, 0, #Azul, #Sólido);
DrawLine(P1Bar, P1, T1Bar, T1, 0, #Azul, #Sólido);
DrawLine(Bar, D, P1Bar, P1, 0, #Azul, #Sólido);
DrawLine(Barra, D, T1Bar, T1, 0, #Azul, #Punto);
DrawLine(Bar, D, T2Bar, T2, 0, #Azul, #Punto);
AnotarBar('B', Bar, True, #Azul, 10);
BuyAtLimit(Bar, XD, 'G222 LE');
DT := F1 * CD;
BT := XD + DT;
BS := T2;
fin;
end;
{Prueba de un 222 bajista}
{Pico X es P2}
{El pico A es T2}
{Pico B es P1}
{El pico C es T1}
{D es la zona corta}
D := PrecioAlto(Barra);
PTValid := (T1Bar > P1Bar) y (P1Bar > T2Bar) y (T2Bar > P2Bar);
HLValid := (T1 > T2) y (P1 < P2) y (T1 < P1);
InZone := (D > P1) y (D < P2);
si (MarketPosition = 0) y
(PriceClose( Bar ) >= 5) y
(SMA(Bar, #Volume, Lookback) >= VolMin) y
(PTValid) y (HLValid) y (InZone) entonces
comenzar
XA := P2 - T2;
AB := P1 - T2;
BC := P1 - T1;
XD := T2 + (F2 * XA);
CD := XD - T1;
AD := XD - T2;
ABdXA := AB / XA; {AB debe ser el 61,8% de XA}
C1 := (ABdXA > F1 - Tolerancia) y (ABdXA < F1 + Tolerancia);
BCdAB := BC / AB; {BC debe ser el 61,8-78,6% de AB}
C2 := (BCdAB > F1 - Tolerancia) y (BCdAB < F2 + Tolerancia);
CDdBC := CD / BC; {CD debe ser 127-161,8% de BC}
C3 := (CDdBC > F3 - Tolerancia) y (CDdBC < F4 + Tolerancia);
ADdXA := AD / XA; {AD debe ser el 78,6% de XA}
C4 := (ADdXA > F2 - Tolerancia) y (ADdXA < F2 + Tolerancia);
si C1 y C2 y C3 y C4 entonces
comenzar
DrawLine(T2Bar, T2, P2Bar, P2, 0, #Red, #Solid);
DrawLine(P1Bar, P1, T2Bar, T2, 0, #Rojo, #Sólido);
DrawLine(T1Bar, T1, P1Bar, P1, 0, #Rojo, #Sólido);
DrawLine(Barra, D, T1Bar, T1, 0, #Rojo, #Sólido);
DrawLine(Barra, D, P1Bar, P1, 0, #Rojo, #Punto);
DrawLine(Bar, D, P2Bar, P2, 0, #Rojo, #Punto);
AnotarBarra('S', Barra, Falso, #Rojo, 10);
ShortAtLimit(Bar, XD, 'G222 SE');
DT := F1 * CD;
ST := XD - DT;
SS := P2;
fin;
fin;
si ÚltimaPosiciónActiva entonces
begin
si MarketPosition = 1 entonces begin
SellAtLimit(Bar+1, BT, #All, 'G222 LX+');
SellAtStop(Bar+1, BS, #All, 'G222 LX-');
fin;
si MarketPosition = -1 entonces begin
CoverAtLimit(Bar+1, ST, #All, 'G222 LX+');
CoverAtStop(Bar+1, SS, #All, 'G222 LX-');
fin;
fin;
fin;
fin;
Gartley222(2.0, 0.1, 20, 7, 2000000);
¿Qué es SMCMA y WCMA?
¿Alguien sabe algo acerca de estas 2 cosas MA y dónde obtener y utilizarlos para Meta Trader 4
1. SMCMA
2. WCMA
Lo único que puedo saber es que estos son algunos tipos de MA
(Moving Averages) pero ¿dónde conseguirlos y cómo usarlos?
bye
Zero_Forex
¿Utilizar otros pares de divisas en un EA?
¿Alguien sabe cómo hacer que un Asesor Experto compruebe los gráficos de otros pares de divisas para ayudar a decidir si quiere hacer una compra o una venta? Por ejemplo, ¿cómo podría hacer que un EA mirara el usd-chf como parte de los criterios para decidir si comprar o vender en el gbp-chf? Tengo un EA que me gusta hasta ahora, pero creo que podría ser mejor si también pudiera tenerlo escrito en el programa para comprobar otros pares relacionados. Codersguru, o cualquier otra persona que pueda ayudar, por favor hágamelo saber.
¡Gracias!
Hola amigos,
Tengo un montón de mensajes privados pidiéndome ayuda con algunos trozos de código.
Aquí podéis publicar vuestras preguntas relacionadas con MQL4, y haré todo lo posible por responderlas.Hola Coder.
¿Es posible que una alerta suene sólo una vez por barra de 5 minutos?
¿Es posible que una alerta suene sólo una vez cuando se cumpla la condición?
Luego se apague.
Luego en la apertura de la siguiente barra para refrescar el indicador listo para sonar de nuevo.
A continuación, apague una vez más hasta que la condición de 0,0005 se cumple de nuevo.
A continuación, encienda de nuevo y así sucesivamente......
El indicador de abajo puede sonar muchas alertas por barra cuando se dispara.
Ver abajo.
//+------------------------------------------------------------------+
//| Juice.mq4 |||||||||||||||
//| Perky_z
/ /| http://fxovereasy.atspace.com/index
//+------------------------------------------------------------------+
#property copyright "perky"
#property link "http://fxovereasy.atspace.com/index"
//---- configuración del indicador
#property ventana_de_separación_del_indicador
#property indicator_buffers 2
#propiedad indicador_color1 verde lima
#propiedad indicator_color2 FireBrick
//---- parámetros del indicador
extern bool DoAlerts = false;
extern int AlertFromPips = 5;
extern int Periyod=7;
extern double Level=5;
extern bool JuiceLevelsVisible = true;
extern int JuiceStartPips = 5;
extern int JuiceStepPips = 5;
extern int JuiceLevelsNumber = 4;
extern color JuiceLevelColor = Silver;
//---- búferes del indicador
double OsMAUpBuffer[];
double OsMADownBuffer[];
double OsMAValue;
double currentJuiceLevel;
//+------------------------------------------------------------------+
//| Función de inicialización de los indicadores personalizados ||.
//+------------------------------------------------------------------+
int init()
{
//---- Se utilizan 2 buffers adicionales para el conteo.
IndicatorBuffers(2);
//---- ajustes de dibujo
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1);
SetIndexDrawBegin(0,Level);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 2 mapeo de buffers de indicadores
if(!SetIndexBuffer(0,OsMAUpBuffer) &&
!SetIndexBuffer(1,OsMADownBuffer))
Print("¡no se pueden establecer los buffers de los indicadores!");
//---- nombre para la etiqueta de la DataWindow y la subventana del indicador
IndicatorShortName("Juice("+Periyod+", "+Nivel+")";
//---- inicialización realizada
return(0);
}
int EstablecerLíneasDeNivel()
{
string levelLabel;
if(JuiceLevelsVisible)
{
SetLevelStyle(STYLE_DASH,1,JuiceLevelColor);
for(int i=1; i<= JuiceLevelsNumber; i++)
{
currentJuiceLevel = (JuiceStartPips + (i-1)*JuiceStepPips)*Point;
SetLevelValue(i,currentJuiceLevel);
levelLabel = "Nivel "+i+": "+currentJuiceLevel;
SetIndexLabel(i,levelLabel);
}
}else
{
for(i=1; i<= JuiceLevelsNumber; i++)
{
SetLevelValue(i,0.0);
}
}
}
//+------------------------------------------------------------------+
//| Promedio Móvil del Oscilador ||
//+------------------------------------------------------------------+
int inicio()
{
//if ( Period != 15) Alert ("Juice Is Recommended for 15 Min Chart only!!")
int límite,i;
int counted_bars=IndicatorCounted();
doble Juice;
bool TurnOnAlert = true;
//---- comprobar posibles errores
if(counted_bars<0) return(-1);
//---- se vuelve a contar la última barra contada
if(counted_bars>0) counted_bars--;
limit=Barras_contadas;
Nivel = Nivel*Punto;
if (Period()==5 ) Level=Nivel/2;
SetLevelLines();
//---- bucle principal
for(i=0; i<limit; i++)
{
Juice=iStdDev (NULL,0,Periyod,MODE_EMA,0,PRICE_CLOSE,i)-Nivel;
if(Jugo>0){
OsMAUpBuffer=Juice;
OsMADownBuffer=0;
}else if(Juice<0){
OsMADownBuffer=Juice;
OsMAUpBuffer=0;
}else{
OsMAUpBuffer=0;
OsMADownBuffer=0;
}
}
if (DoAlerts)
{
if (Juice > AlertFromPips*Point && Period() == 5)
{
si (TurnOnAlert)
{
Alert("Jugo superior a ",AlertFromPips*Point," para ", Symbol());
PlaySound("Tick.wav");
TurnOnAlert = false;
}
}
else
{
TurnOnAlert = true;
}
}
//---- hecho
return(0);
}
//+------------------------------------------------------------------+
Su ayuda será muy apreciada.
Muchas gracias.
Leigh.