Como codificar? - página 44

 

Gidday ralph.ronnquist

então devo criar outra linha sdl algo como SDLL = longo SDLS = curto ?

Acho que estou certo em dizer que no SDL indi

uptrend = tampão 1 & Índice 1 cor Azul

dntrend = buffer 2 & Index 2 Colour Red

Se sim, onde os colocaria. coloco-os no final da linha iCustom.

duplo SDL=iCustom(NULL,0, "Slope Direction Line",período,método,preço,1,1,turno);

ou estou muito fora da trilha

 

A declaração:

double SDL=iCustom(NULL,0,"Slope Direction Line",period,method,price,1,shift);

faz com que o SDL mantenha o valor do segundo tampão (Uptrend) na barra de "turno" dada.

(Note que você tinha um ",1" repetido, que parecia uma gralha. Em qualquer caso, ele não deveria estar lá)

Portanto, sim, se você quiser ler tanto Uptrend como Dntrend, então você precisará de duas variáveis para manter os valores. Como você diz, Uptrend é 1 e Dntrend é 2.

 

Ralph de Gidday

Obrigado pela ajuda. Está funcionando, agora posso ir dormir.

Abraço

Beno

 
wolfe:
Espero que isto seja o que você estava procurando.

Ele me mandou na direção certa - obrigado homem, realmente apreciado.

Minha nova questão é que quando minha declaração é chamada....

Ela sai do valor da barra indicadora anterior em relação à barra atual, e envia um Alerta(); que eu criei... cerca de 20 vezes.

Como eu faria para que ele enviasse apenas uma vez?

Eu tentei criar e ligar/desligar a chave usando variáveis - infelizmente não funciona na MQL4.

Então pensei em Timers... se houvesse um timer que eu pudesse criar que só enviasse o Alerta uma vez durante um período de 20 segundos que funcionasse também....

Mas eu sou uma perda quanto a uma idéia que seria realmente possível na MQL4.

Alguma idéia?

 

Em outras palavras... Preciso de uma maneira de impedir que o Alerte depois do primeiro, porque no momento é Alertar várias vezes (irritante e desnecessário, como você pode adivinhar)

 
dharsant:
Em outras palavras... Preciso de alguma forma de impedir que o alerta seja disparado após o primeiro, porque no momento ele é disparado várias vezes (irritante e desnecessário, como você pode adivinhar).

Você poderia fornecer algum código a ser analisado?

Talvez você pudesse configurar um verdadeiro/falso booleano para ser disparado após o envio do alerta na primeira vez.

 

Não tenho certeza de qual código faria sentido. Aqui está minha declaração para o alerta.

"Code":

latetlatestmain = 2 barras de volta no meu indicador.

última vírgula = barra anterior no meu indicador

if(MainCCI > ErgoCCI){

{signal = "CURTO";

if ((latestlatestmain >= 0) && (latestmain < 0)) {

PlaySound("alert2.wav");

}

}

if(lastsignal != signal && alertTag!=Time[0]){

alertTag = Tempo[0];

lastsignal=signal;

}

}

if (MainCCI < ErgoCCI){

{signal = "LONG";

se ((latestlatestmain 0)) {

PlaySound("alert2.wav");

}

Este é o indicador FX Sniper, e quando ele se encaixa em meus parâmetros, ele envia o Alerta.

Como eu iria montar uma coisa booleana verdadeiro/falso?

Eu tentei fazer isto.....

"Code with on/off switch":

if(MainCCI > ErgoCCI){

{signal = "CURTO";

if ((latestlatestmain >= 0) && (latestmain < 0)) {

se (onealert == 1) {

PlaySound("alert2.wav");

onealert = 0;

} }

}

if(lastsignal != signal && alertTag!=Time[0]){

alertTag = Tempo[0];

lastsignal=signal;

}

}

if (MainCCI < ErgoCCI){

{signal = "LONG";

se ((latestlatestmain 0)) {

se (onealert == 0) {

PlaySound("alert2.wav");

onealert = 1;

} }

ou alguma variante disso, para criar o on/off com variáveis.

Há algo mais que eu poderia fazer usando booleano, existe? Alguma idéia de como eu posso fazer isso?

No momento funciona bem no que diz respeito a me alertar, apenas me alerta cerca de 5-6 vezes.

Aprecie o tempo e ajude a acasalar.

-dharsant

 

Apenas pensei que tinha resolvido isso, e que o Sleep(); funcionaria.... darn

 

Encontrei isto pela Codersguru;

void AlertOnce(string alert_msg, int ref)

{

if (ref > 10)

return;

ref--;

static int LastAlert[10];

if( LastAlert[ref] == 0 || LastAlert[ref] < Bars)

{

Alert(alert_msg);

LastAlert[ref] = Bars;

}

}

Parece o que eu procuro!!

Ao usar isto com meu indicador...

Eu apenas colocaria a função em meu script, e então usaria

AlertOnce("Sniper going LONG",10);

no lugar do meu Alerta(); ?

Sinto-me como um programador pouco inexperiente

 

Entendi, obrigado pela ajuda!!!