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

 
ALXIMIKS:
Guardate questo articolo, non è così semplice come sembra, e in generale è abbastanza utile.

Ho dato un'occhiata. mi ci vorrà una settimana per studiarlo in dettaglio. ma quel che è peggio, non sono riuscito a trovare nessun posto che sia in relazione con il mio compito. non coloro gli indicatori, e non li modifico in alcun modo. voglio solo trovare i massimi e i minimi su n-ultime barre. c'è un accenno di somiglianza in RSI_Extremums_Sample.mq4 ma non posso fare quel codice. ci sono molte cose inutili, l'indicatore disegna.... e non ne ho bisogno...
 
lottamer:

l'ho guardato. mi ci vorrà una settimana per studiarlo in dettaglio. ma quel che è peggio, non ho trovato nessun posto che sia rilevante per il mio compito. non coloro gli indicatori, e non li modifico in alcun modo. voglio solo trovare massimi e minimi su n-ultime barre. c'è un accenno di somiglianza in RSI_Extremums_Sample.mq4 ma non posso gestire questo codice. è troppo inutile, l'indicatore REWRITES.... e non ne ho bisogno...


3173
artmedia70 27.10.2013 15:42 #
Forexman77:

È possibile con la funzione "ArrayMaximum", calcolare il massimo più vicino di un indicatore personalizzato?

O ho bisogno di altre funzioni per questo?

Ho provato in questo modo:

E non viene fuori niente. Guru, potete dirmi come fare?

   for (i=2; i<nBars; i++) {                    
      double a=iCustom(NULL, 0, "EMAF",0,0,i+1);
      double b=iCustom(NULL, 0, "EMAF",0,0,i);
      double c=iCustom(NULL, 0, "EMAF",0,0,i-1);
      if ((a-b)*(b-c)<0) {
         if (b<c) {                                
            // Нашли донышко
            }
         if (b>c) {                           
            // Нашли пичок
            }
         }
      }   
Per cercare nell'EA. NON in un indicatore.

 
lottamer:

L'unica cosa che non capisco è come calcolare gli estremi dell'indicatore MACD, per esempio, invece degli estremi del prezzo su n periodi?

Penso di dover cambiare HIGH e LOW in MACD nel blocco chiave... Ma non capisco come ... tutti i miei tentativi di scherzare sono finiti in nullità.

Ho capito che devo creare un array MACD...

doppio MACDBuffer[];

Ho anche visto una tale stringa in altri Expert Advisors

ma non posso misurarne uno sull'altro...

Per favore, consigliate come fare?


Articolo.
 

ha trovato qualcosa di simile in Kim's

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение максимального элемента массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMax(double& x[]) {
  if (ArraySize(x)>0) return(x[ArrayMaximum(x)]);
  else {
    Print("ArrayMax(): Массив пуст!");
    return(0);
  }
}

domanda: come faccio a creare un array di valori di indicatori?

 
lottamer:

ha trovato qualcosa di simile in Kim's

Domanda: come faccio a creare un array di valori di indicatori?

Ho riletto ciò che è stato chiesto, ho sbagliato all'inizio (

per ottenere un buffer di dati dell'indicatore, è possibile

1) eseguire un ciclo con la raccolta di valori iMACD nel buffer

2) prendere il codice sorgente del MACD, c'è un buffer lì

int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
      MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
   return(0);
  }
 
ALXIMIKS:

rileggere ciò che è stato chiesto, ho sbagliato all'inizio(

Per ottenere un buffer con i dati di un indicatore è possibile:

1) eseguire un ciclo con la raccolta di valori iMACD nel buffer

2) prendere il codice sorgente dal MACD dove si trova il buffer


Come faccio a visualizzare il buffer, altrimenti non capisco cosa farci....

Print(MACDBuffer[1]); ?? stampa zero... perché? in teoria dovrebbe essere il valore della prima barra....

e un'altra cosa... perché calcolare il MACD usando la MA quando c'è una funzione diretta iMACD?

 
lottamer:


e come faccio a visualizzare il buffer altrimenti non capisco cosa farci....

Print(MACDBuffer[1]); ?? stampa zero... perché? dovrebbe essere il valore della prima barra....

e un'altra cosa... perché calcolare il MACD usando la MA, quando c'è una funzione diretta iMACD?


Per favore, ditemi di cosa avete bisogno,

ma dovrebbe essere più chiaro, in modo che anche una persona stupida possa capirlo.

 
ALXIMIKS:


Per favore, ditemi cosa volete,

ma in modo chiaro, in modo che anche lo stupido capisca.

Ho bisogno di determinare i valori minimi (come nell'immagine) e massimi dell'indicatore MACD per un dato numero di barre. (20 in questo caso).

Ho trovato il codice che fa questo per il prezzo, e stupidamente ho provato a sostituire HIGH LOW con MACD. ma niente ha funzionato....



 
artmedia70:
È compito dei DC dare una buona storia. Sono pigri e danno sempre la colpa agli MC.


Grazie!
 
lottamer:

Ho bisogno di determinare il valore minimo (come mostrato nell'immagine) e massimo dell'indicatore MACD per un dato numero di barre. (20 in questo caso).

Ho trovato un codice che fa questo per il prezzo, e stupidamente ho provato a sostituire HIGH LOW con MACD. ma niente ha funzionato....

Inserire alla fine del MACD personalizzato.
   int max,min,maxlast,minlast;
   max = ArrayMaximum(MacdBuffer,20,1);
   min = ArrayMinimum(MacdBuffer,20,1);
   if (max!=maxlast){
      ObjectDelete  ("highline");   
      ObjectCreate  ("highline",1,WindowOnDropped( ) ,0,MacdBuffer[max],0,0);
   }
   if (min!=minlast){
      ObjectDelete  ("lowline");   
      ObjectCreate  ("lowline",1,WindowOnDropped( ) ,0,MacdBuffer[min],0,0);
   }

PS. anche se questo è più corretto e migliore:

   int max,min;
   static double maxlast,minlast;
   max = ArrayMaximum(MacdBuffer,20,1);
   min = ArrayMinimum(MacdBuffer,20,1);
   if (MacdBuffer[max]!=maxlast){
      maxlast=MacdBuffer[max];
      ObjectDelete  ("highline");   
      ObjectCreate ("highline",1,WindowOnDropped( ) ,0,MacdBuffer[max],0,0);
   }
   if (MacdBuffer[min]!=minlast){
      minlast=MacdBuffer[min];
      ObjectDelete  ("lowline");   
      ObjectCreate ("lowline",1,WindowOnDropped( ) ,0,MacdBuffer[min],0,0);
   }