esperto basato sulla teoria dell'onda di Elliott - pagina 12

 
Yurixx:
Intero:
Yurixx:


Immaginate un semplice TS basato su un oscillatore normalizzato: ai massimi vendiamo e ai minimi compriamo. Quindi, è sufficiente identificare l'estremo al momento giusto per fare trading con successo. Semplice, vero? E sicuramente abbastanza. Puoi farlo velocemente (non molto velocemente)? O almeno farlo e basta?


Può e molto e veloce.


Grande! Poi lancia un indicatore RSI(14,Close) su EURUSD, M1 e risolvi il problema di identificare senza ritardi gli estremi RSI.

L'ampiezza del cambiamento RSI tra gli estremi adiacenti dovrebbe essere almeno 25.


Formulare il problema in modo accurato e completo. Se è risolvibile teoricamente, lo è anche praticamente. Una volta che il problema è formulato correttamente, possono essere tutti risolti (e lo si può fare da soli). In questo problema, il criterio di identificazione di un estremo è l'arretramento di un valore di 25 unità, cioè l'identificazione con tale criterio senza un ritardo non può essere risolta teoricamente. Se si definisce il criterio - più di 25 a sinistra e più di 5 ma meno di 10 a destra - il ritardo sarà minore ma i falsi segnali saranno maggiori.

 
//+------------------------------------------------------------------+
//|                                                     toYurixx.mq4 |
//|                                                                * |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright "*"
#property link      "*"
 
#property indicator_separate_window
#property indicator_maximum 100
#property indicator_minimum 0
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Red
//---- input parameters
extern int       RightMore=5;
extern int       RightLess=10;
extern int       LeftMore=25;
 
 
//---- buffers
double rsi[];
double u[];
double l[];
 
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,rsi);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,159);
   SetIndexBuffer(1,u);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,159);
   SetIndexBuffer(2,l);
   SetIndexEmptyValue(2,0.0);
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    limit=Bars-IndicatorCounted();
      for(int i=0;i<limit;i++){
         rsi[i]=iRSI(NULL,0,14,0,i);
      }
      ArrayInitialize(u,EMPTY_VALUE);
      ArrayInitialize(l,EMPTY_VALUE);      
      for(i=Bars-1;i>=0;i--){
         double max=rsi[i];
         int maxb;
         for(int j=i;j<Bars;j++){
               if(rsi[j]>max){
                  max=rsi[j];
                  maxb=j;
               }
               if(max-rsi[i]>RightLess){
                  break;//не состоялся
               }
               if(max-rsi[j]>LeftMore){
                     if(max-rsi[i]>RightMore){//нашли
                        u[maxb]=rsi[maxb];
                     }
                  break;
               }
         }
         
         max=rsi[i];
         for(j=i;j<Bars;j++){
               if(rsi[j]<max){
                  max=rsi[j];
                  maxb=j;
               }
               if(rsi[i]-max>RightLess){
                  break;//не состоялся
               }
               if(rsi[j]-max>LeftMore){
                     if(rsi[i]-max>RightMore){//нашли
                        l[maxb]=rsi[maxb];
                     }
                  break;
               }
         }         
         
      }
      
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Totale 23.06.2007 01:45 - 23.06.2007 01:08 = 37 minuti mi ci sono voluti per risolvere il problema, ma ho anche preso un caffè per questo tempo. Dovrei anche introdurre il criterio del numero di barre a sinistra dell'estremo e a destra.

 
Integer:
Yurixx:


Grande! Allora lanciamo l'indicatore RSI(14,Close) su EURUSD, M1 e risolviamo il problema dell'identificazione senza ritardo degli estremi RSI.

L'ampiezza del cambiamento RSI tra estremi adiacenti deve essere almeno 25.


Formulare il problema in modo accurato e completo. Se è risolvibile teoricamente, lo è anche praticamente. Una volta che il problema è formulato correttamente, possono essere tutti risolti (e lo si può fare da soli). In questo problema, il criterio di identificazione di un estremo è l'arretramento di un valore di 25 unità, cioè l'identificazione con tale criterio senza un ritardo non può essere risolta teoricamente. Se si definisce il criterio - più di 25 a sinistra e più di 5 ma meno di 10 a destra - il ritardo sarà minore ma i falsi segnali saranno maggiori.


Grazie, naturalmente, per il codice, ma è, come lei stesso capisce, non la soluzione e non il problema.

Forse l'ho detto in modo troppo succinto, ma in realtà è un'affermazione abbastanza corretta. Può essere più lungo. Ciò che è necessario è la procedura di identificazione di un estremo locale che opera in tempo reale piuttosto che sulla storia. Identificazione significa determinare, al completamento di una barra, se il punto appropriato del grafico indicatore è un punto di estremo locale. Un estremo locale è un estremo che ha un cambiamento sia a destra che a sinistra del valore dell'indicatore di almeno 25,0

Nella misura in cui il prossimo cambiamento dell'indicatore a destra del punto estremo previsto è sconosciuto al momento del completamento della barra, si tratta di una previsione ottimale del comportamento dell'indicatore. Questa previsione non è un'estrapolazione poiché i valori dell'indicatore a destra del punto estremo non sono di interesse. L'unica condizione è la condizione di estremo, cioè i valori dell'indicatore cambieranno del valore condizionato. La previsione ottimale è intesa in senso statistico, cioè la previsione dovrebbe avere un'affidabilità sufficientemente alta.

Formalmente sembra tutto diverso, ma non ho detto nulla di nuovo per voi. Tutto questo è già presente in tre parole "identificazione senza ritardo".

Vorrei attirare la vostra attenzione sul fatto che uno script elementare per la ricerca di estremi con proprietà date su una storia co-frammentata avrebbe potuto essere scritto in modo più conciso e semplice. I loop annidati sono un costoso overkill e diventeranno un collo di bottiglia per i grandi array. Tutto questo può essere fatto in una sola volta, cioè un solo nuovo valore può essere calcolato per ogni nuova barra, senza alcun ciclo. E siccome avete progettato il vostro script come un indicatore, farete un loop su ogni nuova barra attraverso tutta la storia precedente - il tempo di calcolo aumenta di Bars*Bars/2 volte. E, se usate il ciclo nel ciclo, non ha senso iniziare il ciclo su j da j=i.

Non ho esaminato il tuo codice in dettaglio e non l'ho guardato sul grafico, ma mi sembra che contenga un errore significativo: cambia il suo stesso risultato. Per esempio, se il punto è un punto estremo per alcuni i, può non essere più un punto estremo quando si passa a (i+1) o oltre. Questo è però il risultato della condizione imposta da voi: più di 5, meno di 10.

Per la maggior parte della storia non ha importanza. Tuttavia lo fa per il bordo destro, e conta molto. Quell'estremo identificato dal tuo script a sinistra della barra zero può svanire alla barra successiva, il che non è buono. :-))

 
Yurixx:


1. Grazie, naturalmente, per il codice, ma questo, come lei stesso capisce, non è la soluzione e non è il problema.

Forse l'ho detto in modo troppo succinto, ma in realtà è un'affermazione abbastanza giusta. Potrebbe essere più lungo. Ciò che è necessario è la procedura di identificazione di un estremo locale, che opera in tempo reale, non sulla storia. Identificazione significa determinare, al completamento di una barra, se il punto appropriato del grafico indicatore è un punto di estremo locale. Un estremo locale è un estremo che ha un cambiamento sia a destra che a sinistra del valore dell'indicatore di almeno 25,0

Nella misura in cui il prossimo cambiamento dell'indicatore a destra del punto estremo previsto è sconosciuto al momento del completamento della barra, si tratta di una previsione ottimale del comportamento dell'indicatore. Questa previsione non è un'estrapolazione poiché i valori dell'indicatore a destra del punto estremo non sono di interesse. L'unica condizione è la condizione di estremo, cioè i valori dell'indicatore cambieranno del valore condizionato. La previsione ottimale è intesa in senso statistico, cioè la previsione dovrebbe avere un'affidabilità sufficientemente alta.

Formalmente sembra tutto diverso, ma non ho detto nulla di nuovo per voi. Tutto questo è già presente in tre parole "identificazione senza ritardo".

2. Vorrei attirare la vostra attenzione sul fatto che uno script elementare per cercare gli estremi con proprietà date su una storia soframata avrebbe potuto essere scritto in modo più succinto e semplice. I loop annidati sono un costoso overkill e diventeranno un collo di bottiglia per i grandi array. Tutto questo può essere fatto in una sola volta, cioè un solo nuovo valore può essere calcolato per ogni nuova barra, senza alcun ciclo. E dato che avete progettato il vostro script come un indicatore, farete un loop su ogni nuova barra attraverso tutta la storia precedente - il tempo di calcolo aumenta di Bars*Bars/2 volte. E se usate un ciclo in un ciclo, non ha senso iniziare il ciclo su j da j=i.

3. Non ho trattato il tuo codice in dettaglio e non l'ho guardato sul grafico, ma mi sembra che contenga un errore significativo: cambia il suo stesso risultato. Per esempio, se il punto è un punto estremo per alcuni i, può non essere più un punto estremo quando si passa a (i+1) o oltre. Questo è però il risultato della condizione imposta da voi: più di 5, meno di 10.

Per la maggior parte della storia non ha importanza. Tuttavia lo fa per il bordo destro, e conta molto. Quell'estremo identificato dal tuo script a sinistra della barra zero può svanire alla barra successiva, il che non è buono. :-))

1. Il compito era quello di identificare gli estremi, non di PREVENIRE la loro comparsa. In breve, ponzi economici .... ...non poteva prevedere. ... È come dire: datemi un graal in modo che non ci siano alci e 1000%. Questo è esattamente quello di cui stavo scrivendo - il compito deve prima avere un'unica soluzione teorica e poi viene implementato nel codice. Ma la previsione non ha una soluzione a valore unico.

Per identificazione, intendiamo definire se il punto corrispondente del grafico indicatore è un punto di estremo locale dopo la fine della barra - Non confondete la benedizione di Dio con un uovo - identificazione e previsione.

"identificazione senza ritardo" - anche in questo caso. L'identificazione senza ritardo significa l'identificazione nel primissimo momento in cui la situazione è identificata in modo inequivocabile.

2. Dimostrate e vedremo.

Bars*Bars/2 volte - ovviamente non capisci nemmeno come funziona, o non conosci il significato dell'operatore break;

non ha senso iniziare il ciclo su j dal valore j=i - ma quale allora? Questa è una domanda molto interessante per voi!!!!

Non ho trattato il tuo codice in dettaglio e non l'ho guardato graficamente, ma mi sembra che contenga un errore significativo: cambia il suo stesso risultato.

3. Notate che cambia le sue letture solo in funzione della barra zero, non ancora formata. E tutti gli indicatori cambiano il loro ultimo valore in base al valore della barra dello zero. Avete mai visto l'indicatore Fractals (costruito in MT (Menu principale - Indicatori - Bill Williams - Fractals)) - Date un'occhiata, è molto interessante e affascinante, e potrebbe anche essere utile per voi un giorno. Il calcolo dei cambiamenti sulla barra dello zero durante la programmazione degli indicatori è almeno una regola di buona educazione, se non una regola inviolabile della loro programmazione. La prima barra è di solito limitato a molto inesperto, non molto in profondità l'essenza dell'indicatore.

Non ho mai detto che l'algoritmo è perfetto, c'è una grande riserva per la sua accelerazione, possiamo limitare il calcolo di un indicatore solo a una nuova barra. Ma inizialmente il compito era solo quello di identificare un estremo con il criterio di cambiare il valore dell'indicatore di un valore specificato ed è stato risolto, se ignoriamo le vostre battute a buon mercato con la sostituzione delle nozioni di identificazione e previsione.

 
Integer:

... ponce a buon mercato ....


Come ti piace. :-)

Intero:

Quando si sa cosa si vuole, lo si fa molto rapidamente.

Apparentemente c'è stata una sostituzione tra "si sa cosa si vuole" e "una soluzione teorica". I tuoi concetti, a proposito.

 
È un buon argomento, è un peccato che si sia esaurito.
Per i programmatori professionisti, raccomanderei di scavare la DLL dai prodotti Elliottician. Scrivono le loro creazioni in VisualBasic, ma le librerie hanno una descrizione di onde e paterne con le solite nozioni di alto, vicino, ecc. Inoltre, le ultime versioni di RET contengono un plugin per Forex. E smontare la DLL con la base di onde degli ultimi 15 anni è molto allettante!
 
Bookkeeper:

Domanda: è possibile adattare la strategia a un pipsetting rischioso e aggressivo non sul reale,

ma solo su demo? La domanda non è solo una domanda. È possibile con un'entrata spinta o con tutto il coraggio.

Penso che sia possibile, date un'occhiata all'applicazione.

Ho aumentato il mio deposito del 900% in una settimana.

I miei saluti,

Alex Niroba.

File:
statement.zip  9 kb
 
NYROBA >> :

Penso che sia possibile, date un'occhiata all'applicazione.

Ho aumentato la mia depo del 900% in una settimana.

Saluti,

Alex Niroba.

Sì... Una lunga storia, però.

;)

 
divenetz >>:
Хорошая тема, жаль выдохлась.
Для профпрограммистов я бы порекомендовал поковырять DLL от продуктов Elliottician. Они пишут свои творения на ВижуалВасике, но в библиотеках есть описание волн и патернов обычными понятиями high, close и пр. Тем более что последние версии RET содержат плагин для Forex. А разобрать DLL с базой волн за последние 15 лет - очень заманчиво!

RET è una merda. Meglio modern75.nls per disassemblare da ElWave (soprattutto perché è un file aperto). RET è quasi lo stesso di winwaves32 banale.

Motivazione: