Come codificare? - pagina 44

 

Buongiorno ralph.ronnquist

Quindi dovrei creare un'altra linea sdl qualcosa come SDLL = long SDLS = short?

Penso di aver ragione nel dire che sull'indi SDL

uptrend = buffer 1 & indice 1 colore blu

dntrend = buffer 2 & indice 2 colore rosso

Se è così dove dovrei metterli. li metto alla fine della linea iCustom.

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

o sono fuori strada

 

L'istruzione:

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

fa sì che SDL mantenga il valore del secondo buffer (Uptrend) alla data barra "shift".

(Nota che avevi un ",1" ripetuto, che sembrava un errore di battitura. In ogni caso non dovrebbe essere lì)

Quindi, sì, se vuoi leggere sia Uptrend che Dntrend, allora avrai bisogno di due variabili per contenere i valori. Come dici tu, Uptrend è 1 e Dntrend è 2.

 

Buongiorno Ralph

Grazie per l'aiuto, funziona, ora posso andare a dormire.

Grazie

Beno

 
wolfe:
Spero che questo sia quello che stavate cercando.

Mi ha mandato nella giusta direzione - grazie amico, davvero apprezzato.

Il mio nuovo problema è che quando la mia istruzione if viene chiamata....

Si basa sul valore della barra dell'indicatore precedente in relazione alla barra corrente, e invia un Alert(); che ho creato... circa 20 volte.

Come potrei fare in modo che invii solo una volta?

Ho provato a creare un interruttore on/off usando le variabili, ma non funziona in MQL4 purtroppo.

Poi ho pensato ai timer... se ci fosse un timer che potessi creare e che avvisasse solo una volta in un periodo di 20 secondi, funzionerebbe anche questo....

Ma sono in perdita per quanto riguarda un'idea che sarebbe effettivamente possibile in MQL4.

Qualche idea?

 

In altre parole... Ho bisogno di un modo per impedirgli di allertare dopo il primo, perché al momento sta allertando più volte (fastidioso e inutile come si può intuire)

 
dharsant:
In altre parole... Ho bisogno di un modo per impedirgli di inviare l'allarme dopo il primo, perché al momento l'allarme viene inviato più volte (fastidioso e non necessario, come potete immaginare)

Potresti fornire un po' di codice da guardare?

Forse potresti impostare un booleano vero/falso da far scattare dopo che l'allarme è stato inviato la prima volta.

 

Non sono sicuro di quale codice avrebbe senso. Ecco la mia dichiarazione if per l'avviso.

"Code":

latestlatestmain = 2 barre indietro nel mio indicatore.

latestmain = barra precedente nel mio indicatore

se(MainCCI > ErgoCCI){

{segnale = "SHORT";

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

PlaySound("alert2.wav");

}

}

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

alertTag = Time[0];

lastsignal=segnale;

}

}

if (MainCCI < ErgoCCI){

{signal = "LONG";

if ((latestlatestmain 0)) {

PlaySound("alert2.wav");

}

Questo è l'indicatore FX Sniper, e quando si adatta ai miei parametri invia l'Alert.

Come potrei impostare una cosa booleana vero/falso?

Ho provato a fare questo.....

"Codice con interruttore on/off":

if(MainCCI > ErgoCCI){

{signal = "SHORT";

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

if (onealert == 1) {

PlaySound("alert2.wav");

onealert = 0;

} }

}

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

alertTag = Time[0];

lastsignal=segnale;

}

}

if (MainCCI < ErgoCCI){

{signal = "LONG";

if ((latestlatestmain 0)) {

if (onealert == 0) {

PlaySound("alert2.wav");

onealert = 1;

} }

o qualche variante di questo, per creare l'on/off con le variabili.

C'è qualcos'altro che potrei fare usando booleani, vero? Qualche idea su come posso fare?

Al momento funziona bene per quanto riguarda l'avviso, mi avvisa solo circa 5-6 volte.

Apprezzo il tempo e l'aiuto amico.

-dharsant

 

Pensavo di aver risolto il problema e che Sleep(); avrebbe funzionato....

 

Ho trovato questo da 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;

}

}

Sembra quello che sto cercando!

Usando questo con il mio indicatore...

Devo solo mettere la funzione nel mio script, e poi usare

AlertOnce("Sniper going LONG",10);

al posto del mio Alert(); ?

Mi sento come un piccolo programmatore inesperto

 

Capito, grazie per l'aiuto!!!