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

 
Sepulca:


Ecco, sembra che stia disegnando qualcosa.

Anche se forse non ho completamente

comprendere appieno il significato dell'indicatore

Il punto è che se c'è una caduta o un aumento non superiore a 50 pips, l'indicatore non dovrebbe cambiare dal valore precedente,

che abbiamo registrato se non c'è stato alcun overshoot. E ad ogni spunta la confrontiamo.

Se non c'è un eccesso, viene disegnata una linea retta; se c'è un eccesso, l'indicatore ottiene il valore corrente.

Circa.

il codice qui sotto. Ma quando lo eseguo nel tester vedo che mostra cose diverse nella vita reale. Inizia a deviare quando non c'è eccesso

degli stessi 50 punti. Posso vedere che ritarda soprattutto sull'aumento e comincia a cambiare attraverso la barra.

Ho fatto un errore da qualche parte, non so dove.

//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
  static double MA_otshet; 
  for(int i=0;i<limit;i++)
   {    
      MA_1_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t;
      raznica_static=MA_1_t-MA_otshet;
      if(raznica_static > -0.005 && raznica_static < 0.005)
      {
      ExtMapBuffer1[i]=MA_otshet;
      }
      else
      if(raznica > -0.005 && raznica < 0.005)
      {
      ExtMapBuffer1[i]=MA_2_t;
      MA_otshet=MA_2_t;
      }
      if((raznica > 0.005) || (raznica <- 0.005))
      {
      ExtMapBuffer1[i]=MA_1_t;
      }  
   } 
   return(0);
  }
//+------------------------------------------------------------------+
 
ALXIMIKS:


Mi stai prendendo in giro? Le linee tratteggiate non hanno uno spessore diverso da quello standard (e nella documentazione da qualche parte è stato scritto, non posso specificare il posto, ma ricordo che ho letto)

Noi dimostriamo:

1) gettare una maschera normale

2) inserire le proprietà "Colori

3) imposta il tipo di linea - linea tratteggiata

4) Selezionare lo spessore 2-5.

Risultato: una linea tratteggiata diventa una linea normale.

Beh, questo è quello che sto scrivendo senza la linea tratteggiata.
 
XuMuk:
Ciao a tutti!!! Ho provato a scrivere io stesso un semplice esperto. Ma sorge qualche problema che non capisco. Ecco un semplice oscilloscopio che ho preso in un libro. Lo compilo e non viene visualizzato nulla. Anche se, se si mette "-" al posto della divisione nel ciclo while, tutto funziona.

Ecco, disegna anche

#property indicator_buffers 1
#property indicator_separate_window
extern int Period_valroc=10;
double Line0[];
int init()
  {
   SetIndexBuffer(0,Line0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Magenta);

   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i,Counted_bars=1000+Period_valroc;
    for (i=Counted_bars-1-Period_valroc; i>=0;i--)
      {
        Line0[i]=100*(Close[i]/Close[i+Period_valroc]);
//        i--;
      }
//----
   return(0);
  }

viola il tuo tacchino)))

 

Sera.

Ho deciso di scaricare lo storico, c'era solo un anno di USD|JPY.

Si è rivelata una cattiva idea, ho ottenuto un grafico molliccio.

Come tornare all'inizio :(?

DoC: F r o u r !

Grazie!

 
Forexman77:

Il punto è che se c'è una caduta o un aumento di non più di 50 pip, l'indicatore non dovrebbe cambiare dal valore precedente,

che abbiamo registrato se non c'è stato alcun overshoot. E ad ogni spunta lo confrontiamo.

Se non c'è un eccesso, viene disegnata una linea retta; se c'è un eccesso, l'indicatore ottiene il valore corrente.

Circa.

il codice qui sotto. Ma quando lo eseguo nel tester vedo che mostra cose diverse nella vita reale. Inizia a deviare quando non c'è eccesso

degli stessi 50 punti. Posso vedere che ritarda soprattutto sull'aumento e comincia a cambiare attraverso la barra.

Ho fatto un errore da qualche parte, non so dove.


A prima vista, va bene. L'unica cosa è che io, per esempio, preferisco i cicli di barre dal passato al futuro: meno opportunità di cambiare i valori degli indicatori nel corso della storia. Il ritardo potrebbe essere dovuto all'uso di un muving (hai un periodo di 7) e le "chiacchiere" potrebbero essere dovute all'uso del prezzo di chiusura della barra zero - cambia costantemente nel corso della barra.
 
VladislavVG:

A prima vista, tutto è normale. L'unica cosa che io, per esempio, preferisco i cicli di barre dal passato al futuro: meno possibilità di cambiare i valori dell'indicatore nel corso della storia. Il ritardo può essere collegato all'uso di un muving (hai un muving a 7 periodi), e il "chattering" - con l'uso del prezzo di chiusura della barra zero - cambia costantemente durante la barra.

Ha reso le condizioni del ciclo

for(int i=Bars-1;i>=0;i--)

Velocità di prova significativamente ridotta.

Per controllare, ho aggiunto un muving a 7 periodi al tester. Ci sono deviazioni di 50 punti, ma l'indicatore non cambia immediatamente.

 
Forexman77:

Ha reso le condizioni del ciclo

Ha ridotto significativamente la velocità del test.



  for(int i=limit-1;i>=0;i--)

Il resto è lo stesso della vostra versione.

Inoltre, IMHO, non si dovrebbero usare valori assoluti quando si confrontano - 0,005 - meglio 50*Punto. Altrimenti otterrete risultati diversi su coppie diverse.

 
VladislavVG:

Il resto è lo stesso della vostra versione.

E inoltre, IMHO, non si dovrebbero usare valori assoluti quando si confrontano - 0,005 - meglio 50*Punto. Altrimenti si otterranno risultati diversi a coppie diverse.

Grazie! Sembra funzionare.

Avete incontrato qualcosa di simile? Chi può aver attuato questa idea?

Ho trovato l'indicatore scorrevole e lo zigzag di Kaufman. Fondamentalmente l'indicatore zigzag è fatto in modo simile.

 
Forexman77:

Grazie! Sembra funzionare.

Vi siete imbattuti in qualcosa di simile? Forse qualcuno ha implementato questa idea?

Finora ho trovato l'indicatore di scorrimento e di zigzag di Kaufman. Fondamentalmente l'indicatore zigzag è fatto in modo simile.



No, non ho visto niente del genere.
 
fozi:

Sera.

Ho deciso di scaricare lo storico, c'era solo un anno di USD|JPY.

Si è rivelata una cattiva idea, ho ottenuto un grafico molliccio.

Come tornare all'inizio :(?

DoC: F r o u r !

Grazie!

Se cliccate con il tasto destro del mouse sul grafico e selezionate "refresh" ?