Análisis de Excel y VBA

 

Publi

Página 1 de 405 123 ... ÚltimoÚltimo
Resultados 1 al 10 de 41

Tema: Análisis de Excel y VBA

  1. #1
    Bienvenido,

    Dediqué este hilo al desarrollo de nuestras hojas de Excel.

    Me gustaría que fuera el cielo de la analítica y estoy preparado para estar aquí solo con mi pequeño desarrollo. De vez en cuando puede echar un vistazo, ya que voy a publicar mis scripts de VBA, confiando en que algún profesional aparecerá y me corrija. Dentro de mi carrera comercial, muchas veces he necesitado probar un poco de tiempo y con frecuencia he querido verlo desde una perspectiva extraña. Lamentablemente soy analfabeto. Así que aprendí a codificar los fundamentos de VBA, lo codifiqué como un cerdo, pero funcionó y tengo todo lo que quería.

    Por alguna razón, siento que algunos de ustedes estaban, o están, en la misma situación y creo que si discutimos nuestros códigos de VBA y hacemos combos de brillo, podríamos hacer cosas bastante maravillosas.

    También estoy usando este foro para comprar códigos, lo que significa que están en un solo lugar. Os animo a que me ayudéis con el desarrollo de aquellos. Si tiene alguna idea de cómo podría mejorarse, indíquelo.

    Descargo de responsabilidad: Estos son códigos extremadamente tontos. Si planea usarlos, asegúrese de saber qué hacen y almacene su información antes de realizar una macro. Todos los códigos han sido escritos en VBA Excel 2010.

    GotId incluye una regla de hilo:
    Por favor, intente pegarlo. Además ACDC de bienvenida.

    Disfrutar,

    Tom

  2. #2
    Así que primero necesito guardar el pequeño código. He hecho esto porque a veces, cuando descargo una aplicación temporal, diferentes naciones tienen diferentes formatos de fecha y hora y no pueden navegar por la fecha. Es sólo para encontrar la noción caliente al diablo cambiar todas las fechas incorrectas. 'datecrush Set rng = Rango (Celdas (1, 1), Celdas (1, 1) .End (xlDown)) Para cada b In rng b.Offset (0, 7) .Value = (Izquierda (b.Value, 4 ) - Medio (b.Valor, 6, 2) - Correcto (b.Valor, dos)) Siguiente para cada b In rng b.Valor = b.Offset (0, 7). Valor Siguiente rng.NumberFormat = d.m.yyyy El segundo es realmente un desastre. Este código sería para aplastar la información exportada en formato * .csv y luego cambiarla a tiempo legible con solo cierres y fechas. Ha sido probado en la información diaria de la UE Oanda de MT4. Hay un error menor con las fechas, que se puede arreglar ahora, con el código no1. Creo que todas las exportaciones de MT4 deberían ser iguales. Sub datecrushMT4Daily () 'hojas de reinicio derrotadas y Last Appliion.DisplayAlerts = False Worksheets (Data_crushed) .Delete Worksheets.Add.Name = Data_crushed Worksheets (Data_Derreded) .Move After: = Worksheets (Statistics) Worksheets (Data_final).. .Name = Data_final Worksheets (Data_final) .Move After: = Worksheets (Menu) Appliion.DisplayAlerts = Authiion Appliion.ScreenUpdating = False 'Date crush - MT4 Daily Worksheets (Data) .Activate Range (Cells (1, 1), Cells ( 1, 7) .End (xlDown)). Copy Worksheets (Data_crushed) .Activate ActiveSheet.Paste 'Columns Columnas separadas (A: A) .Seleccione Selection.TextToColumns Destino: = Rango (A1), DataType: = xlDelimited, _ TextQualifier : = xlDoubleQuote, ConsecutiveDelimiter: = False, Tab: = True, _ punto y coma: = False, coma: = True, espacio: = False, otro: = False, FieldInfo _: = Array (Array (1, 4), Array ( 2, 4), Array (3, 1), Array (4, 1), Array (5, 1), Array (6, 1), _ Array (7, 1)), DecimalSeparator: =. , TrailingMinusNumbers: = Rango real (G14) .Seleccione 'Columnas visuales (B) .Elimine Columnas (g) .ClearContents Rows (1: 1) .Insert Shift: = xlDown, CopyOrigin: = xlFormatFromLeftOrAbove Range (A1) .FormulaR11 = Fecha Rango (b1) .FormulaR1C1 = Rango Abierto (c1) .FormulaR1C1 = Rango Alto (d1) .FormulaR1C1 = Rango Reducido (e1) .FormulaR1C1 = Rango Cercano (f1) .FormulaR1C1 = Volumen para cerrar el rango Rango (A: A) , E: E) .Copia de hojas de trabajo (Data_final) .Activate Sheets (Data_final) .Seleccione ActiveSheet.Paste End Sub

  3. #3
    1 Adjunto (s) Esta es una hoja de Excel sencilla para la gestión de las operaciones de la UE y UJ. Es meramente una forma
    Sin embargo, puedes adaptarlo si lo deseas. Si descubre algún error por favor informe. Los números son falsos, además de esas entradas.
    https://www.forexycfds.com/attachmen...352376108.xlsx

  4. #4
    Ok, ha sido hecho por mi. Había estado en esta cosa. Si desea convertir la distribución de texto a la fecha, el formato predeterminado .xls es aaaa-mm-dd. ¡Significando si primitivo como yo, de alguna manera simplemente lo induces adentro y lo haces! Así que este trabajo, ha sido probado en 0anda MT4 exportación mensual, semanal y diaria.forexycfdsno me deja subir .xlsm aquí, por lo tanto describo cómo funciona. Usted crea una hoja de Excel utilizando cuatro listas, también llamadas Menu Data_crushed Data_final and Data. Una vez en el gráfico MT4, presione ctrl sy rese * .csv. Copie los datos de .csv a la lista Info. Ejecutar macro. Se aplastarán las fechas para formatear y seleccionar solo los cierres, por lo que es posible obtener un gráfico rápidamente. Hoja de datos aplastados contiene todo OHLC y cantidad, hoja Cierre solo los palos. Disfrute, T. Sub datecrushMT4Daily () 'hojas de reinicio aplastadas y Last Appliion.DisplayAlerts = Hojas de trabajo falsas (Data_crushed) .Delete Worksheets.Add.Name = Data_crushed Worksheets (Data_fushed) .Move After: = Worksheets (Data) Worksheets (Data_final). Delete Worksheets.Add.Name = Data_final Worksheets (Data_final) .Move After: = Worksheets (Menu) Appliion.DisplayAlerts = Authentic Appliion.ScreenUpdating = False 'Date crush - MT4 Hojas de trabajo diarias (Datos) .Activar rango (Células (1, 1 ), Celdas (1, 7) .End (xlDown)). Copiar hojas de trabajo (Data_crushed) .Activate ActiveSheet.Paste Columns (A: A) .Seleccione Selection.TextToColumns Destino: = Rango (A1), DataType: = xlDelimitado, _ TextQualifier: = xlNone, ConsecutiveDelimiter: = False, Tab: = True, punto y coma _: = False, Comma: = True, Space: = False, Other: = False, FieldInfo: = Array (_ Array (1, 4), Array (2, 4), Array (3, 1), Array (4, 1), Array (5, 1), Array (6, 1), Array (7, 1)), _ DecimalSeparator: =. , TrailingMinusNumbers: = True Selection.NumberFormat = [$ -F800] dddd, mmmm dd, yyyy 'datecrush Establecer rng = Range (Cells (1, 1), Cells (1, 1) .End (xlDown)) Para cada b in rng b.Offset (0, 7) .Value = (Izquierda (b.Value, 4) - Mid (b.Value, 6, 2) - Correcto (b.Value, two)) Siguiente rng.NumberFormat = [$ - F800] dddd, mmmm dd, aaaa'rng.NumberFormat = dmyyyy Para cada b In rng b.Value = b.Offset (0, 7). Valor Siguiente 'Columnas visuales (B). Eliminar columnas (gramos) .ClearContents Rows (1: 1) .Insert Shift: = xlDown, CopyOrigin: = xlFormatFromLeftOrAbove Range (A1) .FormulaR1C1 = Date Range (b1) .FormulaR1C1 = Open Range (c1) .FormulaR1C1 = Rango alto (d1) .FormulaR1C1 = Rango reducido (e1) .FormulaR1C1 = Rango cercano (f1) .FormulaR1C1 = Volumen 'proceder al cierre del rango (A: A, E: E). Copia de hojas de trabajo (Data_final ) .Activate Sheets (Data_final) .Seleccione ActiveSheet.Paste End Sub

  5. #5
    2 Adjuntos (s) Aquí está su serie, lo que es interesante es que la visualización de la forma formada por el espectáculo una vez que la ración llega a la estabilización completa.
    https://www.forexycfds.com/attachmen...584174451.xlsx
    https://www.forexycfds.com/forex-bro...ing-style.html

  6. #6
    Hola Tom, parece que estás usando una gran cantidad de vba de macro grabada. Solo tenga en cuenta que el vba grabado puede fallar ya que la celdahojaetc ocupada está relacionada con lo que está ocupado en el momento de la grabación, a menos que elija específicamente una celda activa específica. Es mejor utilizar el modelo de objeto de librohoja de trabajorango de Excel y, específicamente, asignar materias a variables y objetos de rango. Es un enfoque más preciso y escalable. He estado armando un código para trabajar con la salida MT4 que publicaré si tiene curiosidad. ¿Tienes alguna experiencia en desarrollo trabajando con objetos y clases?

  7. #7
    Por cierto, si alguien tiene un excel pregunta, publicarlos. Soy un programador de VBA bastante avanzado y he reunido algunos programas de gráficos bastante sólidos en Excel. No le construiré una aplicación, pero puedo ayudarlo con cualquier preguntatarea de vba. No puedo prometer giros rápidos, pero oye ... estás obteniendo algo sin costo alguno. Este trato no está sobre la mesa para siempre, así que aproveche cada vez que esté.

  8. #8
    Cita Iniciado por ;
    Hola Tom, parece que estás usando un montón de vba de macro grabado. Solo tenga en cuenta que el vba documentado puede ignorarse, ya que la celdahojaetc ocupada está relacionada con cualquier cosa que esté activa en el momento de la grabación, a menos que elija específicamente una celda activa determinada. Es mucho mejor utilizar el modelo Excel de libro de trabajohoja de trabajorango de elementos y delegar explícitamente los asuntos a factores y elementos de rango. Es una eegia más precisa y escalable. He estado reuniendo algunos códigos para trabajar con la salida MT4 que publicaré si está interesado. ¿Tienes alguna experiencia de desarrollo ...
    Hola JR .. Gracias por aparecer. Por favor, informame como usar clases y objetos.
    . He usado macros grabadas para la primera clasificación de datos en columnas. Mira, por eso tengo esos comandos: range.activate - para que escoja el rango apropiado para llevar a cabo esa macro grabada. Pero sé que la elección de datos está ralentizando el programa y que de alguna manera podría grabarlo en algún lugar y realizar una acción completa sin elegir celdas. Pero no entiendo cómo. T

  9. #9
    Sorry I didn't get back to you earlier. I was out of town. Basically, there are two different fashions to VBA. One is your macro code. Another is the object version. The object model is much more akin to Visual Basic 6. The object model is a lot cleaner, easier to manipulate, and less prone to the errors you get using the macro recorder that depends on matters such as active sheet, active cell, etc.. The simple way to remember the basic model structure is the fact that it is hierarchical. Workbook.Worksheet.Range(column_cell:column_cell). properties Below is a few fundamental VBA to replie the Date, Time, O,H,C,V from an MT4 csv data file. The main thing to know with variables and objects is that objects have to be created or instantiated using place. Factors initialized using . By employing explicit descriptions of these objects to be used and manipulated, there's no need to record what workbook,worksheet,cell, etc. has to be highlighted or busy. It's all specified by declaring which object to mention. The code is a lot cleaner and may be re-used in other larger patterns. I call the sample below from a different routine that processes several .csv files in 1 go using some for loops. The trendy thing with placing Range objects is it is simpler to copy/paste. You'd just say: sourceRangeName.copy afterward Range(A1).paste Which is a lot simpler than attempting to record highlighting a range, copying, and pasting. Inserted Code Sub OpenCSV() Dim sourceWb As Workbook Dim targetWb As Workbook Dim sourceWs As Worksheet Dim targetWs As Worksheet Dim sourceRng As Range Dim targetRng As Range Dim fPath As String Dim fName As String Dim lastCell As Integer 'Set target workbook, worksheet, and range. Set targetWb = ActiveWorkbook Set targetWs = targetWb.Worksheets(Mt4)'Set file path and file name fPath = C:\MetaQuotes\MQL4\Documents \ fName = [email protected]'set sourceWb object to file to open Set sourceWb = Workbooks.Open(fPath fName, False, True)'set the source range into the neighboring region from A1 and find the final row variety Set sourceRng = sourceWb.Worksheets(1). Range(A1).CurrentRegion 'sourceRng.Copy lastCell = sourceRng.Rows.Count Debug.Print lastCell 'Clear existing data targetWs.Range(A1).CurrentRegion. Clear'Header Row targetWs.Range(A1) = DATE targetWs.Range(B1) = TIME targetWs.Range(C1) = OPEN targetWs.Range(D1) = HIGH targetWs.Range(E1) = LOW targetWs.Range(F1) = CLOSE targetWs.Range(G1) = VOLUME targetWs.Range(H1) = fName'set the target range values into the origin range values then shut the. Csv file targetWs.Range(A2:G lastCell 1).Value = sourceRng.Value sourceWb.Close False End Sub There are a few different techniques to acquire info from the csv files without opening them. You can certainly do a file query. That's one of the very few recorded macros that's in fact quite helpful. The other way is to an ADODB connection object and then use normal SQL (Select * from blah blah blah) to find the information into a recordset stored in memory. This method is a little slower, but allows you to find aggregate data should you desire instead of read in each of the data along with the aggregate. Or use a where clause if you want to be selective.

  10. #10
    Gracias por y JR97. ¿Cómo sería el código si simplemente necesito extraer el OHLC de hoy de MT4 sin abrir o tal vez producir el archivo csv? (modulador, por favor dígame si obstruye mi mensaje para imprimir, siempre ha estado bloqueando mis mensajes sin ningún motivo)

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Cookies
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información y política de cookies aquí.