comento:
Ponemos que el sistema es el de medias que esta incluido en el visual chart como podria ponerle un stop de perdidas por ejemplo que si el sistema me da compra de un valor a 11 euros el stop de perdidas seria el 3% o sea que cuando el cierre del dia sea inferior a ese 3% me marque venta.
Gracias y saludos a todos
Como puedo incluir un stop de perdidas en un sistema, os
Re: Como puedo incluir un stop de perdidas en un sistema, os
Bienvenido.karma21sl escribió:comento:
Ponemos que el sistema es el de medias que esta incluido en el visual chart como podria ponerle un stop de perdidas por ejemplo que si el sistema me da compra de un valor a 11 euros el stop de perdidas seria el 3% o sea que cuando el cierre del dia sea inferior a ese 3% me marque venta.
Gracias y saludos a todos
Cuando el cierre del dia sea inferior a 3%?? quieres decir q si has perdido un 5% pero todavia no ha cerrado el dia no ejecutas tu stop?? eso supondria cerrar la ope al dia siguiente.¿o quieres decir q al cierre de la barra desde tu punto de entrada sea del 3%??
Yo trabajo con graficos diarios por que por mi profesion no
puedo nada mas que ver la bolsa por las tardes asi que yo hablo sobre fin de dia perdonar por no haberlo aclarado antes.
Estoy modificando un sistema de medias que es muy parecido al que tiene el visual chart con ese mismo nombre asi que cuando el sistema me da compra yo ejecuto la compra al dia siguiente en la apertura a precio de mercado y cuando me da venta la ejecuto al dia siguiente a precio de mercado, lo que necesito es que si yo compro telefonica (por ejemplo) a 11 euros el sistema me ordene vender cuando el precio de cierre sea inferior al 3% del precio de compra o sea cierre menor a 10,67 euros.
Tambien necesitaria saber donde concretamente tengo que poner el comando ese, gracias y espero que no sea mucho pedir, pero es que soy novato en esto de los sitemas.
Estoy modificando un sistema de medias que es muy parecido al que tiene el visual chart con ese mismo nombre asi que cuando el sistema me da compra yo ejecuto la compra al dia siguiente en la apertura a precio de mercado y cuando me da venta la ejecuto al dia siguiente a precio de mercado, lo que necesito es que si yo compro telefonica (por ejemplo) a 11 euros el sistema me ordene vender cuando el precio de cierre sea inferior al 3% del precio de compra o sea cierre menor a 10,67 euros.
Tambien necesitaria saber donde concretamente tengo que poner el comando ese, gracias y espero que no sea mucho pedir, pero es que soy novato en esto de los sitemas.
Nadie me lo va a poder explicar?????
Espero que alguien me lo pueda explicar por que no creo que este pidiendo un imposible. O si???
Re: Yo trabajo con graficos diarios por que por mi profesion
nada karma,estoy igual q tu,tampoco domino el tema,a ver lo q te dicen los gurus al respecto.Como dices q no sabes donde poner concretamente el comando ese deduzco q lo estas programando en la plataforma visual basic.Yo tb ando peleado con los stops por q los programo pero despues al insertarlo en grafico se los pasa por el forro y no se por q,paso algo por alto y no se q es.karma21sl escribió:puedo nada mas que ver la bolsa por las tardes asi que yo hablo sobre fin de dia perdonar por no haberlo aclarado antes.
Estoy modificando un sistema de medias que es muy parecido al que tiene el visual chart con ese mismo nombre asi que cuando el sistema me da compra yo ejecuto la compra al dia siguiente en la apertura a precio de mercado y cuando me da venta la ejecuto al dia siguiente a precio de mercado, lo que necesito es que si yo compro telefonica (por ejemplo) a 11 euros el sistema me ordene vender cuando el precio de cierre sea inferior al 3% del precio de compra o sea cierre menor a 10,67 euros.
Tambien necesitaria saber donde concretamente tengo que poner el comando ese, gracias y espero que no sea mucho pedir, pero es que soy novato en esto de los sitemas.
Pisco lo ha expresado correctamente y lo debes colocar en System_OnCalculateBar q es donde va el codigo del sistema.
Respecto a lo q dices de entrar al dia siguiente y ejecutar al dia siguiente,nu se,lo veo un poco peligroso,si el subyacente pierde un 5% en la sesion q haces tu? vendes en esa sesion o te esperas al dia siguiente para liquidar a la apertura? y si abre con gap a la baja aparte de la bajada del dia anterior? lo mismo entonces ya no es un 3% si no un 5% o 6%.Y para entrar si se cruzan las medias en 11 y al dia siguiente la apertura marca 11.50 tb entras?? o desechas la operacion?
siento no poder aclararte nada mas.saludos
Re: Nadie me lo va a poder explicar?????
esperemos un poco q ahora estan todos en el campo de batalla.karma21sl escribió:Espero que alguien me lo pueda explicar por que no creo que este pidiendo un imposible. O si???
Este seria el sistema a ver si asi se aclara algo mas
'¡¡ Parameters
'Parameters !!
'¡¡ PDV parameters
Dim AvSimpleDataPeriodo As Long '30
Dim AvSimple1DataPeriodo As Long '100
Const Data As Long = 0
Const Data1 As Long = 1
'PDV parameters !!
'¡¡ PDV declarations
Dim AvSimpleData As Long
Dim AvSimple1Data As Long
'PDV declarations !!
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
'¡¡ PDV initializations
AvSimpleData = .GetIndicatorIdentifier(AvSimple, Data, AvSimpleDataPeriodo, PriceClose)
AvSimple1Data = .GetIndicatorIdentifier(AvSimple, Data, AvSimple1DataPeriodo, PriceClose)
.StartBar = 0
'PDV initializations !!
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
'¡¡ PDV code
If .GetIndicatorValue(AvSimpleData) >= .GetIndicatorValue(AvSimple1Data) Then
.Buy AtClose, 1
Else
.Sell AtClose, 1
End If
'PDV code !!
End With
End Sub
Public Sub System_OnSetParameters(ParamArray ParamList() As Variant)
'¡¡ Parameters initialization
AvSimpleDataPeriodo = ParamList(1)
AvSimple1DataPeriodo = ParamList(2)
'Parameters initialization !!
End Sub
Public Sub System_OnCalculateRange(ByVal StartBar As Long, ByVal FinalBar As Long)
Dim i As Long
i = APP.StartBar
If StartBar > i Then
i = StartBar
End If
While Not APP.ShouldTerminate And i <= FinalBar
APP.CurrentBar = i
System_OnCalculateBar i
i = i + 1
Wend
End Sub
Private Sub SysUserAppInstance_OnConnection(ByVal Application As SysUserApp, ByVal MTDllInst As Object, Custom() As Variant)
Set APP = Application
End Sub
'¡¡ Parameters
'Parameters !!
'¡¡ PDV parameters
Dim AvSimpleDataPeriodo As Long '30
Dim AvSimple1DataPeriodo As Long '100
Const Data As Long = 0
Const Data1 As Long = 1
'PDV parameters !!
'¡¡ PDV declarations
Dim AvSimpleData As Long
Dim AvSimple1Data As Long
'PDV declarations !!
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
'¡¡ PDV initializations
AvSimpleData = .GetIndicatorIdentifier(AvSimple, Data, AvSimpleDataPeriodo, PriceClose)
AvSimple1Data = .GetIndicatorIdentifier(AvSimple, Data, AvSimple1DataPeriodo, PriceClose)
.StartBar = 0
'PDV initializations !!
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
'¡¡ PDV code
If .GetIndicatorValue(AvSimpleData) >= .GetIndicatorValue(AvSimple1Data) Then
.Buy AtClose, 1
Else
.Sell AtClose, 1
End If
'PDV code !!
End With
End Sub
Public Sub System_OnSetParameters(ParamArray ParamList() As Variant)
'¡¡ Parameters initialization
AvSimpleDataPeriodo = ParamList(1)
AvSimple1DataPeriodo = ParamList(2)
'Parameters initialization !!
End Sub
Public Sub System_OnCalculateRange(ByVal StartBar As Long, ByVal FinalBar As Long)
Dim i As Long
i = APP.StartBar
If StartBar > i Then
i = StartBar
End If
While Not APP.ShouldTerminate And i <= FinalBar
APP.CurrentBar = i
System_OnCalculateBar i
i = i + 1
Wend
End Sub
Private Sub SysUserAppInstance_OnConnection(ByVal Application As SysUserApp, ByVal MTDllInst As Object, Custom() As Variant)
Set APP = Application
End Sub
No creo que te pueda ayudar mucho puesto que VBA es una de mis asignaturas pendientes.
A nivel lógico.
Parece necesario establecer la orden Stop justo después de realizarse la entrada.
No parece tan necesario pero si muy conveniente comprobar, antes de lanzar la orden Stop, que la condición de entrada ya no es cierta, puesto que de lo contrario volvería a abrir posición inmediatamente.
En el gráfico adjunto falta establecer el parametro de Stop que supongo debería ser optimizable, y esa condición.
Espero que te sirva de algo.
Un saludo
Tom
P.D. Donde pone 1 debería poner la variable ContratsNumber
A nivel lógico.
Parece necesario establecer la orden Stop justo después de realizarse la entrada.
No parece tan necesario pero si muy conveniente comprobar, antes de lanzar la orden Stop, que la condición de entrada ya no es cierta, puesto que de lo contrario volvería a abrir posición inmediatamente.
En el gráfico adjunto falta establecer el parametro de Stop que supongo debería ser optimizable, y esa condición.
Espero que te sirva de algo.
Un saludo
Tom
P.D. Donde pone 1 debería poner la variable ContratsNumber
- Adjuntos
-
- StopMedias.JPG (15.21 KiB) Visto 1051 veces
----- Para que tu y yo ganemos dinero no habrían creado un mercado. ------
Referente a la condicion de cierto o falso Tom no le acabo de pillar el sentido,te ruego me lo expliques si estas dispuesto,por ejemplo supongamos q liquido la ope por q he alcanzado mi Bº por operacion,pongamos 3%,es decir se cruzan las medias, entro y cierro cuando he conseguido mi 3% cerrando mediante una orden limitada.Justo despues de cerrar me volvera a abrir otra posicion puesto q la condicion de media>media1 (en caso de compra) todavia esta vigente,pero yo no quiero q eso ocurra,si no q vuelva a producirse otro cruze en las medias para entrar,no se si me explico.La utilizacion de la condicion cierto-falso sirve para evitar esto?? y si es asi donde se debe de colocar tal condicion?? gracias de antemano.Tom escribió:No creo que te pueda ayudar mucho puesto que VBA es una de mis asignaturas pendientes.
A nivel lógico.
Parece necesario establecer la orden Stop justo después de realizarse la entrada.
No parece tan necesario pero si muy conveniente comprobar, antes de lanzar la orden Stop, que la condición de entrada ya no es cierta, puesto que de lo contrario volvería a abrir posición inmediatamente.
En el gráfico adjunto falta establecer el parametro de Stop que supongo debería ser optimizable, y esa condición.
Espero que te sirva de algo.
Un saludo
Tom
P.D. Donde pone 1 debería poner la variable ContratsNumber
Creo que si que es tal cual lo explicas.
Yo entendía que tu Stop del 3% era de pérdidas y podría darse el caso de que a pesar de que el precio hubiese bajado un 3% desde el precio de entrada las medias siguiesen cortadas y la señal de entrada vigente.
En el caso que explicas de que el Stop sea de ganancias es seguro que las medias seguirán cortadas y la señal vigente.
Hay muchas formas de establecer una condición añadida, en este caso una posible solución es que compre cuando las medias se crucen al alza siempre y cuando (sí y solo sí) en la barra anterior no estuvieran cruzadas al alza.
Otra forma más rudimentaria es crear una variable que actue como bandera, complica el flujo del código pero te permite utilizarla en distintas subrutinas, aunque también es fácil que produzca resultados inesperados y suele requerir otros controles y más banderas.
Converir un código sencillo en un código complejo suele acarrear complejidades añadidas
Yo entendía que tu Stop del 3% era de pérdidas y podría darse el caso de que a pesar de que el precio hubiese bajado un 3% desde el precio de entrada las medias siguiesen cortadas y la señal de entrada vigente.
En el caso que explicas de que el Stop sea de ganancias es seguro que las medias seguirán cortadas y la señal vigente.
Hay muchas formas de establecer una condición añadida, en este caso una posible solución es que compre cuando las medias se crucen al alza siempre y cuando (sí y solo sí) en la barra anterior no estuvieran cruzadas al alza.
Otra forma más rudimentaria es crear una variable que actue como bandera, complica el flujo del código pero te permite utilizarla en distintas subrutinas, aunque también es fácil que produzca resultados inesperados y suele requerir otros controles y más banderas.
Converir un código sencillo en un código complejo suele acarrear complejidades añadidas
----- Para que tu y yo ganemos dinero no habrían creado un mercado. ------
voy a trastear con el macd.El tema me tiene loco todo el rato abriendo posiciones despues de cerrarlas .saludosTom escribió:Creo que si que es tal cual lo explicas.
Yo entendía que tu Stop del 3% era de pérdidas y podría darse el caso de que a pesar de que el precio hubiese bajado un 3% desde el precio de entrada las medias siguiesen cortadas y la señal de entrada vigente.
En el caso que explicas de que el Stop sea de ganancias es seguro que las medias seguirán cortadas y la señal vigente.
Hay muchas formas de establecer una condición añadida, en este caso una posible solución es que compre cuando las medias se crucen al alza siempre y cuando (sí y solo sí) en la barra anterior no estuvieran cruzadas al alza.
Otra forma más rudimentaria es crear una variable que actue como bandera, complica el flujo del código pero te permite utilizarla en distintas subrutinas, aunque también es fácil que produzca resultados inesperados y suele requerir otros controles y más banderas.
Converir un código sencillo en un código complejo suele acarrear complejidades añadidas
JejeElvys escribió: voy a trastear con el macd.El tema me tiene loco todo el rato abriendo posiciones despues de cerrarlas .saludos
Pues preparate porque el MACD en Visual Chart tiene algunas complicaciones añadidas.
Observarás que no hay ningún sistema publicado en Visual Chart con el MACD.
Te sugiero que empieces por enviar un correo a Soporte solicitando que te expliquen como introducir el código, yo ya no me acuerdo.
----- Para que tu y yo ganemos dinero no habrían creado un mercado. ------
Plantilla de diseño de Macd
Habeis comentado algo de problemas con el diseño de sistemas con el Macd, yo con mi ignorancia de primerizo pedí a Visual Chart que me diseñaran una sistema con el Macd, me costo una pasta (60.-€), pero no lo he utilizado.
Os adjunto la plantilla de diseño.
Os adjunto la plantilla de diseño.
- Adjuntos
-
- PlantillaMacd.doc
- (94.5 KiB) Descargado 227 veces
Pues a eso me refería.
Yo ya no me acuerdo que significa exactamente Indicador[MACDdata,1,1] y cual es el Indicador[MACDData,0,0] que supongo es el que por defecto no lleva números y seguramente se refiere a la linea conrinua del MACD, luego hay que saber como se llama la de puntitos y como se llama la banda.
Supongo que el primer número se refiere a la barra y el segundo al indicador.
Y a eso es a lo que me refería que convendría preguntarles.
Aunque se podría averiguar a partir de ahí.
Lo de las horas también tiene sus particularidades.
No se ve (en el gráfico que mandas) pero se puede deducir que es GetMarketPosition = -1
Es igual a uno si estás comprado, menos uno si estás corto o vendido y cero si estás fuera de mercado.
Esas particularidades, y otras muchas, es conveniente dominarlas para conseguir que el sistema haga exactamente lo que quieres y esperas.
Yo ya no me acuerdo que significa exactamente Indicador[MACDdata,1,1] y cual es el Indicador[MACDData,0,0] que supongo es el que por defecto no lleva números y seguramente se refiere a la linea conrinua del MACD, luego hay que saber como se llama la de puntitos y como se llama la banda.
Supongo que el primer número se refiere a la barra y el segundo al indicador.
Y a eso es a lo que me refería que convendría preguntarles.
Aunque se podría averiguar a partir de ahí.
Lo de las horas también tiene sus particularidades.
No se ve (en el gráfico que mandas) pero se puede deducir que es GetMarketPosition = -1
Es igual a uno si estás comprado, menos uno si estás corto o vendido y cero si estás fuera de mercado.
Esas particularidades, y otras muchas, es conveniente dominarlas para conseguir que el sistema haga exactamente lo que quieres y esperas.
----- Para que tu y yo ganemos dinero no habrían creado un mercado. ------
Si te ha gustado este hilo del Foro, ¡compártelo en redes!