C Sharp Esponenziale Mobile Media


Una possibile approccio è quello di avere un metodo che restituisce il kernel. Da quello che sono in grado di vedere, gli ingressi a questo metodo sarebbe kerneltype. io. e otherInputs. Un approccio semplice sarebbe: Questo è ovviamente terribilmente, terribilmente rude, e un sacco di miglioramento può essere fatta, ma è destinato a ottenere solo il punto attraverso. Vorrei usare una interfaccia per rappresentare un kernel, e hanno classi derivate per kernel. Nella mia esperienza, che produce codice sufficientemente leggibile e mantenibile, ma c'è sempre spazio per migliorare. risposto ad 1 14 agosto a 20: 39Exponential Media mobile - EMA Abbattere media mobile esponenziale - EMA Il 12 e 26 giorni EMAs sono i più popolari medie a breve termine, e sono utilizzati per creare indicatori come il movimento divergenza media di convergenza ( MACD) e l'oscillatore prezzo percentuale (PPO). In generale, il 50 e 200 giorni EMA sono utilizzati come segnali di tendenze a lungo termine. I commercianti che utilizzano l'analisi tecnica trovano medie mobili molto utili e penetranti se applicato correttamente, ma creano il caos quando viene utilizzato in modo improprio o sono male interpretato. Tutte le medie mobili comunemente utilizzati in analisi tecnica sono, per loro stessa natura, gli indicatori in ritardo di sviluppo. Di conseguenza, le conclusioni tratte da applicare una media mobile a un particolare schema di mercato dovrebbe essere quello di confermare una mossa di mercato o ad indicare la sua forza. Molto spesso, nel momento di una linea dell'indicatore di media mobile ha fatto un cambiamento per riflettere un movimento significativo nel mercato, il punto ottimale di ingresso sul mercato è già passato. Un EMA non serve per alleviare questo dilemma certa misura. Poiché il calcolo EMA mette più peso sui dati più recenti, si abbraccia l'azione dei prezzi un po 'più stretto e quindi reagisce più veloce. Ciò è desiderabile quando un EMA è usato per derivare un segnale di entrata negoziazione. Interpretazione del EMA Come tutti si muovono gli indicatori medi, sono molto più adatti per trend dei mercati. Quando il mercato è in una tendenza rialzista forte e sostenuta. la linea dell'indicatore EMA mostrerà anche una tendenza rialzista e viceversa per un trend verso il basso. Un operatore vigile non solo prestare attenzione alla direzione della linea EMA ma anche il rapporto tra il tasso di variazione da un bar all'altro. Per esempio, come l'azione prezzo di un forte rialzo comincia ad appiattirsi e invertire, il tasso di variazione EMA da un bar all'altro comincerà a diminuire fino al momento che la linea indicatrice appiattisce e il tasso di variazione è zero. A causa dell'effetto ritardo, da questo punto, o anche qualche bar prima, l'azione di prezzo dovrebbe già invertito. Ne consegue che osservare una diminuzione consistente del tasso di variazione della EMA potrebbe esso stesso essere usata come indicatore che potrebbe contrastare ulteriormente il dilemma causato dall'effetto ritardo di media mobile. Utilizzi comuni del EMA EMA sono comunemente usati in combinazione con altri indicatori per confermare significativi movimenti del mercato e di valutare la loro validità. Per gli operatori che commerciano intraday e mercati in rapida evoluzione, l'EMA è più applicabile. Molto spesso i commercianti usano EMAs per determinare un bias di trading. Ad esempio, se un EMA su un grafico giornaliero mostra una forte tendenza al rialzo, una strategia di trader intraday può essere quella di commerciare solo dal lato lungo su un chart. It intraday mi sembra l'uso di ieri EMA quando il suo primo giorno ( e di conseguenza non vi è alcuna ieri) può essere basata su dati diversi, a seconda di quali articoli si legge. Io non sono un esperto di magazzino, in modo da Im solo andando su quello che Ive stato lettura. Ho letto in questo articolo Dummies che ho collegato a, che può essere fatto nel modo che vi ho mostrato e che è quello di iniziare con i primi giorni di valore come quotyesterdays EMAquot di chiusura. È inoltre possibile utilizzare una media dei giorni di chiusura nel periodo (SMA, suppongo). ma mi sembra che viene utilizzato solo per il primo valore calcolato (e usato come quotyesterdays EMAquot nella formula), non è il modo in cui avete fatto esso. Così, nel vostro screenshot dal tuo post precedente, tale valore SMA3 il 1020, 27,733, non sarebbe inserito nella colonna per EMA3 su 1020, ma sarebbe stato utilizzato nel calcolo per EMA3 il 1018 come quotyesterdays EMAquot. Così, mentre il SMA3 ha uno zero per 1018 e 1019, il EMA3 non sarebbe zeri lì. Il EMA3 per quelle 2 date dovrebbe essere 28,017 e 27,909. Così, nel mio codice dove ho in default gli EMAs precedenti per SMVClose, possiamo cambiare come segue: Ancora una volta, questo si basa su quello che ho letto e in questo articolo Dummies dimostra in questo modo troppo. Credo davvero che questo è ciò che si desidera. Bonnie DeWitt C MVP Contrassegnato come risposta da Domenica newandold, 21 dicembre 2014 05:33 Giovedi, 18 dicembre, il 2014 16:52 Questo sarà molto più facile se si modifica il codice per utilizzare ListltEmaDatagt, come ho già detto in un risposta precedente. Heres quello che avevo in precedenza suggerito: gtgtadd le proprietà di SMA a quella classe di dati. Ho chiamato la classe EmaData, ma questo è perché ho pensato che si stava calcolando solo i valori EMA, ma si può andare avanti e aggiungere le proprietà SMA ad esso troppo. Quindi modificare i metodi di utilizzare lo stesso ListltEmaDatagt per calcolare prima SMA e poi EMA (youll probabilmente bisogno cicli multipli lungo l'elenco).ltlt Quindi, una volta che avete in loop attraverso l'elenco e calcolato i valori SMA, quindi utilizzando il valore corretto per SMA la tua EMA di partenza sarà molto più facile. Basta usare lo stesso codice loop ho mostrato in una risposta precedente per calcolare la EMA (ma usare un diverso EMA di partenza sulla base di SMA, invece del modo in cui l'ho fatto). Bonnie DeWitt C MVP Contrassegnato come risposta da Domenica newandold, 21 dicembre 2014 05:33 Venerdì 19 Dicembre 2014 23:28 Ogni volta che vi trovate a dover semplificare il codice, sempre pensare di creare un nuovo metodo per mettere un po 'di codice quello che ho fatto è stato messo il codice ripetitivo in un nuovo metodo:. Così, invece di fare tutto questo in loop originale, youd semplicemente chiamare il nuovo metodo, invece: Isnt che molto più pulito Bonnie DeWitt C MVP Contrassegnato come risposta da newandold Domenica 21 dicembre 2014 05:33 Sabato 20 dicembre 2014 17:44 Tutte le risposte secondo il vostro titolo, è già stato detto in media mobile esponenziale, vuoi dire EMA in PowerPivot. Se è così, c'è un forum speciale per il vostro problema, ecco il link, SQL Server Pivot gt Potenza. gtgt Io provare, ma non ho avuto in C come ho fatto in VB (inoltre è molto molto molto lento in VB) e il risultato in c è diverso quindi VB Così che cosa si vuole raggiungere Si vuole modificare il codice che avete inviato a Cor qualsiasi altra cosa Buona giornata Stiamo cercando di capire meglio di vista dei clienti su esperienza supporto sociale, così la vostra partecipazione a questo progetto intervista sarebbe molto apprezzato se avete tempo. Grazie per averci aiutato a rendere forum della comunità un ottimo posto. Clicca qui per partecipare al sondaggio. Mercoledì 3 Dicembre, 2014 07:03 A proposito vostre domande in sintesi 1. C e il codice VB per la stessa implementazione dell'algoritmo EMA restituisce un risultato diverso. 2. Il codice BB è molto lento. Per la prima domanda. Fa C restituire un risultato errore Se è così si può condividere il codice C come implementare l'algoritmo di EMA di farmi fare un po 'di test locale sarebbe molto apprezzato se si dà informazioni più dettagliate. Per la seconda domanda Stiamo cercando di capire meglio di vista dei clienti su esperienza supporto sociale, così la vostra partecipazione a questo progetto intervista sarebbe molto apprezzato se avete tempo. Grazie per averci aiutato a rendere forum della comunità un ottimo posto. Clicca qui per partecipare al sondaggio. Giovedi, dicembre 04, il 2014 10:17 Im ancora non è sicuro che la tua domanda è, ma ho il sospetto che abbia qualcosa a che fare con il colore delle cellule basato sul confronto di alcuni calcoli penso sei dicendo che il confronto è diverso in C che in VB. L'unica cosa che mi viene in mente di chiederti è: sono i vostri valori memorizzati come doppie doppie o decimali non sono buone quando si effettua il confronto, mentre non avrai quel problema con i decimali. Si dovrebbe sicuramente essere memorizzano i dati come variabili decimali. Ecco un post sul blog ho scritto su questo argomento: Bonnie DeWitt C MVP Friday, December 05, 2014 4:40 periodi di tempo 3 Moltiplicatore: (2 (periodi di tempo 43 1)) EMA x moltiplicatore 43 EMA (giorno precedente) vorrei di applicare EMA formula utilizzando file delimitato txt e visualizzarli in datagridview 1- dal singolo elemento come il flusso 2- da tutti oggetto (otterrà l'ultima manifestazione del record) come flusso dopo il calcolo userò la condizione di flusso per ottenere il colore di il datagridview i dati utilizzando come file txt Continui mostra la stessa roba più e più volte. Che non aiuta nessuno di noi capire esattamente dove youre avere un problema. Potresti spiegare dove sei bloccato e non ripetere le immagini oi dati di nuovo Weve già visto che un paio di volte gazillion. Se i confronti arent destra, che potrebbe avere qualcosa a che fare con il doppio vs decimali, come ho detto prima. Se sei bloccato su come ottenere i dati da un file di testo, quindi quale parte Sei bloccato su se sei bloccato la visualizzazione dei dati in una griglia, allora dove è esattamente il problema se la sua nessuna di queste cose, allora qual è la domanda che dovete risposto Sono sicuro che non im l'unico confuso da questo. Bonnie DeWitt C MVP Venerdì 5 dicembre 2014 22:19 Si continua mostrando le stesse cose più e più volte. Che non aiuta nessuno di noi capire esattamente dove youre avere un problema. Potresti spiegare dove sei bloccato e non ripetere le immagini oi dati di nuovo Weve già visto che un paio di volte gazillion. Se i confronti arent destra, che potrebbe avere qualcosa a che fare con il doppio vs decimali, come ho detto prima. Se sei bloccato su come ottenere i dati da un file di testo, quindi quale parte Sei bloccato su se sei bloccato la visualizzazione dei dati in una griglia, allora dove è esattamente il problema se la sua nessuna di queste cose, allora qual è la domanda che dovete risposto Sono sicuro che non im l'unico confuso da questo. Bonnie DeWitt C MVP come calcolare EMA (media mobile esponenziale) i dati di origine è il file txt virgola Sabato 6 dicembre, 2014 05:24 Capisco la formula ormai dal link che hai postato, la formula in sé è piuttosto semplice. Ma quale parte di questo stai avendo un problema con la lettura dal file di testo o cosa fare con i numeri una volta youve li leggere dal file di testo o come visualizzarli in una griglia come questa. Perché non ci fai vedere parti del codice, in particolare la parte che youre avendo problemi con. Questo potrebbe essere più facile per tutti, in modo che noi non dobbiamo continuare a indovinare su ciò che è necessario sapere. E, solo per il gusto di farlo, ho cercato con Google quotcalculate ema cquot ed ho trovato alcuni link che potrebbero aiutare. Non so per certo, perché non riesco a capire quale parte sei bloccato su, ma check them out: L'ultimo articolo fa uso di una libreria open source gratuito chiamato TA-Lib, Analisi Tecnica Library (C'è un link da cliccare su nella articolo). Bonnie DeWitt C MVP cura di BonnieB MVP, Moderatore Sabato 6 Dicembre 2014 06:06 chiarimento Sabato 6 Dicembre 2014 06:05 Hai provato passando attraverso il codice nel debugger Subito dopo la lettura nel file di testo, il foreach attraverso le linee, il tuo caso: se (ComName SplitString0) sarà sempre falso, youve inizializzati ComName su una stringa vuota. ComSize sarà quindi sempre zero e il vostro prossimo ciclo for non farà nulla neanche. Quindi, theres il problema proprio lì. Ho provato a fare funzionare il codice e la prima cosa che ho fatto è stato impostato un punto di interruzione debugger dopo che leggere nel file di testo. Thats come ho trovato questo problema. Provare a utilizzare il debugger per passare tramite il codice. Essa vi aiuterà a individuare i problemi più facilmente da soli. Bonnie DeWitt C MVP Sabato, 6 dicembre 2014 15:39 Ho modificato il codice unico dello spettacolo ComName nel DataGridView3 e il resto non mostrando ma quando clicco nella cella mostrerà e se clicco su altro mostrerà e il precedente sarà nascosto ancora una volta il risultato che sto ottenendo è SMA (media mobile semplice) non per EMA (media mobile esponenziale) Sabato 6 dicembre 2014 17:26 solo lo spettacolo ComName nel DataGridView3 e il resto non mostrare ma quando clicco nella cella mostrerà e se clicco su altro mostrerà e il precedente sarà nascosto ancora una volta io non vedere che il comportamento. Il tutto si presenta bene nella mia griglia. Nella finestra di progettazione, ho semplicemente lasciato cadere una DataGridView sulla mia forma, andato alle proprietà per la griglia, quindi alla raccolta Colonne e aggiunto le 6 colonne. Non ho fatto niente altro, e il tutto si presenta bene. È necessario essere facendo qualcos'altro in griglia i thats causando il comportamento che si vede, ma non sono sicuro, fuori dalla parte superiore della mia testa, che cosa potrebbe causare questo. Forse le colonne arent abbastanza larga o hai fatto un po 'di formattazione in loro o sono di manovrare in qualsiasi tipo di evento riga o cella che potrebbe fare un po' di cose strane Bonnie DeWitt C MVP Sabato 6 dicembre 2014 17:58 La controllerò grazie Sabato 6 dicembre 2014 06:19 Youre benvenuto. ci tengono postato sul vostro progresso Bonnie DeWitt C MVP Sabato 6 dicembre 2014 22:14 per DataGridView3 sta lavorando ora per la formula non funziona e io proviamo anche questo, ma entrambi non lavorare questo che non posso raggiungere il primo EMA ( giorno precedente) (somma di ultimi tre (prezzo di chiusura) 3) I dovrebbe usare il prezzo di chiusura come l'inizio di EMA quindi sarà (27,1) stand di 27,733 quello verde) con considerando la fine del periodo di tempo (come se EMA di 3 giorni avrà l'ultima due linee come (0) in quanto è minore il 3 penso che tu sei dicendo che quello verde per EMA3 dovrebbe essere 27,1 invece di 27.33, ma gli ultimi due sono correttamente a 0. E 'corretto Se così, ho una soluzione semplice per voi. non sono sicuro quale dei due frammenti di codice che avete appena ha mostrato nel tuo ultimo post sono quelli youre ora che utilizzano, ma Im utilizzando il codice dal tuo post precedente (prima l'ultima). Tutto quello che dovete fare è apportare le seguenti modifiche: che dovrebbe farlo ha funzionato per me con la versione di codice Im usando Bonnie DeWitt C MVP Domenica 7 dicembre 2014 16:46 non funziona, ma al di sotto sono i dati.. da file di testo e il trucco a EMA (giorno precedente) come potrà ottenere l'inizio di esso 1- utilizzando vicino prezzo come hai fatto nel tuo ultimo post 2- utilizzando media mobile semplice vi prego di ricodificare esso. Mi arrendo periodi di tempo 3 Moltiplicatore: (2 (periodi di tempo 43 1)) EMA x moltiplicatore 43 EMA (giorno precedente) Vorrei applicare formula EMA utilizzando file delimitato txt e visualizzarli in datagridview 1- dal singolo elemento come il flusso 2 - da parte di tutti oggetto (otterrà l'ultima manifestazione del record) come il flusso dei dati utilizzando come file txt per ulteriori informazioni su EMA non quando uso tutto il codice che ho fatto in gran file txt sarà molto lento Grazie mille per tutto il vostro aiuto lo apprezzo davvero di sì, ma non funziona per file di testo e questo il primo post che la soluzione lettura EMA da file txt da virgole. Ho cercare in internet ma non ho trovato. anche se l'ho fatto dal codice di cui sopra che ancora non facendo bene ho fatto la media mobile semplice in c il modo in cui ho codificato sopra, ma non è efficiente. è molto lento per il grande disco c'è jQuery ma ho bisogno come C, quindi sono alla ricerca di codice differente in grado di gestire molto grande record con la condizione di colore della cella datagridview come di seguito int DLaetRow DataGridView3. Righe. Conte - 2 se (ema3 gt Math Abs ((((2) (smvClose)) 100) 43 (smvClose))). DataGridView3. Righe DLaetRow. Cellule 3. Stile. Colore BackColor. Lightgreen else if (ema3 lt Math Abs ((((2) (smvClose)) 100) -. (SmvClose))) DataGridView3. Righe DLaetRow. Cellule 3. Stile. Colore BackColor. Red cura di newandold Martedì 9 Dicembre 2014 21:33 Martedì 9 Dicembre 2014 21:32 OK, ho finalmente un po 'di tempo per fare questo, e ho dovuto pensato di farlo in questo modo fin dall'inizio. Creare una classe EmaData per contenere i valori calcolati fo ogni riga di dati, e utilizzare una ListltEmaDatagt per tenerli tutti. Poi si può fare tutti i calcoli in un loop attraverso i dati. Ecco quello che ho finito con: Bonnie DeWitt C MVP Sabato 13 dicembre 2014 17:59 grazie per il vostro tempo e aiuto si codice veloce è stato fatto utilizzando vicino prezzo, ma non è stato l'ultimo prezzo di chiusura come avviarlo bisogno di alcune modifiche si prega di come il flusso grazie questa grande opera e per favore posso avere anche questo 2- da tutti oggetto (otterrà l'ultima manifestazione del record) come il flusso grazie mille lo apprezzo davvero cura di newandold Sabato 13 dicembre 2014 21:59 ho ottenuto le informazioni su come calcolare EMA da questo link: considero i libri quotDummiesquot essere fonti autorevoli. Se si guarda la griglia che mostrano per il calcolo, da nessuna parte ci sono zeri per uno qualsiasi dei calcoli EMA. Così, ecco perché voi non vederlo con il mio codice. Se si vuole fare loro lo zero, tutto quello che dovete fare è modificare il codice per impostare a zero per la voce appropriata (io davvero non so perché si vuole che, però, Non sembra essere un risultato standard per EMA): Il tuo seconda domanda è semplicemente una questione di ottenere l'ingresso ultimi giorni fuori dal SMVList, che sarebbe SMVListSMVList. Count - 1. sono sicuro che si può capire come ottenere che e metterlo in quella seconda griglia (Analisi EMA). Bonnie DeWitt C MVP Sabato 13 Dicembre 2014 22:17 Scusa, ho postato qualcosa di sbagliato nel mio post precedente. Dal momento che il SMVList è in ordine cronologico inverso, l'ultima voce date sarebbe in realtà essere il primo della lista, in modo youd vogliono apparire come SMVList0. Ho anche voluto aggiungere al mio commento circa gli zeri non appartenenti nei calcoli EMA. Esso sembra avere senso con i calcoli SMA si stava facendo in precedenza, ma io ancora non vedo è dare un senso con i calcoli EMA (ancora una volta, questo è secondo il link libro Dummies, perché io personalmente so assolutamente nulla di EMA). Bonnie DeWitt C MVP Domenica 14 dicembre 2014 02:42 come su questo uno 2- da tutti oggetto (otterrà l'ultima manifestazione del record) come flusso ottenendo ultimo evento per tutti gli elementi di cui sopra provo, ma come si vede sotto cura di newandold Domenica 14 dicembre 2014 04:02 Domenica 14 dicembre 2014 03:51 Sì, be ', io ovviamente ottenuto tutti e due indietro, non ha ancora mi dispiace ma, probabilmente si dovrebbe essere in grado di capire questo fuori te stesso. Ma, voglio solo sottolineare che questo viti backup di tutti gli altri calcoli, dal momento che la formula si basa sul calcolo di giorni precedenti EMA (che non dovrebbe essere pari a zero. Ma è quando si mette in questo cambiamento). Io davvero non credo che questo ha un senso. Hai guardato il link che ho postato l'articolo Plug manichini nei valori della tabella da questo link nel file di testo e youll vedere che il mio codice originale corrisponde a ciò che egli mostra nella tabella. Ma, se ti ostini a renderli zero, allora suppongo che siamo riusciti a ottenere in giro che da sempre rendendo il giorno precedente EMA. Fare in questo modo, invece: io non ancora d'accordo con esso, però, ma che ne so io. Bonnie DeWitt C MVP Domenica 14 dicembre 2014 05:47 grazie per il vostro sforzo il risultato non era così ho bisogno o corretti. ma per il codice è stato molto buono per la velocità di caricamento in datagradview. 1- ottenere la media mobile semplice 2- creare l'elenco dei (media mobile semplice) prendiamo EMA3 a - utilizzerà il valore dell'ultimo SMA come primo valore di ema nel calcolo, ma entrambi hanno lo stesso periodo 3 aggiungo pic per spiegare più anche sto cercando di farlo utilizzando il codice a cura di newandold Lunedi, 15 dicembre, il 2014 19:56 mi dispiace che non posso spendere più tempo su questo momento. Si continua a cambiare ciò che si vuole, o almeno sembra che modo per me. Il migliore che posso dire in questo momento è di aggiungere le proprietà SMA a quella classe di dati. Ho chiamato la classe EmaData, ma questo è perché ho pensato che si stava calcolando solo i valori EMA, ma si può andare avanti e aggiungere le proprietà SMA ad esso troppo. Quindi modificare i metodi di utilizzare lo stesso ListltEmaDatagt per calcolare prima SMA e poi EMA (youll probabilmente bisogno cicli multipli attraverso la lista). Non credo che sarà troppo difficile da fare, ho appena cant pasticciare con essa in questo momento. Ma, penso che sarete in grado di capirlo. Bonnie DeWitt C MVP Martedì 16 dicembre 2014 12:25 AM Si continua a cambiare ciò che si vuole, o almeno così sembra a me dal mio vecchio post Il primo EMA (giorno precedente) ultimo prezzo di chiusura o (somma delle ultime tre (prezzo di chiusura) 3) anche da vecchio post per ulteriori informazioni su EMA se come me per segnare il tuo posto come risposta lo farò, ma per gli altri whos alla ricerca di EMA avranno risultato sbagliato cura di newandold Martedì 16 dicembre 2014 5 : 24 PM sembra a me come l'uso di ieri EMA quando il suo primo giorno (e di conseguenza non vi è alcuna ieri) può essere basata su dati diversi, a seconda di quali articoli si legge. Io non sono un esperto di magazzino, in modo da Im solo andando su quello che Ive stato lettura. Ho letto in questo articolo Dummies che ho collegato a, che può essere fatto nel modo che vi ho mostrato e che è quello di iniziare con i primi giorni di valore come quotyesterdays EMAquot di chiusura. È inoltre possibile utilizzare una media dei giorni di chiusura nel periodo (SMA, suppongo). ma mi sembra che viene utilizzato solo per il primo valore calcolato (e usato come quotyesterdays EMAquot nella formula), non è il modo in cui avete fatto esso. Così, nel vostro screenshot dal tuo post precedente, tale valore SMA3 il 1020, 27,733, non sarebbe inserito nella colonna per EMA3 su 1020, ma sarebbe stato utilizzato nel calcolo per EMA3 il 1018 come quotyesterdays EMAquot. Così, mentre il SMA3 ha uno zero per 1018 e 1019, il EMA3 non sarebbe zeri lì. Il EMA3 per quelle 2 date dovrebbe essere 28,017 e 27,909. Così, nel mio codice dove ho in default gli EMAs precedenti per SMVClose, possiamo cambiare come segue: Ancora una volta, questo si basa su quello che ho letto e in questo articolo Dummies dimostra in questo modo troppo. Credo davvero che questo è ciò che si desidera. Bonnie DeWitt C MVP Contrassegnato come risposta da Domenica newandold, 21 dicembre, 2014 05:33 Giovedi, 18 dicembre, il 2014 16:52 vi ringrazio molto Gr spiegarlo cura di newandold Venerdì 19 dic 2014 02:00 PM Venerdì 19 dicembre 2014 13:51 condivido il codice c cura di newandold Venerdì 19 dicembre 2014 22:09 Venerdì 19 dicembre 2014 22:08 ho l'ultimo valore della SMA (media mobile semplice ) per essere l'inizio di calcolo EMA come la foto qui sotto non è buono come il vostro modo di codifica che non sarà veloce come il tuo codice, ma lei per cancellare da dove cominciare per il calcolo del EMA (il primo (ema3prev) fila ora come applicare. . ema3 Math Round ((riga SMVClose k3) 43 (ema3prev (1 -. K3)), 3. MidpointRounding AwayFromZero.) Venerdì 19 dicembre 2014 22:23 Questo sarà molto più facile se si modifica il codice per utilizzare ListltEmaDatagt, come ho già detto in una precedente risposta Heres quello che avevo in precedenza suggerito:.. gtgtadd le proprietà di SMA a quella classe di dati ho chiamato la classe EmaData, ma questo è perché ho pensato che tu fossi calcolando solo i valori EMA, ma si può andare avanti e aggiungere le proprietà SMA ad esso troppo. Quindi modificare i metodi di utilizzare lo stesso ListltEmaDatagt per calcolare prima SMA e poi EMA (youll probabilmente bisogno cicli multipli lungo l'elenco).ltlt Quindi, una volta che avete in loop attraverso l'elenco e calcolato i valori SMA, quindi utilizzando il valore corretto per SMA la tua EMA di partenza sarà molto più facile. Basta usare lo stesso codice loop ho mostrato in una risposta precedente per calcolare la EMA (ma usare un diverso EMA di partenza sulla base di SMA, invece del modo in cui l'ho fatto). Bonnie DeWitt C MVP Contrassegnato come risposta da Domenica newandold, 21 dicembre 2014 05:33 Venerdì 19 Dicembre 2014 23:28 Questo quello che ho fatto e ora sta lavorando provo ad aggiungere EMA5 EMA9 EMA10 e così via il codice è stato molto lungo c'è modo breve e professionalità ho bisogno del tuo tocco questo il codice che nel reale è il codice sono grato per il vostro aiuto Sabato 20 dicembre 2014 15:43 Ogni volta che vi trovate a dover semplificare il codice, sempre pensare la creazione di un nuovo metodo per mettere un po 'di codice nel quello che ho fatto è stato messo il codice ripetitivo in un nuovo metodo:. Così, invece di fare tutto questo in loop originale, youd semplicemente chiamare il nuovo metodo, invece: Isnt che molto più pulito Bonnie DeWitt C MVP Contrassegnato come risposta da Domenica newandold, 21 dicembre 2014 05:33 Sabato 20 dicembre 2014 17:44 come faccio a ottenere che sia tutto indice come ottenere ultimo evento per tutti gli elementi di cui sopra quando provo ottengo tutti i record di entrambi (Datatwo e ONEDATA) grazie per il vostro sostegno e la vostra prova modifica del codice di dati di grandi dimensioni per la voce singal e sono stato abbastanza veloce Sabato 20 dicembre 2014 22:23 Quando si desidera ottenere i dati per entrambe le voci, è possibile utilizzare un dizionario per memorizzare più elenchi. Si avrebbe bisogno di cambiare il metodo MAByItem () per restituire un ListltEmaDatagt, quindi sarebbe simile a questa: E poi, si dovrebbe chiamare questo metodo in modo leggermente diverso di quello che stava chiamando prima: potrebbe essere necessario modificare alcune altre cose nella vostra MAbyitem () metodo, perché non so come si desidera visualizzare l'altra griglia weve lavorato con. Forse chiamare il metodo AddDataToGrid () qui invece che nel metodo MAbyitem (). E magari passare la griglia che si desidera come parametro del metodo AddDataToGrid (). Ma, in ogni caso, si dovrebbe essere in grado di capire il resto, spero. Bonnie DeWitt C MVP Domenica 21 dicembre 2014 12:28 cerco di usare il codice ma ho più di 300 articoli, ma non funziona A cura di newandold Domenica 21 dicembre 2014 12:10 Domenica 21 dicembre 2014 11 : 43 AM ho detto youd devono cambiare il codice di un po 'di più, il punto principale della mia ultima risposta è stata sull'utilizzo di un dizionario per memorizzare liste per entrambe le voci. Non ho conoscere i vostri metodo () AllItems, ma deve ovviamente essere un po 'diverso da quello del metodo MAbyitem (). Torna a utilizzare il dizionario, come ho mostrato nella mia risposta precedente, ma utilizzarlo nei AllItems () metodo come questo: Bonnie DeWitt C MVP Domenica 21 Dicembre 2014 16:34 aggiungo il codice come sotto di questo l'errore ho Domenica 21 dicembre 2014 19:32 Quale metodo è tale eccezione si verificano in non capisco perché non sei usando il mio codice, la parte in cui tutti questi calcoli sono incapsulati in un metodo, il metodo CalcEmaX () che viene chiamato da il metodo CalcEma (). Ho pensato che d'accordo che stava funzionando bene, allora perché stai usando codice diverso Qual è svmTmpInt200 Questo è qualcosa di nuovo. Sulla base di tale convenzione, che sembrerebbe indicare che ha un valore di 200. Credo che il problema è che SMVList. Count - svmTmpInt200 è negativo (perché il valore è inferiore a 200), in modo da sei loop all'indietro, i è andando sempre essere superiore a tale valore, e di conseguenza il ciclo non ha alcun punto di sosta e di continuo i decrementa fino a quando non è troppo negativo, allora si ottiene l'eccezione. Pubblica il codice relativo favore. Bonnie DeWitt C MVP Domenica 21 Dicembre 2014 21:02 Ho appena aggiungere più Periodo e il tutto il codice è qui così si sta lavorando per la voce segnale per il (i Gt SMVList. Count - svmTmpInt200) cerco di sostituirlo con diverso in modo che non sarà limitata al Periodo specifici Sì sto testando un altro modo di prendere il codice come il mio riferimento cura di newandold Domenica 21 dicembre 2014 09:44 Domenica 21 dicembre 2014 21:28 in vecchio codice che era lento , stavo usando l'intestazione del datagridview Domenica 21 dicembre 2014 22:16 È già provato il mio codice. Hai detto che ha funzionato bene ed era veloce. Eppure, tu sei non lo si utilizza il modo in cui Ive scritto. Youd essere molto meglio con le modalità CalcEmaX () e AddDataToGrid () che contiene tutto ciò che il codice ridondante (principalmente tutte le IFS). Il tuo codice è troppo disordinato altrimenti (e si voleva evitare che). Ma, quello non è dove il vostro problema attuale è, perché il problema sta in cui youre cercando di calcolare il SMAX da utilizzare come punto di partenza Emax. Penso che si possa creare un metodo CalcSmaX () per rendere il codice di calcolo SMA un po 'più pulito anche, ma ancora una volta quello non è il problema. Il problema è che non avete 200 righe nella lista, ma avete ottenuto un ciclo che presuppone che non è necessario controllare i limiti: cambiare questo: for (int i SMVList. Count - 1 i gt SMVList. Count - svmTmpInt200 I--) a questo: int max SMVList. Count - svmTmpInt200 se (lt max 0) max 0 for (int i SMVList. Count - 1 i GT i-- max) Bonnie DeWitt C MVP Lunedi, dicembre 22, il 2014 12: 11:00 grazie per il vostro aiuto sì, il codice non è che buona, ma mi si riavvia di nuovo Lunedi, 22 dicembre il 2014 8:35 Youre ammessi Spero che si può ottenere questo lavoro presto 0) Bonnie DeWitt C MVP Martedì 23 dicembre, 2014 16:42 Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione del sito Web MSDN. Se si sceglie di partecipare, il sondaggio on-line sarà presentato a voi quando si lascia il sito Web MSDN. Vuoi partecipare Aiutaci a migliorare MSDN. Visita la nostra pagina UserVoice a presentare e votare le idee Dev centri di prestazioni di apprendimento resourcesIf di questo codice è critica, allora si potrebbe dare un senso al fine di evitare allocazioni di heap per Candela s. Penso che il modo più ragionevole per farlo sarebbe fare candela in una struct. Anche se i tipi di valore mutabili sono il male. quindi vorrei anche refactoring Candela di essere immutabile. Questo significa anche la realizzazione di newestCandle avrebbe dovuto cambiare, probabilmente in un paio di campi doppi (o, in alternativa, una classe mutevole e azzerabile separato). Non vedo nessun altro potenziale problema di prestazioni nel codice. Ma quando si tratta di prestazioni, si dovrebbe sempre fare affidamento su profiling, non la vostra (o qualcun'altro) intuizione. Inoltre, io non come alcuni nomi dei vostri metodi. In particolare: ValueUpdated. nomi di metodo di solito dovrebbe essere in forma fare qualcosa, non è successo qualcosa. Quindi penso che un nome migliore sarebbe UpdateValue. Inserisci. Modificare. Queste sono le due operazioni fondamentali della vostra media mobile e penso che quei nomi dont esprimere bene il significato. Io li chiamerei qualcosa come MoveAndSetCurrent e setCurrent. rispettivamente. Anche se tale denominazione indica che le operazioni fondamentali dovrebbero piuttosto essere Move e setCurrent.

Comments

Popular Posts