Ayuda sobre GetPositionProfit de Visual Chart....

Todo lo relacionado con este conocido software de trading made in Spain: estudios, indicadores, sistemas, plantillas, etc.
Responder
Avatar de Usuario
elchavo
Mensajes: 79
Registrado: 28 Ene 2006 22:21

Ayuda sobre GetPositionProfit de Visual Chart....

Mensaje por elchavo »

No me es posible establecer un valor para (EntryAgo). Solo admite un valor en el momento que se selecciona dicha función. ¿No es posible asignar este valor de EntryAgo a una variable y que éste pueda variar? Por ejemplo, para unas veces me interesará cual es la ganancia en el negocio actual (EntryAgo=0) y para otras cual ha sido en el anterior (EntryAgo=1) y para otras en el antepenúltimo (EntryAgo=2). Al activar parámetros de la función (Activar EntryAgo como parámetro para que pueda cambiar de valor) da error.

s2
No por mucho madrugar amanece más temprano
Searchpoint
Mensajes: 44
Registrado: 12 Jun 2006 12:02
Ubicación: Barcelona

Mensaje por Searchpoint »

Buenas

Me parece que no se puede, pero no te lo digo seguro. Prueba con distintos tipos de variable: integer, long, double... si no te permite con ninguna podrias crear 3 variables y asignarle a cada una el valor de las 3 ultimas ops.


s2
Cada vez que aprendo algo, me doy cuenta de lo poco que se.
DeveloperTrader
Mensajes: 25
Registrado: 27 May 2006 00:51

Mensaje por DeveloperTrader »

Hola elchavo:

He hecho un apaño que te puede resolver el problema. Se trata de una
clase que almacena los valores que le pasas y te los devuelve según
el índice que le pidas.

Su uso es muy fácil aunque su "puesta en marcha" sea un poco engorrosa la
primera vez.

Tienes que agregar al proyecto de VBA una clase a la que llamarás "clsValuesBag" y depués le pegas el siguiente código:


'// ***************************************************************

Option Explicit

Public MaxValues As Long
Dim ValuesBag As New Collection
Public Sub AddValue(ByVal pvarValue)

'// Añade valores a la colección
'// El último elemento que se añade es el primero accesible,
'// desplazando los existentes hacia abajo

If ValuesBag.Count Then
ValuesBag.Add pvarValue, , 1
Else
ValuesBag.Add pvarValue
End If

'// Si se alcanza el número máximo de valores permitido
'// se elimina el elemento más antiguo.

If ValuesBag.Count > MaxValues Then
ValuesBag.Remove ValuesBag.Count
End If

End Sub
Public Function GetValue(Optional plngIndex As Long)

'// Devuelve los valores de la colección.
'// Si no se le pasa ningún parámetro,
'// devuelve siempre el elemento añadido más reciente

If IsMissing(plngIndex) Then
GetValue = ValuesBag(1)
Else
If plngIndex < MaxValues Then
GetValue = ValuesBag(plngIndex + 1)
End If
End If

End Function
Private Sub Class_Initialize()

'// Por defecto el número máximo de valores
'// que almacena es de 300
MaxValues = 300

End Sub
Private Sub Class_Terminate()

Set ValuesBag = Nothing

End Sub

'// ***************************************************************


Hasta aquí el código de la clase.

Para su uso tienes que declarar en el módulo del proyecto, una variable con el nombre que quieras por ejemplo:

Dim myGetPositionProfit as new clsValuesBag

Después tienes que ir pasándole los valores que quieras almacenar de la siguiente forma:

myGetPositionProfit.AddValue "el valor que quieras añadir"

Esto debes hacerlo en el procedimiento OnCalculateBar del módulo de la estrategia.

Para luego saber el valor de X barras hacia atrás lo puedes hacer usando:

"el valor que quieras sabe" = myGetPositionProfit.GetValue( X )

Si no le pasas ningún valor, o le pasas 0, te devuelve siempre el último valor añadido.

El número máximo de valores que puede almacenar es por defecto 300 para ahorrar memoria, pero lo puedes modificar con la propiedad MaxValues.

Los valores se almacenan en variables tipo variant porque no se qué valores vasa usar, pero los puedes convertir a enteros, dobles, etc.

Espero que te sirva y entiendo que te pueda resultar un poco lioso, así que si tienes pegas, me comentas.

Un saludo
Avatar de Usuario
elchavo
Mensajes: 79
Registrado: 28 Ene 2006 22:21

Mensaje por elchavo »

Mil gracias Developer. Siento el trabajo que te has tomado para poner todo esto, pero yo lo decía para el entorno visual, no para visual basic.

Parece ser que el problema es que no lo tienen implementado los de VChart en el entorno visual y que no hay nada que hacer. Quería saber si alguno, en este entorno sencillo de programación, lo había conseguido de alguna forma.

Gracias otra vez.
No por mucho madrugar amanece más temprano
DeveloperTrader
Mensajes: 25
Registrado: 27 May 2006 00:51

Mensaje por DeveloperTrader »

No problemo elchavo ;-)

Si te interesa programar y testear sistemas, te recomiendo EasyLanguaje de TradeStation.Es un lenguaje específico para el trading, no como VBA que es de propósito general. Es sencillo y directo y puedes programar casi cualquier sistema que se te ocurra.

Un saludo
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Visual Chart”