Thursday 9 November 2017

Semplice Movimento Vba Codice Media


Media mobile Questo esempio vi insegna come calcolare la media mobile di una serie storica in Excel. Una media mobile viene utilizzata per appianare le irregolarità (picchi e valli) di riconoscere facilmente le tendenze. 1. In primo luogo, consente di dare un'occhiata alla nostra serie temporali. 2. Nella scheda dati fare clic su Analisi dati. Nota: non riesci a trovare il pulsante Data Analysis Clicca qui per caricare il componente aggiuntivo Strumenti di analisi. 3. Selezionare media mobile e fare clic su OK. 4. Fare clic nella casella intervallo di input e selezionare l'intervallo B2: M2. 5. Fare clic nella casella Intervallo e digitare 6. 6. Fare clic nella casella Intervallo di output e selezionare cella B3. 8. Tracciare la curva di questi valori. Spiegazione: perché abbiamo impostato l'intervallo di 6, la media mobile è la media degli ultimi 5 punti di dati e il punto di dati corrente. Come risultato, i picchi e le valli si distendono. Il grafico mostra una tendenza all'aumento. Excel non può calcolare la media mobile per i primi 5 punti di dati, perché non ci sono abbastanza punti dati precedenti. 9. Ripetere i passaggi 2-8 per l'intervallo 2 e l'intervallo 4. Conclusione: Il più grande l'intervallo, più i picchi e le valli si distendono. Minore è l'intervallo, più le medie mobili sono i dati effettivi points. Rolling Tabella Media Sotto vedremo un programma in Excel VBA che crea una tabella media mobile. Posizionare un pulsante di comando nel foglio di lavoro e aggiungere la seguente riga di codice: Range (quotB3quot).Value WorksheetFunction. RandBetween (0, 100) Questa linea di codice entra in un numero casuale compreso tra 0 e 100 nella cella B3. Vogliamo Excel VBA per prendere il nuovo valore azionario e posizionarlo nella prima posizione della tabella media mobile. Tutti gli altri valori dovrebbero scendere di un posto e l'ultimo valore devono essere eliminati. Creare un evento di modifica del foglio di lavoro. Codice aggiunto l'evento Change foglio di lavoro verrà eseguito da Excel VBA quando si modifica una cella di un foglio di lavoro. 2. Fare doppio clic su Sheet1 (Foglio1) nel Project Explorer. 3. Scegliere foglio dall'elenco a discesa di sinistra. Seleziona Cambia dall'elenco a discesa a destra. Aggiungere le seguenti righe di codice per l'evento Change Foglio di lavoro: 4. dichiarare una variabile denominata newValue di tipo Integer e due gamme (firstfourvalues ​​e lastfourvalues). Dim newValue As Integer. firstfourvalues ​​come gamma, lastfourvalues ​​come gamma 5. L'evento di modifica ascolta tutte le modifiche di Sheet1. Vogliamo solo Excel VBA per fare qualcosa, se qualcosa cambia nella cella B3. Per raggiungere questo obiettivo, aggiungere la seguente riga di codice: Se Target. Address quotB3quot Poi 6. inizializzare newValue con il valore della cella B3, firstfourvalues ​​con Range (quotD3: D6quot) e lastfourvalues ​​con Range (quotD4: D7quot). newValue Range (quotB3quot).Value Set firstfourvalues ​​Range (quotD3: D6quot) Set lastfourvalues ​​Range (quotD4: D7quot) 7. Ora arriva la semplice trucco. Vogliamo aggiornare la tabella media mobile. È possibile raggiungere questo sostituendo gli ultimi quattro valori con i primi quattro valori della tabella e ponendo le nuove azione valore alla prima posizione. lastfourvalues. Value firstfourvalues. Value Range (quotD3quot).Value newValue 8. Non dimenticare di chiudere l'istruzione if. 9. Infine, inserire la formula MEDIA (D3: D7) nella cella D8. 10. Prova il programma cliccando sul comando button. Here è un codice che dovrebbe essere utile per coloro che utilizzano l'analisi tecnica nel commercio e vogliono testare le strategie in Excel. Si calcola la media semplice, lineare ponderata ed esponenziale in movimento. Inoltre presenterò e spiegare i passaggi per la creazione della forma e il codice VBA. Inserire un nome form 8211: MAForm Aggiungi quattro etichette dai controlli Toolbox 8211 Voci di cui al precedente schermata di stampa Aggiungere una casella combinata per la selezione del tipo di media mobile. È stato chiamato comboTypeMA Aggiungere due controlli ModRif per la gamma di ingresso e di uscita. Aggiungere una casella di testo per selecing il periodo media mobile Aggiungere due pulsanti: Nome: buttonSubmit, Didascalia: Invia e Nome: ButtonCancel, Didascalia: Annulla Al fine di generare l'elenco a discesa per la selezione del tipo di MA e caricare il modulo di utente, un nuovo modulo verrà inserito con il codice di seguito. Gli elementi ComboBox con essere popolati spostando tipi medie e il modulo utente verranno caricati. Option Explicit loadMAForm Sub () Con MAFormboTypeMA. RowSource. AddItem semplice. AddItem ponderata. AddItem esponenziale End With MAForm. Show End Sub Di seguito è riportato il codice attribuito al pulsante Invia. Private Sub buttonSubmitClick () Dim inputRange, outputRange come gamma La inputRange conterrà la serie prezzo utilizzato per il calcolo del AdG e il outputRange verrà popolata con i valori medie mobili. inputPeriod Dim As Integer Il movimento periodo medio è dichiarato. Dim inputAddress, outputAddress come stringa I campi di ingresso e di uscita dichiarati come stringa. Se comboTypeMA. Value ltgt esponenziale E comboTypeMA. Value ltgt semplice e comboTypeMA. Value ltgt ponderata True Then MsgBox Si prega di selezionare un tipo di media mobile dalla lista. RefInputRange. SetFocus Exit Sub Questa parte della procedura applica le prime restrizioni per quanto riguarda i dati presentati. Se il tipo di media mobile non è contenuta nella lista a discesa, la procedura non procederà alla fase successiva e l'utente verrà richiesto di selezionare di nuovo. ElseIf RefInputRange. Value Poi MsgBox Si prega di selezionare l'intervallo di input. RefInputRange. SetFocus Exit Sub ElseIf RefOutputRange. Value Poi MsgBox Si prega di selezionare il campo di uscita. RefOutputRange. SetFocus Exit Sub ElseIf RefInputPeriod. Value Poi MsgBox Si prega di selezionare il periodo di media mobile. RefInputPeriod. SetFocus Exit Sub ElseIf Non IsNumeric (RefInputPeriod. Value) Then MsgBox Moving periodo medio deve essere un numero. RefInputPeriod. SetFocus Exit End Sub Se si creano altre limitazioni. Il periodo campo di ingresso, intervallo di uscita e di ingresso non deve essere vuoto. Inoltre, il periodo di media mobile deve essere un numero. inputAddress RefInputRange. Value Set inputRange Range (inputAddress) outputAddress RefOutputRange. Value Set outputRange Range (outputAddress) inputPeriod RefInputPeriod. Value Gli argomenti a favore inputRange e outputRange gamme sarà inputAddress e outputAddress dichiarati come stringhe. Se inputRange. Columns. Count ltgt 1 Poi MsgBox Campo di ingresso può avere una sola colonna. RefInputRange. SetFocus Exit Sub Il inputRange deve contenere una sola colonna. ElseIf inputRange. Rows. Count ltgt outputRange. Rows. Count Then MsgBox Campo di uscita ha un diverso numero di righe rispetto al campo di ingresso. RefInputRange. SetFocus Exit Sub End If Il inputRange e outputRange devono avere lo stesso numero di righe. Dim RowCount As Integer RowCount inputRange. Rows. Count Dim d'aria As Integer ReDim inputarray (da 1 a RowCount) Per Crow 1 Per RowCount inputarray (corvo) inputRange. Cells (Crow, 1).Value Prossimo d'aria inputarray è dichiarata come array e it8217s elementi corrispondono ai valori da ogni riga del campo di ingresso. Se inputPeriod gt RowCount Poi MsgBox numero di osservazioni selezionati è amp RowCount amplificatore e il periodo è amp inputPeriod. L'intervallo di input deve avere un importo superiore o pari di elementi rispetto al periodo selezionato. RefInputRange. SetFocus Exit Sub End Se si aggiunge Un'altra limitazione 8211 L'intervallo di input deve avere un importo superiore o pari di elementi rispetto al periodo. Se inputPeriod lt 0 Then MsgBox Moving periodo medio deve essere superiore a 0. RefInputPeriod. SetFocus Exit End Sub Se il periodo di media mobile deve essere maggiore di zero. ReDim outputArray (inputPeriod Per RowCount) As Variant Anche le dimensioni di matrice di outputArray sono determinati. Il limite inferiore della matrice è il valore inputPeriod e il limite superiore è il valore della RowCount (il numero di elementi nel inputRange). Di seguito parte della procedura calcolata la media mobile semplice, se la selezione per comboTypeMA è semplice. SMA ----------------------------------------- Se comboTypeMA. Value semplice allora Dim i , j come numero intero Dim temperatura As Double For i inputPeriod Per RowCount temperatura 0 per j (i - (inputPeriod - 1)) Per i Temp inputarray (j) Next j outputArray (i) outputRange. Cells temperatura inputPeriod (I, 1) outputArray. value (i) Next i outputRange. Cells (0, 1).Value SMA (amp inputPeriod amp) in sostanza, la procedura calcola la media mobile degli ultimi x numeri (x è uguale al inputPeriod), a partire con l'elemento di il inputarray pari al inputPeriod. Di seguito un esempio semplificato, che mostra ogni passo della procedura. In questo esempio, ci sono quattro numeri (no01, no02, no03 e no04) da riga 1 a riga 4 e il periodo di media mobile è 3. Dopo ogni nuovo media mobile viene calcolato, ogni cella della outputRange prenderà il valore dal outputArray. E dopo tutte le medie mobili sono calcolati, nella cella sopra outputRange verrà inserito un titolo che contiene il tipo di media mobile e il periodo. Questa parte successiva calcola la media mobile esponenziale. EMA ------------------------------------------ ElseIf comboTypeMA. Value esponenziale Poi Dim alpha As Double alpha 2 (inputPeriod 1) Per j 1 Per inputPeriod Temp inputarray (j) Next j outputArray (inputPeriod) Temp inputPeriod Prima il valore di alfa è determinata. Poiché nel calcolo, il valore della EMA si basa sulla EMA precedente, il primo sarà la media mobile semplice. Per i inputPeriod 1 Per RowCount outputArray (i) outputArray (i - 1) alfa (inputarray (i) - outputArray (i - 1)) Next i A partire dalla seconda media mobile, saranno calcolati in base alla formula di cui sopra: la EMA precedente più alfa moltiplicato per la differenza tra il numero corrente dal inputarray e il valore EMA precedente. Per i inputPeriod Per rowCount outputRange. Cells (I, 1).Value outputArray (i) Next i outputRange. Cells (0, 1).Value EMA (amp inputPeriod amp) Proprio come il codice per la SMA, l'outputArray verrà popolato e la cella sopra outputArray rappresenterà il tipo e il periodo della media mobile. Di seguito è riportato il codice per il calcolo della media mobile ponderata. WMA ------------------------------------------ ElseIf comboTypeMA. Value Weighted Poi Dim temp2 come numero intero Per i inputPeriod Per RowCount temperatura 0 temp2 0 per j (i - (inputPeriod - 1)) Per i Temp inputarray (j) (j - i inputPeriod) temp2 temp2 (j - i inputPeriod) Next j outputArray (i ) outputRange. Cells temperatura Temp2 (i, 1).Value outputArray (i) Next i outputRange. Cells (0, 1).Value WMA (amp inputPeriod amp) End If la tabella che segue contiene i passaggi per calcolare ogni variabile utilizzata per la WMA calcolo. Come nell'esempio precedente, in questo ci sono per i numeri nella inputRange. e il periodo di ingresso è 3. Di seguito il codice finale del procedimento, che scarica il modulo utente. Scaricano MAForm End Sub La procedura che segue è per il pulsante Annulla. Sarà aggiunto nello stesso modulo. Private Sub buttonCancelClick () Scaricare MAForm End Sub

No comments:

Post a Comment