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

 
ANDREY:

Ho trovato un modello statistico stabile nel tester, che ha prodotto costantemente profitti con drawdown accettabili dal 2008. Ho bisogno di testarlo su diverse coppie e cornici, ecc.
Ma ho bisogno di testarlo usando diversi parametri simultaneamente. L'ottimizzazione richiede un tempo irreale e ho già scritto un codice che testa ciò di cui ho bisogno molto più velocemente. E ora sto migliorando il mio codice, cioè voglio che funzioni ancora più velocemente nel tester, o il più velocemente possibile. L'algoritmo principale nel mio codice è l'apertura di ordini a 30 punti dopo ogni minimo locale. Quindi cerco di farlo il più rapidamente possibile.

Il tuo compito sarà più facile se puoi spiegare come identifichi l'estremo locale.

Se l'indicatore Fractals è adatto a questo, allora dovresti controllare sulla seconda barra la presenza di un frattale e da questo valore dovresti calcolare i 30 punti o pip necessari... qualsiasi cosa tu voglia.

 
MakarFX:

Il controllo nel tuo codice non è un carico, ma se vuoi davvero provarlo, provalo.

Provato. Apre di nuovo gli ordini sbagliati (in termini di tempo, prezzo e quantità)

Il tuo codice.

double LoU;
int OnInit()
  {
   LoU=Bid;
  }
//+------------------------------------------------------------------+
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=Bid;
     }
  }


Grazie per l'aiuto.

 
Alexey Viktorov:

Il tuo compito sarà più facile se puoi spiegare come definisci un estremo locale.

Se l'indicatore Fractals è adatto a questo, allora si controlla sulla seconda barra la presenza di un frattale e si contano i 30 punti o pip necessari... come si vuole.

Se per estremo intendiamo il minimo locale dopo il quale viene aperto l'ordine, questo minimo viene definito controllando il valore minimo del prezzo su ogni tick o candela. E questo è esattamente ciò con cui sto lottando. Voglio che tutto avvenga molto più velocemente per aprire gli ordini nelle posizioni di cui ho bisogno.

 
ANDREY:

Se per estremum si intende un minimo locale dopo il quale viene aperto un ordine, questo minimo viene determinato controllando il valore minimo del prezzo su ogni tick o candela. E questo è esattamente ciò con cui sto lottando. Voglio che tutto avvenga molto più velocemente per aprire gli ordini nelle posizioni di cui ho bisogno.

L'estremo è un minimo o un massimo locale. Come lo definisce?

 
Alexey Viktorov:

Il tuo compito sarà più facile se puoi spiegare come identifichi l'estremo locale.

Se l'indicatore Fractals è adatto, allora si controlla sulla seconda barra la presenza di un frattale e da questo valore si calcolano i 30 punti o pip necessari... come si vuole.

Penso che l'indicatore frattale non sia adatto a me. Mancheranno molti ordini.

L'ordine aperto dal mio codice con il controllo del prezzo ad ogni tick è evidenziato in blu. Penso che l'indicatore frattale non mi dica nulla di necessario in questo caso.

 
Alexey Viktorov:

Un estremo è un minimo o un massimo locale. Come lo definisce?

Nel mio caso, è un minimo.

 
ANDREY

Che cos'è

Pr

come viene inizializzato?

 
MakarFX:
Dipende da dove lo metti

Per esempio tra l'apertura di due ordini adiacenti. Cioè, ricorda la barra dell'ultimo ordine aperto e apre un ordine non appena il prezzo è sopra il minimo che questa funzione definisce di 30 punti. Ma in questo caso, questa funzione deve essere chiamata ad ogni tick. Cambiate l'informatore per il sapone.......

 
ANDREY:

Cambiare uno shill con un sapone.......

Ancora peggio...ancora bisogno di sapere il numero di barre


Ho modificato ...prova

 
MakarFX:

Che cos'è

come viene inizializzato?

double LoU,Pr;
void OnTick()//484
{
Tick++;
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);
Print("---------------------КАЖДЫЙ ТИК ------Tick---------=     "    ,   Tick);
Pr=LoU;
LoU=Bid;
}
}
Pr è una variabile in modo che solo 1 ordine venga aperto dopo 30 pip. Senza questa variabile si aprono ad ogni spunta