¡Pide! - página 7

 

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

Archivos adjuntos:
 

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.

Archivos adjuntos:
butterfly.mql  3 kb
 

adjunto dos pdf.la esencia del patrón y las reglas se mencionan

Archivos adjuntos:
attachment2.pdf  141 kb
attachment1.pdf  189 kb
 

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!

 
codersguru:
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.