Quando ha senso mantenere parte del codice del robot in un indicatore? - pagina 34

 
TheXpert:

Idea sbagliata #1: si può fare a meno di IndicatorCounted()

Un indicatore con esso:

Senza di esso, secondo il principio di hrenfx

Poi applichiamo gli indici al grafico ed emuliamo la perdita di connessione mentre l'automa è in funzione. Risultato:




È così. Pertanto, evito di usare caratteristiche che non saranno utili in seguito (quando si sviluppa un EA).

Non credo nell'elettricità e preferisco fare tutto da solo. E questa funzione non la capisco.

 
sergeev:


E puoi postare le ricerche e le verifiche di questa congettura?

Ha fatto solo qualche esperimento con la rottura della connessione. Non ho fatto un'analisi completa della merda degli sviluppatori. Era fastidioso e lungo (ho dovuto farlo non per un minuto o due, ma per almeno una dozzina o due). La mia versione di EA gestisce brevi interruzioni di connessione senza problemi. Tuttavia, la ricerca ha dimostrato che il breve termine (per M1) non è ore, ma minuti (< 10).

Si può scavare a fondo in questo argomento con semplici esperimenti. Non posso ancora affermare il 100%. Forse, non dovremmo chiamare un indicatore vuoto all'inizio, ma l'indicatore con la chiamata di IndicatorCounted().

Mi è venuto in mente un modo veloce per indagare: eseguire diversi terminali in una volta (avrò bisogno di meno di cinque) e su ogni terminale una diversa variante di indagine. Interrompere la comunicazione per un'ora e poi ripristinare. Prendi alcune varianti diverse in una volta sola. Da questi si otterrà l'immagine giusta.

P.S. Avete bisogno di terminali diversi, non di grafici diversi. Deve escludere la variante che IndicatorCounted() è calcolato una volta per tutti gli indicatori nel terminale.

P.P.S. Questa stessa merda è stata notevolmente modificata nelle build > 380. E, a giudicare dalle risposte, sarà cambiato molte volte. Quindi, è quasi senza senso condurre uno studio. Dobbiamo chiedere direttamente agli sviluppatori cosa succede all'indicatore (che contiene la chiamata di IndicatorCounted()) durante il primo tick dopo una lunga pausa di comunicazione.

P.P.P.S. Chiesto.

 
Integer:


Non essere ridicolo. Semplicemente non hai ancora imparato a scrivere indicatori.

Dopo tale eresia:

potrebbe anche astenersi dall'avere un'opinione in questo thread.


Bene, chi e cosa ha imparato a scrivere, penso, si vedrà dall'esterno, per quanto riguarda l'eresia - il livello del vostro pensiero, sembra, a quanto pare, assomigliare alla logica dei fanatici religiosi, con i quali è inutile e assolutamente superfluo discutere. Anche con questa eresia, gli esperti lavorano tre volte più velocemente. Ma personalmente non ho alcun desiderio di arrivare agli estremi, per dimostrare qualcosa a qualcuno, e tanto più per giustificarmi. La qualificazione della mia mente è troppo costosa per sprecarla così miseramente e inefficacemente.
 
I rispettati guru (tutti loro) vorrebbero chiedervi di trattarvi l'un l'altro con più rispetto. Cosa insegnerà ai giovani?
 
TheXpert:

Debunking fallacy #1: si può fare a meno di IndicatorCounted()

Un indicatore con esso:

Senza di esso, secondo il principio di hrenfx

Poi applichiamo gli indici al grafico ed emuliamo la perdita di connessione mentre l'automa è in funzione. Risultato:




IMHO: Il confronto non è corretto: un algoritmo con ricorsione, a parità di altre condizioni, sarà sempre più lento. Per la purezza dell'esperimento, è meglio usare lo stesso algoritmo nell'indicatore e nell'Expert Advisor.

Cosa impedisce all'Expert Advisor di calcolare l'ultima barra calcolata e, se la differenza tra l'attuale numero di barre e l'ultima barra calcolata è più di 1, ricalcolare dalla posizione appropriata, come fa l'indicatore?

 
GODZILLA:

Bene, chi e cosa ha imparato a scrivere, penso, sarà più chiaro dall'esterno, sull'eresia - il livello del vostro pensiero, penso, da tutte le indicazioni, assomiglia vividamente a una logica di fanatici religiosi con i quali è inutile e assolutamente inutile discutere. Anche con questa eresia, gli esperti lavorano tre volte più velocemente. Ma personalmente non ho alcun desiderio di arrivare agli estremi, per dimostrare qualcosa a qualcuno, e tanto più per giustificarmi. La qualificazione della mia mente è troppo costosa per essere sprecata in un modo così miserabile e dispendioso.

È con questa cosa

//---- ЭМУЛЯЦИЯ ИНДИКАТОРНЫХ БУФЕРОВ
  int NewSize = iBars(symbol, timeframe);
  //----  Проверка на смену нулевого бара
  if(ArraySize(Ind_Buffer0) < NewSize)
    {
      //---- Установить прямое направление индексирования в массиве 
      ArraySetAsSeries(Ind_Buffer0, false);
      ArraySetAsSeries(Ind_Buffer1, false);
      ArraySetAsSeries(Ind_Buffer2, false);
      //---- Изменить размер эмулируемых индикаторных буферов 
      ArrayResize(Ind_Buffer0, NewSize); 
      ArrayResize(Ind_Buffer1, NewSize); 
      ArrayResize(Ind_Buffer2, NewSize); 
      //---- Установить обратное направление индексирования в массиве 
      ArraySetAsSeries(Ind_Buffer0, true);
      ArraySetAsSeries(Ind_Buffer1, true);
      ArraySetAsSeries(Ind_Buffer2, true); 
    } 
//----

gli esperti lavorano in fretta? Chi è un fanatico dopo questo? Controllato a lungo, puoi usare la ricerca nel forum.

 
granit77:
I rispettati guru (tutti loro) vorrebbero chiedervi di trattarvi l'un l'altro con più rispetto. Cosa insegnerà ai giovani?

Personalmente, non sono affatto offeso dall'accusa di fanatismo religioso, perché so molto bene chi e cosa sono. Inoltre, una tale accusa è un buon indicatore del livello di pensiero dell'altra parte, un indicatore esaustivo.
 
GODZILLA:
Bene, chi e cosa ha imparato a scrivere, penso, dall'esterno sarà più visibile

Sì, lo vedo perfettamente. La tua credibilità ai miei occhi sta cadendo tre volte più velocemente di prima :)

VladislavVG:

IMHO: Il confronto non è corretto: un algoritmo con ricorsione, a parità di altre condizioni, sarà sempre più lento. Per la purezza dell'esperimento, è meglio usare lo stesso algoritmo nell'indicatore e nell'Expert Advisor.

Il paragone è corretto, perché non è fatto per un confronto di velocità, ma per mostrare chiaramente la scorrettezza del lavoro.

Cosa impedisce all'Expert Advisor di calcolare l'ultima barra calcolata e, se la differenza tra l'attuale numero di barre e l'ultima barra calcolata è più di 1, ricalcolarla dalla posizione appropriata, come fa l'indicatore?

Perché non provi?


L'EA sul primo tick dopo l'apparizione del link si comporta in modo molto diverso dall'indicatore derivato dall'EA.

Lo screenshot qui sopra mostra che dopo la rottura della connessione l'EA (non l'indicatore dell'EA) si confronta con iCustom. L'interruzione della connessione avviene senza problemi.

Ti sbagli di nuovo. L'Expert Advisor si comporta in modo simile. Semplicemente non potete analizzare correttamente i vostri registri. Ho già spiegato l'errore, non voglio ripeterlo.

Suggerimento: cercate alcuni valori dopo la pausa.

granit77:

Rispettati guru (tutti) vorrei chiedervi di trattarvi con più rispetto. Cosa insegnerete ai giovani?

I maîtres non devono portare eresie, questo è uno, e devono essere capaci di ammettere gli errori, questo è due.
 
TheXpert:

Ti sbagli di nuovo. Il consigliere si comporta in modo simile. Semplicemente non potete analizzare correttamente i vostri registri. Ho già spiegato qual è l'errore, non voglio ripeterlo.

Suggerimento: guarda diversi valori dopo lo scarto.

Sì, ho dato uno screenshot solo per un valore dopo la pausa. Naturalmente, ho visto tutti i valori e oltre (non faccio imbrogli, tanto meno imbrogli così stupidi). La coincidenza è completa (non ce l'ha fatta nello screenshot).

Purtroppo, gli sviluppatori non capiscono ancora la possibile utilità di IndicatorCounted() per gli EA (a giudicare dalla loro risposta).

L'indicatore e l'EA sul primo tick dopo il gap (specialmente uno lungo) non si comportano allo stesso modo. Puoi facilmente controllare questo se vuoi.

 
Integer:

Personalmente non mi offendo affatto quando mi si accusa di fanatismo religioso, perché so molto bene chi e cosa sono. Inoltre, una tale accusa è un buon indicatore del livello di pensiero dell'altra parte, un indicatore esaustivo.

Considera il suo pensiero adeguato e non fanatico, se è per questo? Non basta che tu non sia riuscito a dimostrare la tua ipotesi-credenza che lo stesso codice in un indicatore sarà sempre più veloce che in un EA, ma invece hai iniziato una competizione assolutamente poco chiara e senza senso (a proposito, è stato un bene, perché ha portato a una soluzione interessante della rottura della comunicazione nell'EA). A proposito, non ho notato da nessuna parte sul nostro sito che il codice del consulente dovrebbe essere scritto preferibilmente in un indicatore per l'accelerazione delle prestazioni, quindi questa affermazione suona strana, almeno, e penso che sarete d'accordo con essa.

La mia supposizione si basava sulla semplice logica che chiamare una funzione esterna con il passaggio di una copia del buffer e dei parametri richiede più tempo che senza; perché si dovrebbe cercare di negare questo non sono sicuro.

Motivazione: