[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 488

 

Duplicherò la domanda, forse nessuno l'ha notato a causa delle domande successive.

Ho deciso di capire come funziona l'indicatoreATR e, allo stesso tempo, di studiare il suo codice. Ne ho capito l'essenza, ma è scritto in modo strano.

Ecco la sua funzione diavvio:

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

Ecco il primo blocco con un po' di confusione:

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

Che senso ha fare qualcosa se il valore counted_bars <1. Secondo me, significa che l'indicatore non ha contato nessuna barra e dovrei semplicemente uscire dalla funzione perché non c'è ancora nessun valore... Qual è la fregatura?

PerchéAtrBuffer ha l'indice[Bars-i]? Ho capito che l'idea è di impostare il buffer a 0,0 se non ci sono valori. Ma si scopre che il valore 0.0 è definito solo per le barre da(Bars) a(AtrPeriod), mentre daAtrPeriod allabarra 0-esima non viene scritto nulla nel buffer. Perché?

Non capisco la logica di questo frammento di codice

Nel prossimo blocco:

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

Nella linea:

if(i==Bars-1) TempBuffer[i]=high-low;

Condizione sei==Bars-1. Sembra che il valore dellaprimabarra dall'inizio del grafico a sinistra sia preso in considerazione...Ma questo è molto lontano, a cosa serve questo valore?

 
hoz:

Duplicherò la domanda, forse nessuno l'ha notato a causa delle domande successive.

Ho deciso di capire come funziona l'indicatoreATR e, allo stesso tempo, di studiare il suo codice. Ne ho capito l'essenza, ma è scritto in modo strano.

Ecco la sua funzione diavvio:

Ecco il primo blocco con un po' di confusione:

Che senso ha fare qualcosa se il valore counted_bars <1. Secondo me, significa che l'indicatore non ha contato nessuna barra e dovrei semplicemente uscire dalla funzione perché non ci sono ancora valori... Qual è la fregatura?

PerchéAtrBuffer ha l'indice[Bars-i]? Ho capito che l'idea è di impostare il buffer a 0,0 se non ci sono valori. Ma si scopre che il valore 0.0 è definito solo per le barre da(Bars) a(AtrPeriod), mentre daAtrPeriod allabarra 0-esima non viene scritto nulla nel buffer. Perché?

Non capisco la logica di questo frammento di codice

Nel prossimo blocco:

Nella linea:

Condizione sei==Bars-1. Sembra che il valore dellaprimabarra dall'inizio del grafico a sinistra sia preso in considerazione...Ma questo è molto lontano, a cosa serve questo valore?


Le barre sono contate da destra a sinistra (da 0 all'ultima (Bars) meno 1). Ad ogni nuova barra (0) tutte le barre sono corrispondentemente aumentate di uno, e l'ultima (a sinistra) non è mai specificata in termini numerici, e questa variabile Bars, perché nessuno sa che storia avete, ma garantisce il lavoro dell'indicatore su tutta la storia, che ha. Allena la tua logica, non c'è modo di capire nulla senza di essa!
 
laveosa:
Ho 1 pip-1 cent. significa che ho bisogno di 20USD per essere in grado di sopportare uno stop al ribasso di 200 pips?
Se un lotto di 0,01 punti = 1 centesimo, allora per una posizione di 0,1 lotti con uno stop loss di 200 pips = 20 USD.
 
borilunad:

Le barre sono contate da destra a sinistra (da 0 all'ultima (Bars) meno 1). Ad ogni nuova barra (0) tutte le barre sono corrispondentemente aumentate di una, e l'ultima (sinistra) non è mai specificata numericamente, e questa variabile Bars, perché nessuno sa che storia avete, ma garantisce il lavoro dell'indicatore su tutta la storia, che ha. Allena la tua logica, non c'è modo di capire nulla senza di essa!

So che le barre si contano da destra a sinistra. Se ci sono 5000 barre sul grafico e il periodo ATR = 14, allora[Bars-i] prenderà il valore da (5000 - 1) a (5000 - 14), cioè da 4999 a 4986.

Cosìl'AtrBuffer sarà con indice i uguale a 4999 a 4986. E dove sono le barre rimanenti da 0 a 4986?

 
hoz:

So che le barre si contano da destra a sinistra. Se ci sono 5000 barre sul grafico e il periodo ATR = 14, allora[Bars-i] prenderà il valore da (5000 - 1) a (5000 - 14), cioè da 4999 a 4986.

Cosìl'AtrBuffer sarà con indice i uguale a 4999 a 4986. E dove sono le altre barre da 0 a 4986?


Come si calcola? Se il periodo ATR = 14, allora la barra zero dà la media delle 14 barre prima della barra zero e così via nella profondità della storia.

La i va sopra le 14 barre ultime in tempo ma le prime in numeri per fare la media o cosa fare con la formula. Conta anche il valore della 4986a barra per le 14 barre precedenti nel tempo, cioè per quelle che stanno a sinistra.

Studiate l'operatore for in Doc e nel tutorial!

 
borilunad:


Come si calcola? Se il periodo ATR = 14, allora la barra zero dà il valore medio delle 14 barre prima della barra zero e così via nella profondità della storia.

i va sopra il 14-bar ultima volta, ma sopra il primo per numero di media loro o cosa fare dalla formula. Conta anche il valore della 4986esima barra per l'ultima 14 barre in tempo, cioè per quelle che stanno a sinistra.

Studiate l'operatore for in Doc e il tutorial!

Non era questa la domanda, quello che hai detto lo capisco. Sono stato io che ho lavorato troppo e sono stato stupido. C'era un problema nel fatto che il bufferAtrPeriod passa il numero di barre della storia... Lo stavo guardando e non l'ho capito. Divento così quando lavoro troppo...
 
hoz:

Victor, le tue ipotesi sono illogiche.

Se l'indicatore non ha elaborato una sola barra, significa che dovrebbe elaborare tutte le barre e non terminare il programma.

E i valori degli indicatori sulla storia sono necessari per analizzare la storia:)

 
Stimati professionisti, uno spread EA matodizzato di 4 quando si testano tutti i tick su 5 minuti è ancora cattivo, o è più o meno?
 
kakin:
Cari professionisti, il 4 spread di un EA in un test di 5 min tutti i tick è ancora male, o è più o meno?

Non ci sono molte informazioni e i professionisti dormono:)
 
paladin80:
Se 0,01 lotto = 1 centesimo, allora per una posizione di 0,1 lotto con uno stop loss di 200 pips = 20 USD.
grazie amico ho pensato così...... grazie :)
Motivazione: