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

 

Per favore, consigliatemi il modo migliore di procedere nell'ottimizzazione di un EA:

Ci sono molti parametri che sono responsabili delle impostazioni dell'indicatore e c'è un parametro che abilita/disabilita proprio questo indicatore.


Non ha assolutamente senso ottimizzare le impostazioni dell'indicatore se è disattivato.

Domanda: Come posso tagliare questi overshoots senza senso?

 
ANDREY:

Grazie per l'aiuto e le nuove informazioni per me. Ma mi ha colpito e ho trovato un modo molto più semplice ....
1. Mentre apro il primo ordine su una candela al minuto, memorizzo nella variabile X il BASSO di quella candela al momento dell'apertura di questo primo ordine.
2. Quando si apre una candela zero (la candela successiva a quella su cui si è aperto l'ordine), ottengo LoY[1]
. Poi giro la logica e concludo
1. Se X = LoY[1], allora l'ordine è stato aperto dopo ilLoY della candela su cui è stato aperto
2
. Se LoY[1]< X, significa che il prezzo è sceso ancora una volta dopo l'apertura dell'ordine ed era inferiore a X. Significa che l'ordine è stato aperto prima che LoY[] si formasse sulla candela data
Time LOW Avevo solo bisogno di sapere quando l'ordine è stato aperto. prima o dopo la formazione di LoY[].
E tutti gli ordini su una candela al minuto si aprono uno sopra l'altro con una differenza di 2 pip. Cioè, quando la prima si è aperta, lo hanno fatto anche le altre su questa candela.
Grazie per l'aiuto.

Ma ho un'altra domanda.
Ho aperto un ordine su una candela di un minuto al prezzo X. Dopo pochi secondi sulla stessa candela, un altro ordine è stato aperto ad un prezzo di X+2 pip. Tra X e X+2 c'è un prezzo basso.
Ho bisogno di scoprire il minimo. Se abbiamo a che fare con candele diverse, userei le funzioni iLow e iLowest
ma queste funzioni devono specificare le barre come limiti di intervallo. Ma i miei limiti di intervallo non sono barre, ma i prezzi X e X+2 perché c'è solo una barra.
So come trovare il minimo necessario. Ma per farlo, ho bisogno di tracciare il valore del prezzo su ogni tick. So anche come farlo con un ciclo al tempo di X+2. E come farlo tutto in una volta al tempo di X+2 come nel caso di iLow eiLowest.
Vi sarei molto grato se poteste insegnarmi come farlo.
Grazie

Scrivere le zecche in un file
 
MakarFX:
Scrivere le zecche in un file

Grazie per le informazioni che sono nuove per me. Non ho mai scritto zecche in un file. Dove posso leggere di più per capire come fare?

? Un'altra domanda ..... posso scrivere i tick con i prezzi in un array, per ordinare l'array con i tick e ottenere il tick con il valore di prezzo minimo? O con l'aiuto di

ArrayMinimum


Grazie per l'aiuto.

 
ANDREY:

Grazie per le informazioni che sono nuove per me. Non ho mai scritto zecche in un file. Dove posso leggere di più per capire come fare?

? Un'altra domanda ..... posso scrivere i tick con i prezzi in un array, per ordinare l'array con i tick e ottenere il tick con il valore di prezzo minimo? O con l'aiuto di

ArrayMinimum


Grazie per l'aiuto.

Scrivere nel file FileWriteString

In generale, è difficile capire di cosa avete bisogno.

 
MakarFX:

FileWriteString

È difficile sapere cosa si sta cercando.

Un ordine è stato aperto su una candela di un minuto al prezzo X. Pochi secondi dopo sulla stessa candela si è aperto un altro ordine a X+2. Tra X e X+2 c'è un prezzo basso.
Ho bisogno di scoprire il minimo. Se abbiamo a che fare con candele diverse, userei le funzioni iLow e iLowest
ma queste funzioni devono specificare le barre come limiti di intervallo. Ma i miei limiti di intervallo non sono barre, ma i prezzi X e X+2 perché c'è solo una barra.
So come trovare il minimo necessario. Ma per farlo, ho bisogno di tracciare il valore del prezzo su ogni tick. So anche come farlo con un ciclo al tempo di X+2. E come farlo tutto in una volta al tempo di X+2 come nel caso di iLow eiLowest.
Vi sarei molto grato se poteste insegnarmi come farlo.
Grazie
 
ANDREY:

Grazie per le informazioni che sono nuove per me. Non ho mai scritto zecche in un file. Dove posso leggere di più per capire come fare?

? Un'altra domanda ..... posso scrivere i tick con i prezzi in un array, per ordinare l'array con i tick e ottenere il tick con il valore di prezzo minimo? O con l'aiuto di

ArrayMinimum


Grazie per l'aiuto.

È possibile. Solo è necessario scrivere nel file .bin con la funzione

uint  FileWriteArray( 
   int          file_handle,         // handle файла 
   const void&  array[],             // массив 
   int          start=0,             // начальный индекс в массиве 
   int          count=WHOLE_ARRAY    // количество элементов 
   );

e leggere

uint  FileReadArray( 
   int    file_handle,               // handle файла 
   void&  array[],                   // массив для записи 
   int    start=0,                   // стартовая позиция для записи в массив 
   int    count=WHOLE_ARRAY          // сколько читать 
   );
 
Alexey Viktorov:

È possibile. Dovete solo scrivere nel file .bin con la funzione

e leggere

Grazie per le nuove informazioni .... e non solo il nuovo .... oooooooooo nuovo ?:=) cercherò di impararlo da solo....

 
ANDREY:

Grazie per le nuove informazioni per me .... e non solo il nuovo .... Molto nuovo?:=) Cercherò di digerirlo da solo....

Cosa c'è di nuovo qui? Si apre la documentazione, si leggono i titoli, si trova la sezione "Operazioni sui file" dove viene data la descrizione di diverse funzioni, compresa FileWriteArray()

Non è la prima volta che vi ricordo che dovreste leggere più spesso la documentazione. Anche se non ne avete bisogno al momento. Leggendo i titoli delle sezioni capirete cosa viene descritto nella documentazione. Tu sei quello che ne ha più bisogno.

 
Alexey Viktorov:

Cosa c'è di nuovo qui? Aprite la documentazione, leggete le intestazioni, trovate la sezione "File operations" dove sono descritte varie funzioni, tra cui FileWriteArray()

Non è la prima volta che vi ricordo che dovreste leggere più spesso la documentazione. Anche se non ne avete bisogno al momento. Leggendo i titoli delle sezioni capirete cosa è descritto nella documentazione. Sei tu che ne hai bisogno.

Grazie per i preziosi consigli. Al momento leggo la documentazione solo quando sto scrivendo del codice e mi trovo di fronte a una domanda di cui non conosco la risposta. Non ho mai incontrato la necessità di scrivere dati in file mentre scrivevo i miei codici precedenti, quindi è un argomento totalmente nuovo per me.
Dimmi, la mia idea non può essere realizzata in modo più semplice, senza scriverla su un file? Come nel mio codice. Questo non è un codice funzionante ma per illustrare la mia idea di come trovare il minimo tra due ordini adiacenti aperti su una candela al minuto
Grazie per l'aiuto.

double P[60],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick()
{
Tick++;

if (OrdersTotal()==1&&Tick<2189)
{
P[x]=Bid;
Print("------------------------P[x]=Bid------------------------=", DoubleToString(P[x],5), "  x ",  x);
x++;
}
if (OrdersTotal()==2&&Tick==2189)
{
x1=x;
x=0;
ArraySort(P,WHOLE_ARRAY,0,MODE_ASCEND);
T=(60-x1);
Print("------------------------МИНИМУМ=------------------------=",DoubleToString(P[T],5), "  Tick ",  Tick, "  x1 ",  x);
}

if (Tick==2176||Tick==2188)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+300*Point,Ask-100*Point,"300",0);
G2=G;
G=Tick;
}
}

Cioè, ho scritto il prezzo di ogni tick direttamente nell'array, non in un file.

 
ANDREY:

Grazie per l'aiuto e le nuove informazioni per me. Ma mi ha colpito e ho trovato un modo molto più semplice ....
1. Mentre apro il primo ordine su una candela al minuto, memorizzo nella variabile X il BASSO di quella candela al momento dell'apertura di questo primo ordine.
2. Quando si apre una candela zero (la candela successiva a quella su cui si è aperto l'ordine), ottengo LoY[1]
. Poi giro la logica e concludo
1. Se X = LoY[1], allora l'ordine è stato aperto dopo ilLoY della candela su cui è stato aperto
2
. Se LoY[1]< X, significa che il prezzo è sceso ancora una volta dopo l'apertura dell'ordine ed era inferiore a X. Significa che l'ordine è stato aperto prima della formazione di LoY[] sulla candela data

Puoi controllare l'ora ma stai aspettando un nuovo ordine e poi chiedere il tick massimo o minimo.