Ayuda a la codificación - página 287

 
airquest:
Hola, estoy tratando de extraer el valor más alto y más bajo para x períodos de la línea principal de un estocástico en un buffer. He leído en algún sitio que tengo que hacer un Array con los valores, pero no funciona. Hasta ahora estoy atascado con este código. ¿Estoy haciendo bien, puede alguien ayudarme con esto? Muchas gracias. Saludos.

double num_array[1]={iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,CustomPeriod)};

int gmax=ArrayMaximum(num_array[1],WHOLE_ARRAY,0);

int gmin=ArrayMinimum(num_array[1],WHOLE_ARRAY,0);

MinBuffer=gmin;

MaxBuffer=gmax;

Está bien, he encontrado la respuesta... Poner el iStochastic en un buffer, poner los valores en una serie con ArraySetAsSeries, luego hacer ArrayMaximum de la serie .

 
airquest:
Está bien, he encontrado la respuesta... Bufferizando el iStochastic, poniendo los valores en una serie con ArraySetAsSeries, luego hacer ArrayMaximum de la serie .

sustituir

ArrayMaximum(num_array[1],WHOLE_ARRAY,0);

ArrayMinimum(num_array[1],WHOLE_ARRAY,0);

con

ArrayMaximum(num_array,WHOLE_ARRAY,0);

ArrayMinimum(num_array,WHOLE_ARRAY,0);

 
zigflip:
¡lo siento, mi error, los he mezclado mientras seguía usando el correcto ya dojh! estúpidas metacitas para cambiar todo

No eres el único que tiene ese tipo de experiencia.

Esto es cualquier cosa menos fácil de usar

 

Hola Coders & Crackers,

Necesito su experiencia en la modificación de un ZigZag en el indicador de cierre (adjunto).

Necesito un ZigZag en la apertura en su lugar ( la misma configuración de base). Alerta en la nueva vela abierta sería un buen toque ( si es posible ).

¡Muy apreciado, gracias!

Archivos adjuntos:
 
razo:
Hola Coders & Crackers,

Necesito su experiencia en la modificación de un indicador ZigZag on Close (adjunto).

Necesito un ZigZag en la apertura en su lugar ( misma configuración de la base). Alerta en la apertura de la nueva vela sería un buen toque ( si es posible ).

¡Muy apreciado, gracias!

Hola Razo, este es el zigzag de apertura.

Archivos adjuntos:
 

Hola a todos los gurús,

Estoy teniendo un problema con iCustom con el siguiente indicador que se adjunta... #Barras VQ.

¿Podría alguien mostrarme cómo extraer el valor del siguiente buffer....DIR[]

He utilizado el siguiente código para extraer el buffer... pero no devuelve ningún valor....

double dir=iCustom(NULL,PERIOD_M1, "#BarrasVQ",4,0);

Alguien podría echar un vistazo a este asunto...

Su ayuda y asistentes son muy apreciados.....

#property indicator_chart_window

#property indicator_buffers 2

#property indicador_color1 Verde

#property indicator_color2 Rojo

#property indicator_width1 2

#property indicador_ancho2 2

extern int Longitud = 5;

extern int Método = 3;

extern int Suavizado = 1;

extern int Filter = 5;

extern bool Steady = false

double VQ[];

double SumVQ[];

double DIR[];

double UpBuffer[];

double DnBuffer[];

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(0,UpBuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

si (Longitud < 2) Longitud = 2;

si (Método < 0) Método = 0;

si (Método > 3) Método = 3;

si (Suavizado < 0) Suavizado = 0;

if (Filter < 0) Filter = 0;

string nombre_corto = "VQ | "+ Longitud + " , " +

Método + " , " + Alisado + " , " + Filtro + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0,0);

SetIndexEmptyValue(2, 0,0);

SetIndexEmptyValue(3, 0.0);

return(0);

}

//+------------------------------------------------------------------+

int inicio()

{

double MH = 0, ML = 0, MO = 0, MC = 0, MC1 = 0;

int, j, limit, 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--;

//----

if(counted_bars<1) i=Bars-Length-1;

si no i=Barras_contadas

si(barras_contadas<1)

{

j=Longitud de barras-1;

SumVQ[j + 1] = Close[j + 1];

}

while (i >= 0)

{

MH = iMA(NULL,0,Length,0,Method,PRICE_HIGH,i);

ML = iMA(NULL,0,Length,0,Method,PRICE_LOW,i);

MO = iMA(NULL,0,Length,0,Method,PRICE_OPEN,i);

MC = iMA(NULL,0,Length,0,Method,PRICE_CLOSE,i);

MC1 = iMA(NULL,0,Length,0,Method,PRICE_CLOSE,i+Smoothing);

if (Steady==true)

{

MC=iMA(NULL,0,Longitud,0,Método,PRECIO_MEDIO,i);

MC1=iMA(NULL,0,Longitud,0,Método,PRECIO_MEDIO,i+Alisado);

}

if((MH - ML)>0)

VQ = MathAbs(((MC - MC1) / MathMax(MH - ML, MathMax(MH - MC1, MC1 - ML)) + (MC - MO) / (MH - ML)) * 0,5) * ((MC - MC1 + (MC - MO)) * 0.5);

SumVQ = SumVQ + VQ;

si (Filtro > 0)

si (MathAbs(SumVQ - SumVQ) < Filtro * Punto)

SumVQ = SumVQ;

i--;

}

si(barras_contadas<1)

limit=Barras-longitud-1;

si no, limit=Barras_contadas;

for (i = límite-1; i >= 0; i--)

{

si (SumVQ > SumVQ) DIR = 1;

si (SumVQ < SumVQ) DIR = -1;

si (SumVQ== SumVQ) DIR = DIR;

si (DIR > 0)

{

UpBuffer = High;

DnBuffer = Bajo;

}

si no

si (DIR < 0)

{

DnBuffer = Alto;

UpBuffer = Low;

}

}

return(0);

}

 
12BPRO:
Hola a todos los gurús,

Tengo un problema con iCustom con el siguiente indicador que se adjunta... #Barras VQ.

¿Podría alguien mostrarme cómo extraer el valor del siguiente buffer....DIR[]

He utilizado el siguiente código para extraer el buffer... pero no devuelve ningún valor....

double dir=iCustom(NULL,PERIOD_M1, "#BarrasVQ",4,0);

Alguien podría echar un vistazo a este asunto...

Su ayuda y asistentes son muy apreciados.....

Todo parece estar bien

Adjunto las barras #vq así como un indicador de prueba que utiliza esos valores y está mostrando valores correctos

vq_bars.mq4

vq_bars.mq4

Archivos adjuntos:
vq_bars.mq4  3 kb
_test_vq.mq4  1 kb
 
mladen:
Todo parece estar bien Adjunto las barras #vq así como un indicador de prueba que utiliza esos valores y está mostrando valores correctos

vq_bars.mq4

_test_vq.mq4

Wow... Gracias señor MLADEN....

La cosa más extraña había sucedido... ese código no funciona en mi indicador... no puede abrir el registro de error....

pero lo probé en las barras #VQ y funciona muy bien....

Perdió unas cuantas horas en que....

¿Qué puedo decir.... Te debo una....SIR.... para aclarar esta cosa para mí.....

Este es mi #VQ.....

Tiene el valor pero cuando llamo al iCustom en el EA no tiene valor.... qué puedo decir.... tonto de mí....

Archivos adjuntos:
gbpjpy_test.jpg  123 kb
my_vq.jpg  48 kb
 

Estimado señor MLADEN,

¿Podría usted por favor mirar en mi indicador #VQ.... ... He eliminado algunas líneas que no uso.... y he añadido algunas alertas....

Mi ser que es la causa del problema para no ser capaz de llamar a la memoria intermedia en la EA a través de iCustom....

Su ayuda una vez más es muy apreciada.....

Suyo es

AZRUL.......

#property indicator_chart_window

#property indicator_buffers 2

#propiedad indicador_color1 Verde

#property indicator_color2 Rojo

#property indicator_width1 2

#property indicador_ancho2 2

extern int Longitud = 5;

extern int Método = 3;

extern int Suavizado = 1;

extern double Filtro = 0.5

extern bool Steady = False

extern string SoundGbp = "news.wav";

extern string SoundEur = "news.wav";

extern bool PopupAlert = true;

extern bool SendPushNotification = false

extern bool SoundAlert = True;

int lastAlert=3;

double VQ[];

double SumVQ[];

double DIR[];

double UpBuffer[];

double DnBuffer[];

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(0,UpBuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

si (Longitud < 2) Longitud = 2;

si (Método < 0) Método = 0;

si (Método > 3) Método = 3;

si (Suavizado < 0) Suavizado = 0;

if (Filter < 0) Filter = 0;

string nombre_corto = "VQ | "+ Longitud + " , " +

Método + " , " + Alisado + " , " + Filtro + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0,0);

SetIndexEmptyValue(2, 0,0);

SetIndexEmptyValue(3, 0.0);

return(0);

}

//+------------------------------------------------------------------+

int inicio()

{

int, limit, 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--;

//----

if(counted_bars<1) i=Bars-Length;

si no i=Barras_contadas;

si(barras_contadas<1)

while (i >= 0)

{

VQ = iCustom(NULL,0, "#pollan indy",0,i+1);

SumVQ= iCustom(NULL,0, "#pollan indy",1,i+1);

//si (Filtro > 0)

//if (MathAbs(VQ - SumVQ) < Filter)

//VQ = SumVQ;

i--;

}

if(barras_contadas<1)

limit=Barras-Longitud-1;

si no, limit=Barras_contadas;

for (i = límite-1; i >= 0; i--)

{

//si (VQ > SumVQ) DIR = 1;

si ((VQ+VQ) > (SumVQ+SumVQ))

DIR = 1;

si ((VQ+VQ) < (SumVQ+SumVQ))

DIR = -1;

si ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

si (DIR > 0)

{

UpBuffer = High;

DnBuffer = Low;

}

si no

si (DIR < 0)

{

DnBuffer = Alto;

UpBuffer = Low;

}

if ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERTA COMPRA

}

if ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//ALERTA DE VENTA

}

}

double vq1=iCustom(NULL,0, "#pollan indy",0,i+1);

double svq1=iCustom(NULL,0, "#pollan indy",1,i+1);

double vq2=iCustom(NULL,0, "#pollan indy",0,i+2);

double svq2=iCustom(NULL,0, "#pollan indy",1,i+2);

double vq3=iCustom(NULL,0, "#pollan indy",0,i+3);

double svq3=iCustom(NULL,0, "#pollan indy",1,i+3);

double dir1=DIR;

double dir2=DIR;

double dir3=DIR;

double vq0= (vq1 + vq2);

double svq0= (svq1 + svq2);

string VQ0_Teks=DoubleToStr(vq0,6);

string VQS0_Teks=DoubleToStr(svq0,6);

string VQ1_Teks=DoubleToStr(vq1,6);

string VQS1_Teks=DoubleToStr(svq1,6);

string VQ2_Teks=DoubleToStr(vq2,6);

string VQS2_Teks=DoubleToStr(svq2,6);

string VQ3_Teks=DoubleToStr(vq3,6);

string VQS3_Teks=DoubleToStr(svq3,6);

string dir1_Teks=DoubleToStr(dir1,6);

string dir2_Teks=DoubleToStr(dir2,6);

string dir3_Teks=DoubleToStr(dir3,6);

cadena h =

" Azul" + " + VQ0_Teks+ " " + " Rojo" + " + VQS0_Teks + "\n" +

" Azul" + " " + VQ1_Teks+ " " + " Rojo" + " + VQS1_Teks + "\n" +

" Azul" + " " + VQ2_Teks+ " " + " Rojo" + " " + VQS2_Teks + "\n" +

" Azul" + " " + VQ3_Teks+ " " + " Rojo" + " " + VQS3_Teks + "\n" + "\n" +

" DIR1" + " + dir1_Teks+" " + "DIR2" + " + dir2_Teks + " " +"DIR3" + " + dir3_Teks;

Comentario(h);

return(0);

}

//--------------------------------------------------------------

void CheckForAlerts(int type)

{

//ALERTAS

static datetime lastAlertTime=0;

if (lastAlertTime != iTime(NULL,0,0)) {

if (type==OP_BUY && lastAlert!=2) { //BUY

doAlerts("Pollan BAR UP "+Símbolo()+" (tf: "+Periodo()+")",SoundEur);

lastAlert=2;

lastAlertTime=iTime(NULL,0,0);

}

if (type==OP_SELL && lastAlert!=1) { //SELL

doAlerts("Pollan BAR DOWN "+Símbolo()+" (tf: "+Periodo()+")",SoundGbp);

lastAlert=1;

lastAlertTime=iTime(NULL,0,0);

}

}//si (lastAlertTime != iTime(NULL,0,0) {

//finalizar ALERTAS

}

//--------------------------------------------------------------

void doAlerts(string sMsg,string SoundFile) {

if (PopupAlert) Alert(sMsg);

if(SoundAlert) PlaySound(SoundFile);

if(SendPushNotification) SendNotification(sMsg);

}

GRACIAS........

 
12BPRO:
Estimado señor MLADEN,

¿Podría usted por favor mirar en mi indicador #VQ.... ... He eliminado algunas líneas que no uso.... y añadido algunas alertas....

Mi ser que es la causa del problema por no ser capaz de llamar a la memoria intermedia en la EA a través de iCustom....

Su ayuda una vez más es muy apreciada.....

Suyo es

AZRUL.......

#property indicator_chart_window

#property indicator_buffers 2

#propiedad indicador_color1 Verde

#property indicator_color2 Rojo

#property indicator_width1 2

#property indicador_ancho2 2

extern int Longitud = 5;

extern int Método = 3;

extern int Suavizado = 1;

extern double Filtro = 0.5

extern bool Steady = False

extern string SoundGbp = "news.wav";

extern string SoundEur = "news.wav";

extern bool PopupAlert = true;

extern bool SendPushNotification = false

extern bool SoundAlert = True;

int lastAlert=3;

double VQ[];

double SumVQ[];

double DIR[];

double UpBuffer[];

double DnBuffer[];

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(0,UpBuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

si (Longitud < 2) Longitud = 2;

si (Método < 0) Método = 0;

si (Método > 3) Método = 3;

si (Suavizado < 0) Suavizado = 0;

if (Filter < 0) Filter = 0;

string nombre_corto = "VQ | "+ Longitud + " , " +

Método + " , " + Alisado + " , " + Filtro + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0,0);

SetIndexEmptyValue(2, 0,0);

SetIndexEmptyValue(3, 0.0);

return(0);

}

//+------------------------------------------------------------------+

int inicio()

{

int, limit, 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--;

//----

if(counted_bars<1) i=Bars-Length;

si no i=Barras_contadas

si(barras_contadas<1)

while (i >= 0)

{

VQ = iCustom(NULL,0, "#pollan indy",0,i+1);

SumVQ= iCustom(NULL,0, "#pollan indy",1,i+1);

//si (Filtro > 0)

//if (MathAbs(VQ - SumVQ) < Filter)

//VQ = SumVQ;

i--;

}

if(barras_contadas<1)

limit=Barras-longitud-1;

si no, limit=Barras_contadas;

for (i = límite-1; i >= 0; i--)

{

//si (VQ > SumVQ) DIR = 1;

si ((VQ+VQ) > (SumVQ+SumVQ))

DIR = 1;

si ((VQ+VQ) < (SumVQ+SumVQ))

DIR = -1;

si ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

si (DIR > 0)

{

UpBuffer = High;

DnBuffer = Low;

}

si no

si (DIR < 0)

{

DnBuffer = Alto;

UpBuffer = Low;

}

if ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERTA COMPRA

}

if ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//ALERTA DE VENTA

}

}

double vq1=iCustom(NULL,0, "#pollan indy",0,i+1);

double svq1=iCustom(NULL,0, "#pollan indy",1,i+1);

double vq2=iCustom(NULL,0, "#pollan indy",0,i+2);

double svq2=iCustom(NULL,0, "#pollan indy",1,i+2);

double vq3=iCustom(NULL,0, "#pollan indy",0,i+3);

double svq3=iCustom(NULL,0, "#pollan indy",1,i+3);

double dir1=DIR;

double dir2=DIR;

double dir3=DIR;

double vq0= (vq1 + vq2);

double svq0= (svq1 + svq2);

string VQ0_Teks=DoubleToStr(vq0,6);

string VQS0_Teks=DoubleToStr(svq0,6);

string VQ1_Teks=DoubleToStr(vq1,6);

string VQS1_Teks=DoubleToStr(svq1,6);

string VQ2_Teks=DoubleToStr(vq2,6);

string VQS2_Teks=DoubleToStr(svq2,6);

string VQ3_Teks=DoubleToStr(vq3,6);

string VQS3_Teks=DoubleToStr(svq3,6);

string dir1_Teks=DoubleToStr(dir1,6);

string dir2_Teks=DoubleToStr(dir2,6);

string dir3_Teks=DoubleToStr(dir3,6);

cadena h =

" Azul" + " + VQ0_Teks+ " " + " Rojo" + " + VQS0_Teks + "\n" +

" Azul" + " " + VQ1_Teks+ " " + " Rojo" + " + VQS1_Teks + "\n" +

" Azul" + " " + VQ2_Teks+ " " + " Rojo" + " " + VQS2_Teks + "\n" +

" Azul" + " " + VQ3_Teks+ " " + " Rojo" + " " + VQS3_Teks + "\n" + "\n" +

" DIR1" + " + dir1_Teks+" " + "DIR2" + " + dir2_Teks + " " +"DIR3" + " + dir3_Teks;

Comentario(h);

return(0);

}

//--------------------------------------------------------------

void CheckForAlerts(int type)

{

//ALERTAS

static datetime lastAlertTime=0;

if (lastAlertTime != iTime(NULL,0,0)) {

if (type==OP_BUY && lastAlert!=2) { //BUY

doAlerts("Pollan BAR UP "+Símbolo()+" (tf: "+Periodo()+")",SoundEur);

lastAlert=2;

lastAlertTime=iTime(NULL,0,0);

}

if (type==OP_SELL && lastAlert!=1) { //SELL

doAlerts("Pollan BAR DOWN "+Símbolo()+" (tf: "+Periodo()+")",SoundGbp);

lastAlert=1;

lastAlertTime=iTime(NULL,0,0);

}

}//si (lastAlertTime != iTime(NULL,0,0) {

//finalizar ALERTAS

}

//--------------------------------------------------------------

void doAlerts(string sMsg,string SoundFile) {

if (PopupAlert) Alert(sMsg);

if(SoundAlert) PlaySound(SoundFile);

if(SendPushNotification) SendNotification(sMsg);

}

GRACIAS........

Lo has cambiado para usar "#pollan indy"

No tengo ni idea de lo que hace ese indicador (si es como el resto de los indicadores "pollan" entonces se repinta y eso puede causar tus problemas, pero sólo estoy haciendo el juego de las adivinanzas ahora)