Ajuda na codificação - página 287

 
airquest:
Olá, estou tentando extrair o maior e o menor valor para x períodos da linha principal de um estocástico em um buffer. Eu li em algum lugar que preciso fazer um Array com os valores, mas ele não funciona. Até agora, estou preso a este código. Estou fazendo certo, alguém pode me ajudar com isto? Muito obrigado. Cumprimentos.

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á tudo bem, encontrei a resposta... Buffering the iStochastic, fixando os valores em uma série com o ArraySetAsSeries, então faça ArrayMaximum da série .

 
airquest:
Está tudo bem, encontrei a resposta... Buffering the iStochastic, fixando os valores em uma série com ArraySetAsSeries, então faça ArrayMaximum da série .

substituir

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

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

com

ArrayMaximum(num_array,WHOLE_ARRAY,0);

ArrayMinimum(num_array,WHOLE_ARRAY,0);

 
zigflip:
Desculpe meu erro, confundi-los enquanto ainda usava a crista já dojh! metaquotas estúpidas para mudar tudo

Você não é o único com esse tipo de experiência.

Isto é tudo menos fácil de usar.

 

Olá Codificadores & Crackers,

Precisa de sua experiência na modificação de um ZigZag no Indicador de Fechamento (anexo ).

Preciso de um ZigZag em Aberto em vez disso ( mesma configuração de base). Alertar sobre vela nova aberta seria um toque agradável ( se possível ).

Muito apreciado, obrigado!

Arquivos anexados:
 
razo:
Olá Coders & Crackers,

Precisa de sua experiência na modificação de um ZigZag no Indicador de Fechamento (anexo ).

Preciso de um ZigZag em Aberto em vez disso ( mesmas configurações de base). Alertar sobre vela nova aberta seria um toque agradável ( se possível ).

Muito apreciado, obrigado!

Olá Razo, aqui é o ziguezague em aberto.

Arquivos anexados:
 

Olá a todos os Gurus,

Estou tendo problemas com o iCustom com o seguinte indicador como anexo... Barras #VQ.

Alguém POR FAVOR poderia me mostrar como extrair o valor para o seguinte buffer....DIR[]

Eu uso o seguinte código para extrair o buffer... mas não retorna nenhum valor....

double dir=iCustom(NULL,PERÍODO_M1, "#VQ bars",4,0);

Alguém poderia, por favor, dar uma olhada neste assunto...

Sua ajuda e seus assistentes são muito apreciados.....

#property indicator_chart_window

#property indicator_buffers 2

#indicador de propriedade_color1 Verde

#indicador de propriedade_color2 Vermelho

#largura_do_indicador de propriedade1 2

#largura_do_indicador de propriedade2 2

comprimento externo int = 5;

método int externo = 3;

alisamento externo int = 1;

filtro externo int = 5;

bool externo Firme = falso;

duplo VQ[];

duplo SumVQ[];

duplo DIR[];

duplo UpBuffer[];

duplo 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);

if (Comprimento < 2) Comprimento = 2;

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

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

if (Alisamento < 0) Alisamento = 0;

if (Filtro < 0) Filtro = 0;

nome_curto_de_filtro = "VQ | "+ Comprimento + " , " +

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

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexEmptyValue(3, 0,0);

return(0);

}

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

int start()

{

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

int i, j, limit, counted_bars=IndicatorCounted();

//---- verificação de possíveis erros

if(counted_bars<0) return(-1);

//---- última barra contada será contada novamente

if(counted_bars>0) counted_bars--;

//----

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

senão i=barras_contadas_comprimento-1; ou i=barras_contadas_barras;

if(counted_bars<1)

{

j=Bars-Length-1;

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

}

enquanto (i >= 0)

{

MH = iMA(NULL,0,Length,0,Método,PRICE_HIGH,i);

ML = iMA(NULL,0,Comprimento,0,Método,PRICE_LOW,i);

MO = iMA(NULL,0,Comprimento,0,Método,PRICE_OPEN,i);

MC = iMA(NULL,0,Comprimento,0,Método,PRICE_CLOSE,i);

MC1 = iMA(NULL,0,Comprimento,0,Método,PRICE_CLOSE,i+Suavização);

se (Firme===verdadeiro)

{

MC=iMA(NULL,0,Length,0,Método,PRICE_MEDIAN,i);

MC1=iMA(NULL,0,Comprimento,0,Método,PRICE_MEDIAN,i+Smoothing);

}

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;

se (Filtro > 0)

if (MathAbs(SumVQ - SumVQ) < Filtro * Ponto)

SumVQ = SumVQ;

i--;

}

if(counted_bars<1)

limit=Bars-Length-1;

caso contrário limit=Bars-counted_bars;

para (i = limite-1; i >= 0; i--)

{

se (SumVQ > SumVQ) DIR = 1;

se (SumVQ < SumVQ) DIR = -1;

se (SomaVQ== SomaVQ) DIR = DIR;

se (DIR > 0)

{

UpBuffer = Alto;

DnBuffer = Baixo;

}

senão

se (DIR < 0)

{

DnBuffer = Alto;

UpBuffer = Baixo;

}

}

retorno(0);

}

 
12BPRO:
Olá a todos os Gurus,

Estou tendo problemas com o iCustom com o seguinte indicador como anexo... Barras #VQ.

Alguém POR FAVOR poderia me mostrar como extrair o valor para o seguinte buffer....DIR[]

Eu uso o seguinte código para extrair o buffer... mas não retorna nenhum valor....

double dir=iCustom(NULL,PERÍODO_M1, "#VQ bars",4,0);

Alguém poderia, por favor, dar uma olhada neste assunto...

Sua ajuda e seus assistentes são muito apreciados.....

Tudo parece estar bem

Anexando as barras #vq assim como um indicador de teste que usa esses valores e está mostrando valores corretos

vq_bars.mq4

_test_vq.mq4

Arquivos anexados:
vq_bars.mq4  3 kb
_test_vq.mq4  1 kb
 
mladen:
Tudo parece estar OKAfixar as barras #vq assim como um indicador de teste que usa esses valores e está mostrando valores corretos

vq_bars.mq4

_test_vq.mq4

Uau... Obrigado Sir MLADEN....

A coisa mais estranha aconteceu... esse código não funciona no meu indicador... não posso abrir o log de erros....

mas eu o testei nas barras #VQ e funciona muito bem....

Desperdiçadas algumas horas com essa....

O que posso dizer.... Devo-lhe uma....SIR.... por me ter esclarecido esta coisa.....

Este é o meu #VQ.....

Tem o valor, mas quando chamo o iCustom no EA não tem valor.... o que posso dizer.... bobagem me....

Arquivos anexados:
gbpjpy_test.jpg  123 kb
my_vq.jpg  48 kb
 

Prezado Senhor MLADEN,

Poderia POR FAVOR, verificar meu indicador #VQ....... Eu deletei algumas linhas que não uso.... e adicionei alguns alertas....

Minha causa é esse problema por não poder chamar o buffer no EA via iCustom....

Sua AJUDA mais uma vez é muito apreciada.....

Atenciosamente

AZRUL.......

#janela_do_cartão_indicador de propriedade

#property indicator_buffers 2

#indicador de propriedade_color1 Verde

#indicador de propriedade_color2 Vermelho

#largura_do_indicador de propriedade1 2

#largura_do_indicador de propriedade2 2

comprimento externo int = 5;

método int externo = 3;

alisamento externo int = 1;

filtro duplo externo = 0,5;

bool externo Firme = Falso;

corda externa SoundGbp = "news.wav";

corda externa SoundEur = "news.wav";

bool externo PopupAlert = verdadeiro;

bool externo SendPushNotification = falso;

extern bool SoundAlert = verdadeiro;

int lastAlert=3;

duplo VQ[];

duplo SumVQ[];

duplo DIR[];

duplo UpBuffer[];

duplo 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);

if (Comprimento < 2) Comprimento = 2;

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

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

if (Alisamento < 0) Alisamento = 0;

if (Filtro < 0) Filtro = 0;

nome_curto_de_filtro = "VQ | "+ Comprimento + " , " +

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

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexEmptyValue(3, 0,0);

return(0);

}

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

int start()

{

int i, limit, counted_bars=IndicatorCounted();

//---- verificação de possíveis erros

if(counted_bars<0) return(-1);

//---- última barra contada será contada novamente

if(counted_bars>0) counted_bars--;

//----

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

senão i=barras_contadas_comprimento_das_barras;

if(counted_bars<1)

enquanto (i >= 0)

{

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

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

//if (Filtro > 0)

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

//VQ = SumVQ;

i--;

}

if(counted_bars<1)

limit=Bars-Length-1;

caso contrário limit=Bars-counted_bars;

para (i = limite-1; i >= 0; i--)

{

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

if ((VQ+VQ) > (SumVQ+SumVQ))

DIR = 1;

se ((VQ+VQ) < (SumVQ+SumVQ))

DIR = -1;

se ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

se (DIR > 0)

{

UpBuffer = Alto;

DnBuffer = Baixo;

}

senão

se (DIR < 0)

{

DnBuffer = Alto;

UpBuffer = Baixo;

}

se ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERT BUY

}

se ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//ALERT SELL

}

}

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

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

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

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

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

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

double dir1=DIR;

double dir2=DIR;

double dir3=DIR;

duplo vq0= (vq1 + vq2);

duplo svq0= (svq1 + svq2);

string VQ0_Teks=DoubleToStr(vq0,6);

string VQS0_Teks=DoubleToStr(svq0,6);

cadeia de caracteres VQ1_Teks=DoubleToStr(vq1,6);

string VQS1_Teks=DoubleToStr(svq1,6);

cadeia de caracteres VQ2_Teks=DoubleToStr(vq2,6);

cadeia de caracteres VQS2_Teks=DoubleToStr(svq2,6);

cadeia de caracteres 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);

string h =

" Azul" + " " + VQ0_Teks+ " " + " Vermelho" + " " + VQS0_Teks + "\n" +

" Azul" + " " + VQ1_Teks+ " " + " Vermelho" + " " + VQS1_Teks + "\n" +

" Azul" + " " + VQ2_Teks+ " " + " Vermelho" + " " + VQS2_Teks + "\n" +

" Azul" + " " + VQ3_Teks+ " " + " Vermelho" + " " + VQS3_Teks + "\n" + "\n" +

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

Comentário(h);

return(0);

}

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

Válido CheckForAlerts(tipo int)

{

//ALERTA:

data estática hora últimoAlertTime=0;

se (últimoAlertTime != iTime(NULL,0,0)) {

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

doAlerts("Pollan BAR UP "+Symbol()+" (tf: "+Periodo()+")",SoundEur);

últimoAlerta=2;

lastAlertTime=iTime(NULL,0,0);

}

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

doAlerts("Pollan BAR DOWN "+Symbol()+" (tf: "+Periodo()+")",SoundGbp);

últimoAlerta=1;

lastAlertTime=iTime(NULL,0,0);

}

}// se (últimoAlertTime != iTime(NULL,0,0) {

//terminar ALERTA

}

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

doAlerts(string sMsg,string SoundFile) {

se (PopupAlert) Alerta(sMsg);

if(SoundAlert) PlaySound(SoundFile);

if(SendPushNotification) SendNotification(sMsg);

}

OBRIGADO........

 
12BPRO:
Prezado Senhor MLADEN,

Poderia POR FAVOR, verificar meu indicador #VQ....... Eu deletei algumas linhas que não uso.... e adicionei alguns alertas....

Minha causa é esse problema por não poder chamar o buffer no EA via iCustom....

Sua AJUDA mais uma vez é muito apreciada.....

Atenciosamente

AZRUL.......

#janela_do_cartão_indicador de propriedade

#property indicator_buffers 2

#indicador de propriedade_color1 Verde

#indicador de propriedade_color2 Vermelho

#largura_do_indicador de propriedade1 2

#largura_do_indicador de propriedade2 2

comprimento externo int = 5;

método int externo = 3;

alisamento externo int = 1;

filtro duplo externo = 0,5;

bool externo Firme = Falso;

corda externa SoundGbp = "news.wav";

corda externa SoundEur = "news.wav";

bool externo PopupAlert = verdadeiro;

bool externo SendPushNotification = falso;

extern bool SoundAlert = verdadeiro;

int lastAlert=3;

duplo VQ[];

duplo SumVQ[];

duplo DIR[];

duplo UpBuffer[];

duplo 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);

if (Comprimento < 2) Comprimento = 2;

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

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

if (Alisamento < 0) Alisamento = 0;

if (Filtro < 0) Filtro = 0;

nome_curto_de_filtro = "VQ | "+ Comprimento + " , " +

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

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexEmptyValue(3, 0,0);

return(0);

}

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

int start()

{

int i, limit, counted_bars=IndicatorCounted();

//---- verificação de possíveis erros

if(counted_bars<0) return(-1);

//---- última barra contada será contada novamente

if(counted_bars>0) counted_bars--;

//----

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

senão i=barras_contadas_comprimento_das_barras;

if(counted_bars<1)

enquanto (i >= 0)

{

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

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

//if (Filtro > 0)

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

//VQ = SumVQ;

i--;

}

if(counted_bars<1)

limit=Bars-Length-1;

caso contrário limit=Bars-counted_bars;

para (i = limite-1; i >= 0; i--)

{

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

if ((VQ+VQ) > (SumVQ+SumVQ))

DIR = 1;

se ((VQ+VQ) < (SumVQ+SumVQ))

DIR = -1;

se ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

se (DIR > 0)

{

UpBuffer = Alto;

DnBuffer = Baixo;

}

senão

se (DIR < 0)

{

DnBuffer = Alto;

UpBuffer = Baixo;

}

se ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERT BUY

}

se ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//ALERT SELL

}

}

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

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

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

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

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

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

double dir1=DIR;

double dir2=DIR;

double dir3=DIR;

duplo vq0= (vq1 + vq2);

duplo svq0= (svq1 + svq2);

string VQ0_Teks=DoubleToStr(vq0,6);

string VQS0_Teks=DoubleToStr(svq0,6);

cadeia de caracteres VQ1_Teks=DoubleToStr(vq1,6);

string VQS1_Teks=DoubleToStr(svq1,6);

cadeia de caracteres VQ2_Teks=DoubleToStr(vq2,6);

cadeia de caracteres VQS2_Teks=DoubleToStr(svq2,6);

cadeia de caracteres 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);

string h =

" Azul" + " " + VQ0_Teks+ " " + " Vermelho" + " " + VQS0_Teks + "\n" +

" Azul" + " " + VQ1_Teks+ " " + " Vermelho" + " " + VQS1_Teks + "\n" +

" Azul" + " " + VQ2_Teks+ " " + " Vermelho" + " " + VQS2_Teks + "\n" +

" Azul" + " " + VQ3_Teks+ " " + " Vermelho" + " " + VQS3_Teks + "\n" + "\n" +

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

Comentário(h);

return(0);

}

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

Válido CheckForAlerts(tipo int)

{

//ALERTA:

data estática hora últimoAlertTime=0;

se (últimoAlertTime != iTime(NULL,0,0)) {

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

doAlerts("Pollan BAR UP "+Symbol()+" (tf: "+Periodo()+")",SoundEur);

últimoAlerta=2;

lastAlertTime=iTime(NULL,0,0);

}

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

doAlerts("Pollan BAR DOWN "+Symbol()+" (tf: "+Periodo()+")",SoundGbp);

últimoAlerta=1;

lastAlertTime=iTime(NULL,0,0);

}

}// se (últimoAlertTime != iTime(NULL,0,0) {

//terminar ALERTA

}

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

doAlerts(string sMsg,string SoundFile) {

se (PopupAlert) Alerta(sMsg);

if(SoundAlert) PlaySound(SoundFile);

if(SendPushNotification) SendNotification(sMsg);

}

OBRIGADO........

Você o mudou para usar o "#pollan indy".

Não tenho idéia do que esse indicador faz (se é como o resto dos indicadores "pollan", então ele pinta novamente e isso pode causar seus problemas, mas apenas fazendo o jogo de adivinhação agora)