Ajuda na codificação - página 288

 

Hi,

Em primeiro lugar um pedido de desculpas se este estiver no lugar errado, é um pivô indi que estou olhando mas meu Q está em relação à codificação, eu poderia tê-lo colocado no MTF também, mas achei que este era o melhor lugar para começar.

No MT4 temos diário, semanal, mensal = W1, D1, MN1

mas há uma função de um ano, ou um quarto de função.

Assim, por exemplo, no indicador de pivô anexo, como obter 1 ano, e é (ou você pode escolher) um exemplo rolante de 12 meses ou um fixo antes do ano 2013. E o mesmo para como obtê-lo para calcular os pivôs trimestrais.

Qualquer orientação seria apreciada, anexo é um pivô indi mensal. estou razoavelmente confiante de que posso modificar o anexo, mas não sei como começar a inserir os dados para torná-los trimestrais ou anuais.

allpivots_monthly.mq4

Muito obrigado

Kevin

Arquivos anexados:
 
mladen:
Você o mudou para usar "#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)

Caro Senhor MLADEN...

Você poderia substituir isto (#pollan indy) por qualquer outro indicador que você tenha... pode ser chamado de #VQ bars.... POR FAVOR, experimente.... porque eu tenho uma leitura no buffer do indicador como imagem anexa... mas eu não poderia ligar via iCustom no meu EA para testar mais este '#pollan indy'...

Espero que você volte em breve para cá... OBRIGADO

Atenciosamente

AZRUL

Arquivos anexados:
my_vq.jpg  48 kb
 
12BPRO:
Caro Senhor MLADEN...

Você poderia substituir isto (#pollan indy) por qualquer outro indicador que você tenha... pode ser chamado #VQ bars.... POR FAVOR, experimente.... porque eu tenho uma leitura no buffer do indicador como imagem anexa... mas eu não poderia ligar através do iCustom no meu EA para testar mais este '#pollan indy'...

Espero que você volte em breve para cá... OBRIGADO

Atenciosamente

AZRUL

Não há necessidade de substituir #VQ por #VQ (já está calculando a qualidade da volatilidade)

Se funcionar como deveria com o regular #VQ, a única conclusão lógica é que há algo errado com o "#pollan indy".

 

Ajuda na codificação

Bom dia a todos

Olá mladen

Estou tentando criar meus primeiros códigos.

Aprenda com outros códigos, já que não há um MT4 manual em meu idioma.

Rezo para não rir do meu código.

Por favor, pode me ajudar a funcionar.

É um indicador simples que marca a criação de um Doji.

Peço sua ajuda.

Muito obrigado de antemão.

Com os melhores cumprimentos.

Hermo.

PD. Compila bem, mas não funciona.

Arquivos anexados:
 
Hermo:
Bom dia a todos

Olá mladen

Estou tentando criar meus primeiros códigos.

Aprenda com outros códigos, já que não há um MT4 manual em meu idioma.

Rezo para não rir do meu código.

Por favor, pode me ajudar a funcionar.

É um indicador simples que marca a criação de um Doji.

Peço sua ajuda.

Muito obrigado de antemão.

Com os melhores cumprimentos.

Hermo.

PD. Compila bem, mas não funciona.

Hermo.

Vai verificá-lo

Aguardando a coletiva de imprensa do BCE agora :):)

 
12BPRO:
Caro Senhor MLADEN...

É por isso que, em primeiro lugar, eu não postei minha #VQ.... pode ser que você esteja certo sobre algo errado sobre o "pollan indy" e SIM, ele re-pinta....

Para mim, gostaria apenas de tentar minha teoria, com este indicador apenas para ver qual é o resultado....

A questão é que eu não poderia chamar o indicador de buffer na minha EA... pode ser causado pela versão modificada do meu #VQ que está bloqueando a chamada iCustom para a minha EA....

Com o #VQ original funciona muito bem... e eu poderia executar minha EA...., mas com o #VQ modificado (meu), eu não poderia exagerar, mas ainda assim há um valor como mostrado no tópico anterior...

Acho que o problema é que com o meu MODIFIED #VQ versão.... pode ser um erro de sintaxe... POR FAVOR, se você tiver tempo, dê uma olhada e veja se está funcionando como deveria.....

OBRIGADO... e desculpe por qualquer entrada negativa.....

Atenciosamente...

AZRUL

AZRUL

Eu simplesmente não posso saber o que está acontecendo com seu "polan indy" sem ver o código

Tudo o que posso fazer é adivinhar, e adivinhar na codificação é muito, muito ruim.

tudo de bom

 
mladen:
Não há necessidade de substituir #VQ por #VQ (já está calculando a qualidade da volatilidade)Se funciona como deveria com o regular #VQ a única conclusão lógica é que há algo errado com "#pollan indy".

Caro Senhor MLADEN...

É por isso que, em primeiro lugar, eu não postei minha #VQ.... pode ser que você esteja certo sobre algo errado sobre o "pollan indy" e SIM, repintar....

Para mim, gostaria apenas de tentar minha teoria, com este indicador apenas para ver qual é o resultado....

A questão é que eu não poderia chamar o indicador de buffer na minha EA... pode ser causado pela versão modificada do meu #VQ que está bloqueando a chamada iCustom para a minha EA....

Com o #VQ original funciona muito bem... e eu poderia executar minha EA...., mas com o #VQ modificado (meu), eu não poderia exagerar, mas ainda assim há um valor como mostrado no tópico anterior...

Acho que o problema é que com o meu MODIFIED #VQ versão.... pode ser algum erro de sintaxe... POR FAVOR, se você tiver tempo, dê uma olhada e veja se está funcionando como deveria..... só para o LEARNING PURPOSES....

OBRIGADO... TENHO ESSA E AGORA ESTOU EXECUTANDO E TESTANDO SE VOCÊ ESTIVER INTERESSADO EM DESCOBRIR O RESULTADO, EU O COLOCAREI NO TÓPICO DE PESQUISA.....

Atenciosamente...

AZRUL SEU VERDADEIRO...

 
mladen:
AZRUL

Eu simplesmente não posso saber o que está acontecendo com seu "polan indy" sem ver o código

Tudo o que posso fazer é adivinhar, e adivinhar na codificação é muito, muito ruim.

tudo de bom

TENHO ESSA EEE FUNCIONANDO AGORA E TESTANDO SE VOCÊ ESTIVER INTERESSADO EM DESCOBRIR O RESULTADO EU O AFIXAREI NO POLLAN THREAD.....

FOI A MINHA VERSÃO DO #VQ QUE NÃO FUNCIONOU...

OBRIGADO...

Atenciosamente...

AZRUL

 

Olá CODESGURUS,

Eu tenho uma pergunta geral sobre o multi time frame.... como anexo

a primeira figura do lado esquerdo é um indicador RSI em um período de 5M.

Na segunda é um indicador RSI em um período de tempo de 5M no período de 15M...

A questão é por que existe uma diferença no valor indicado no círculo VERMELHO....

Alguém POR FAVOR pode explicar e retificar estes códigos RsiMA-MTF........

#property indicator_separate_window

#property indicator_buffers 6

#indicador de propriedade_color1 Lime

#indicador de propriedade_color2 Vermelho

#indicador de propriedade_color3 Aqua

#indicador de propriedade_color4 Amarelo

#indicador de propriedade_color5 Branco

#indicador de propriedade_color6 Magenta

#largura_do_indicador de propriedade1 1

#largura_do_indicador de propriedade2 1

#largura_do_indicador de propriedade3 1

#largura_do_indicador de propriedade4 1

#largura_do_indicador de propriedade5 1

#largura_do_indicador de propriedade6 1

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

//-----

//filtro externo TimeFrames = "M15; M60";

bool externo TimeFrame1bool = verdadeiro;

Exterior int TimeFrame1 = 0;

bool externo TimeFrame2bool = Falso;

externamente int TimeFrame2 = 0;

bool externo TimeFrame3bool = Falso;

externamente int TimeFrame3 = 0;

//int period[]={1,5,15,30,60,240,1440,43200};

//string periodString[]={"M1","M5","M15","M30","H1","H4","D1",MN1"};

// criar mais um array com nomes indicadores

//string signalNameString[]={"MA"};

int ExtCountedBars=0;

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

int TF;

//---- buffers

duplo ExtMapBuffer1[];

duplo ExtMapBuffer2[];

duplo ExtMapBuffer3[];

duplo ExtMapBuffer4[];

duplo ExtMapBuffer5[];

duplo ExtMapBuffer6[];

//-------

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

int init()

{

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer2);

SetIndexBuffer(2, ExtMapBuffer3); SetIndexBuffer(2, ExtMapBuffer3);

SetIndexBuffer(3, ExtMapBuffer4); SetIndexBuffer(3, ExtMapBuffer4);

SetIndexBuffer(4, ExtMapBuffer5); SetIndexBuffer(4, ExtMapBuffer5);

SetIndexBuffer(5, ExtMapBuffer6); SetIndexBuffer(5, ExtMapBuffer6);

//-----

SetIndexStyle(0, DRAW_LINE);

SetIndexStyle(1, DRAW_LINE);

SetIndexStyle(2, DRAW_LINE);

SetIndexStyle(3, DRAW_LINE);

SetIndexStyle(4, DRAW_LINE); SetIndexStyle(4, DRAW_LINE);

SetIndexStyle(5, DRAW_LINE); SetIndexStyle(5, DRAW_LINE);

// SetIndexStyle(0,DRAW_LINE,EMPTY,1);

// SetIndexBuffer(0,ExtMapBuffer1);

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

int M1 = PERÍODO_M1;

int M5 = PERÍODO_M5;

int M15 = PERÍODO_M15;

int M30 = PERÍODO_M30;

int H1 = PERÍODO_H1;

int H4 = PERÍODO_H4;

int D1 = PERÍODO_D1;

int WK1 = PERÍODO_W1;

int MN1 = PERÍODO_M1;

TF=Periodo();

if (TF===PERÍODO_M1) { TimeFrame1 = M1; TimeFrame2 = M1; TimeFrame3 = M1;}

caso contrário se (TF===PERIOD_M5) { TimeFrame1 = M1; TimeFrame2 = M5; TimeFrame3 = M15;}

senão se (TF===PERIOD_M15) { TimeFrame1 = M5; TimeFrame2 = M15; TimeFrame3 = H1; }

senão se (TF===PERIOD_M30) { TimeFrame1 = M5; TimeFrame2 = M15; TimeFrame3 = H1; }

senão se (TF===PERIOD_H1) { TimeFrame1 = M15; TimeFrame2 = H1; TimeFrame3 = H4; }

senão se (TF===PERIOD_H4) { TimeFrame1 = H4; TimeFrame2 = H4; TimeFrame3 = D1; }

senão se (TF===PERIOD_D1) { TimeFrame1 = H4; TimeFrame2 = D1; TimeFrame3 = WK1;}

senão se (TF===PERIOD_W1) { TimeFrame1 = D1; TimeFrame2 = WK1; TimeFrame3 = MN1;}

senão se (TF===PERIOD_MN1) { TimeFrame1 = D1; TimeFrame2 = WK1; TimeFrame3 = MN1;}

caso contrário { TimeFrame1 = D1; TimeFrame2 = WK1; TimeFrame3 = MN1;}

//-----

retorno(0);

}

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

int start()

{

data/hora TimeArray1[];

data/hora TimeArray2[];

data/hora TimeArray3[];

limite int, i,y=0;

// int counted_bars = IndicatorCounted();

ExtCountedBars=IndicatorCounted();

if(ExtCountedBars < 0) retorno(-1);

if(ExtCountedBars > 0) ExtCountedBars--;

limite = Barras - ExtCountedBars;

//-----

ArrayCopySeries(TimeArray1,MODE_TIME,Symbol(),TimeFrame1);

ArrayCopySeries(TimeArray2,MODE_TIME,Symbol(),TimeFrame2);

ArrayCopySeries(TimeArray3,MODE_TIME,Symbol(),TimeFrame3);

for(i=0,y=0;i<limit;i++)

{

if(TimeFrame1bool)

{

se (Time<TimeArray1[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer1 = iCustom(NULL,TimeFrame1 , "#RSI-MA",0, y);

ExtMapBuffer2 = iCustom(NULL,TimeFrame1 , "#RSI-MA",3, y);

}

}

//-----

if(TimeFrame2bool)

{

se (Tempo<TimeArray2[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer3 = iCustom(NULL,TimeFrame2 , "#RSI-MA",0,y);

ExtMapBuffer4 = iCustom(NULL,TimeFrame2 , "#RSI-MA",3,y);

}

}

//-----

if(TimeFrame3bool)

{

se (Time<TimeArray3[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer5 = iCustom(NULL,TimeFrame3 , "#RSI-MA",0, y);

ExtMapBuffer6 = iCustom(NULL,TimeFrame3 , "#RSI-MA",3, y);

}

}

}

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

//=======================================================

retorno(0);

}

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

int deinit()

{

retorno(0);

}

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

Arquivos anexados:
rsi-mtf_diff.jpg  290 kb
 

ESTA É UMA CÓPIA DA RSI-MA........

#property indicator_separate_window

#property indicator_buffers 4

#indicador de propriedade_color1 LimeGreen

#indicador de propriedade_color2 Vermelho

#indicador de propriedade_color3 Amarelo

#Indicador de propriedade_color4 Branco ///DarkGray

#largura_do_indicador de propriedade1 3

#largura_do_indicador de propriedade2 3

#largura_do_indicador de propriedade3 3

#largura_do_indicador de propriedade4 1

#indicador de propriedade_código de nível de cor Aqua

String externo TimeFrame = "Current time frame";

extern int RsiOma_Periodo = 13;

extern int RsiOma_Preço = 0;

extern int RsiOma_Mode = MODE_LWMA;

int externo MaPeríodo = 8;

externo int MaType = MODE_LWMA;

nívelOb duplo externo = 88;

duplo nívelOb externo = 88; duplo nívelOb externo = 13;

externo int OB_RSI = 80;

externo int OS_RSI = 15;

nota de string externa = "ligar Alerta = verdadeiro; desligar = falso";

alertas de bool externoOn = verdadeiro; ///falso;

alertas de bool externoOnCurrent = true;

alertas de bool externoMensagem = verdadeiro;

Alertas de bool externoSom = verdadeiro; ///falso;

alertas de bool externoEmail = falso;

arquivo de som de corda externa = "connect.wav"; ///"alert2.wav";

string externa SoundUp = "ok.wav";

corda externa SoundDown = "stops.wav";

double rsi[];

double rsida[];

duplo rsidb[];

duplo ma[];

duplo mab[];

duplo rsi[]; duplo rsida[]; duplo rsida[];

duplo rsida[];

string indicatorFileName;

int Char, timeFrame;

bool returnBars;

bool calculateValue;

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

int init()

{

IndicatorBuffers(7);

SetIndexBuffer(0,rsi);

SetIndexBuffer(1,rsida);

SetIndexBuffer(2,rsidb);

SetIndexBuffer(3,ma);

SetIndexBuffer(4,mab);

SetIndexBuffer(5,trend);

SetIndexBuffer(6,slope);

SetLevelValue(0,levelOs);

SetLevelValue(1,levelOb);

IndicadorArquivoNome = WindowExpertName();

calculateValue = (TimeFrame=="calculateValue"); se (calculateValue) retorno(0);

returnBars = (TimeFrame=="returnBars"); if (returnBars) return(0);

timeFrame = stringToTimeFrame(TimeFrame);

IndicatorShortName(timeFrameToString(timeFrame)+" Rsi-Ma MaxMin ("+RsiOma_Period+", "+MaPeriod+")");

SetIndexLabel(0, "RSI");

SetIndexLabel(1, "RSIDA");

SetIndexLabel(2, "RSIDB");

SetIndexLabel(3, "MA");

return(0);

}

int deinit() { return(0); }

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

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

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

if(counted_bars>0) counted_bars--;

limite = MathMin(Bars-counted_bars,Bars-1);

if (returnBars) { rsi[0] = limite+1; return(0); }

if (calculateValue ||| timeFrame==Periodo())

{

if (slope[limit] == -1) ClearPoint(limit,rsida,rsidb);

for (i=limite; i >= 0; i--) mab = iMA(NULL,0,RsiOma_Period,0,RsiOma_Mode,RsiOma_Price,i);

para (i=limite; i >= 0; i--) rsi = iRSIOnArray(mab,0,RsiOma_Periodo,i);

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

{

ma = iMAOnArray(rsi,0,MaPeriod,0,MaType,i);

rsida = EMPTY_VALUE;

rsidb = EMPTY_VALUE;

slope = slope;

tendência = tendência;

if ((rsi > rsi) && (rsi > OB_RSI))

declive= 1;

if ((rsi < rsi) && (rsi < OS_RSI))

declive=-1;

se ((rsi > ma) && (rsi > OB_RSI))

tendência= 1;

if ((rsi < ma) && (rsi < OS_RSI))

tendência=-1;

se (declive == -1)

PlotPoint(i,rsida,rsidb,rsi);

}

gerenciarAlertas();

retornar(0);

}

limite = MathMax(limite,MathMin(Bars-1,iCustom(NULL,timeFrame,indicadorNome do arquivo, "returnBars",0,0)*timeFrame/Período()));

if (slope[limit]==-1) ClearPoint(limit,rsida,rsidb);

for (i=limit;i>=0; i--)

{

int y = iBarShift(NULL,TimeFrame,Time);

rsi = iCustom(NULL,timeFrame,indicadorNome do Arquivo, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,0,y);

rsida = VAZIO_VALOR;

rsidb = EMPTY_VALUE;

ma = iCustom(NULL,timeFrame,indicadorNome do arquivo, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,3,y);

tendência = iCustom(NULL,timeFrame,nome do arquivo indicador, "calculateValue",RsiOma_Periodo,RsiOma_Preço,RsiOma_Modo,MaPeriodo,MaType,5,y);

inclinação = iCustom(NULL,timeFrame,nome do arquivo indicador, "calculateValue",RsiOma_Period,RsiOma_Preço,RsiOma_Modo,MaPeriod,MaType,6,y);

}

for (i=limit;i>=0;i--) if (slope===-1) PlotPoint(i,rsida,rsidb,rsi);

manageAlerts();

return(0);

}

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

string sTfTable[] = {"M1", "M5", "M15", "M30", "H1", "H4", "D1", "W1", "MN"};

int iTfTable[] = {1,5,15,30,30,60,240,1440,10080,43200};

int stringToTimeFrame(string tfs)

{

tfs = stringUpperCase(tfs);

for (int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tfs==sTfTable || tfs===""+iTfTable) return(MathMax(iTfTable,Period()));

return(Period());

}

tempo de fioFrameToString(int tf)

{

para (int i=ArraySize(iTfTable)-1; i>=0; i--)

se (tf===iTfTable) retornar(sTfTable);

return("");

}

string stringUpperCase(string str)

{

string s = str;

para (comprimento int = StringLen(str)-1; comprimento>=0; comprimento--)

{

Char = StringGetChar(s, comprimento);

if((Char > 96 && Char 223 && Char < 256))

s = StringSetChar(s, comprimento, Char - 32);

caso contrário se(Char > -33 && Char < 0)

s = StringSetChar(s, comprimento, Char + 224);

}

devolução(ões);

}

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

ClearPoint(int i,double& first[],double& second[])

{

se ((segundo != EMPTY_VALUE) && (segundo != EMPTY_VALUE))

segundo = VAZIO_VALOR;

senão

if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first === EMPTY_VALUE))

primeiro = VAZIO_VALOR;

}

vazio PlotPoint(int i,double& first[],double& second[],double& from[])

{

se (primeiro == VAZIO_VALOR)

{

se (primeiro == VAZIO_VALOR)

{

primeiro = de;

primeiro = de;

segundo = VAZIO_VALOR;

}

senão

{

segundo = de;

segundo = de;

primeiro = VAZIO_VALOR;

}

}

senão

{

primeiro = de;

segundo = VAZIO_VALOR;

}

}

alertas de gerenciamento de vazios()

{

se (!calculateValue && alertsOn)

{

se (alertasOnCurrent)

int que Bar = 0;

senão qualBar = 1; qualBar = iBarShift(NULL,0,iTime(NULL,timeFrame,qualBar));

if (trend[qual barra] != trend[qual barra+1])

{

if (trend[whichBar] == 1)

//doAlert(queBar, "tendência");

doAlerts( qualBar, "UP RSI-MA "+Symbol()+" (tf: "+Periodo()+")",SoundUp);

if (trend[qual barra] ==-1)

//doAlert(que Bar, "nenhuma tendência");

doAlerts( qualBar, "DOWN RSI-MA "+Symbol()+" (tf: "+Periodo()+")",SoundDown);

}

}

}

void doAlerts(int para Bar, string do What, string SoundFile) {

string estática anteriorAlert="nada";

data estática hora anteriorTempo anterior;

mensagem de string;

if (previousAlert != do What ||| previousTime != Time[forBar]) {

anteriorAlerta = fazer o quê;

previousTime = Tempo[para Bar];

mensagem = StringConcatenate(Symbol()," em ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",do What);

if (alertasMensagem) Alerta(mensagem);

if (alertasSound) PlaySound(SoundFile);

if (alertasEmail) SendMail(StringConcatenate(Symbol()," rsioma ",do What),message);

}

}

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

vazio doAlert(int para Bar, string do What)

{

string estática anteriorAlert="nada";

data estática hora anteriorTempo anterior;

mensagem de string;

if (previousAlert != do What ||| previousTime != Time[forBar]) {

anteriorAlerta = fazer o quê;

previousTime = Tempo[para Bar];

mensagem = StringConcatenate(Symbol()," em ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",do What);

if (alertasMensagem) Alerta(mensagem);

if (alertasEmail) SendMail(StringConcatenate(Symbol()"," rsioma ",message),message);

if (alertsSound) PlaySound(soundfile);

}

}

OBRIGADO ALL.....

melhores cumprimentos

AZRUL..........

PS... como faço para anexar estes FILES aqui..... Desculpe pela confusão....

Razão: