Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1472

 
ANDREY:
Pr è una variabile in modo che solo 1 ordine sia aperto dopo 30 pip. Senza questa variabile si aprono ad ogni spunta
if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0))
{LoU=Bid;}

Quindi non hai bisogno di questa variabile...e c'è già meno carico)

 
MakarFX:
Ancora peggio... bisogna ancora sapere il numero di barre


Ho modificato ...prova

L'ho fatto. È lo stesso.
Il tuo codice.

double LoU,Pr;
int OnInit()
  {
   LoU=Low[0];
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Low[1]<LoU) {LoU=Low[1];}
   if ((Bid-30*Point)>=LoU)
     {
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Low[0];
     }
  }


 
MakarFX:

Quindi non hai bisogno di questa variabile...e già il carico è minore)

Forse non ne ho bisogno. Ma non è quello con cui sto lottando.....

 
ANDREY:

Probabilmente non è necessario. Ma non è quello con cui sto lottando.....

1) Se stai lottando con la velocità, qualsiasi ottimizzazione del codice è un vantaggio.

2) La differenza di risultati perché non hai l'inizializzazione LoU all'avvio non è niente... VUOTO

 
MakarFX:
Ancora peggio...bisogna ancora sapere il numero di barre


Ho modificato ...prova

Se Bid - Low[ ] >= 30 pip, apri un ordine. Ma come facciamo a sapere il numero di questo Low[ ] dopo che il Bid va sopra questo Low[ ] di 30 pip?
 
ANDREY:
In alternativa, se Bid - Low[? ] >= 30 p. dovremmo aprire un ordine. Ma come facciamo a sapere il numero di Low[ ] dopo che Bid supera Low[ ] di 30 punti?

E se Bid scende, questo significa un nuovo minimo... e da quale minimo si dovrebbe fare il calcolo?

 
MakarFX:

1) Se stai lottando con la velocità, qualsiasi ottimizzazione del codice è un vantaggio.

2) La differenza di risultati perché non si ha l'inizializzazione del LoU all'avvio non equivale a nulla... VUOTO

Quindi se assegno un valore a LoU quando lo dichiaro, il codice verrà eseguito molto più velocemente ?

Gli ho assegnato il prezzo di apertura della prima barra del 04.01.2010.

double LoU = 1.6121,Pr;
void OnTick()//531
{
if (Bid<LoU)
LoU=Bid;
//**************************************************************||TimeCurrent()==1262568096
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Pr=LoU;
LoU=Bid;

}
}
 
MakarFX:

E se Bid scende, significa un nuovo minimo... e qual è il minimo da cui calcolare?

Lascia che scenda, l'importante è che l'ordine si apra in 30 pip. E dopo l'apertura, lascia che il prezzo scenda per trovare il nuovo minimo. Immaginiamo di avere l'attuale Bid e che sia a 30 punti di distanza da Low[ 50] e possiamo aprire un ordine. Se ( Bid - Low[ 50] > 30 punti ) - apriamo un ordine, come faremo a sapere che è il minimo della 50esima candela? Quindi, in questo caso dovremmo controllare non quello che c'era prima del minimo locale ma quello che c'era dopo.
E in questo caso non importa quanto il prezzo scenderà dopo l'apertura dell'ordine.

 
ANDREY:

Non credo che l'indicatore frattale sia adatto a me. Mancheranno molti ordini.

L'ordine aperto dal mio codice con il controllo del prezzo su ogni tick è evidenziato in blu. Mi sembra che un frattale non dica nulla di necessario in questo caso.

Ho dato un frattale come esempio. E come si determina il minimo (nel tuo caso) è un segreto militare... o non capisci quello che ti sto chiedendo.

 
ANDREY:

Lascialo cadere, l'importante è che l'ordine si apra in 30 pip. E dopo l'apertura, lascia che il prezzo scenda per trovare un nuovo minimo. Immaginiamo di avere l'attuale Bid ed è a 30 punti di distanza da Low[ 50] e possiamo aprire un ordine. se ( Bid - Low[ 50] > 30 punti ) - aprire un ordine. Ma come controllare se è il minimo della 50° candela? Quindi, in questo caso dovremmo controllare non quello che c'era prima del minimo locale ma quello che c'era dopo.

non c'è bisogno di contare le barre

Dopo l'apertura dell'ordine, assegna alla variabile il valore Low[0] (il minimo della barra corrente) e dopo la chiusura della barra, se il valore di Low[1] è inferiore alla variabile, assegna un nuovo valore,

in caso contrario, viene mantenuto il vecchio valore, cioè il minimo.