Como puedo incluir un stop de perdidas en un sistema, os

El espacio de los traders quant: sistemas de trading, gestión monetaria, automatización de sistemas.
karma21sl
Mensajes: 4
Registrado: 04 May 2006 07:57

Como puedo incluir un stop de perdidas en un sistema, os

Mensaje por karma21sl »

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

Avatar de Usuario
Elvys
Mensajes: 177
Registrado: 22 Mar 2006 04:03

Re: Como puedo incluir un stop de perdidas en un sistema, os

Mensaje por Elvys »

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
Bienvenido.

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%??
Pisco
Mensajes: 105
Registrado: 19 Sep 2004 00:15

Mensaje por Pisco »

Sell atstop (.getentryprice-getentryprice*(3/100))

Sds
karma21sl
Mensajes: 4
Registrado: 04 May 2006 07:57

Yo trabajo con graficos diarios por que por mi profesion no

Mensaje por karma21sl »

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.
karma21sl
Mensajes: 4
Registrado: 04 May 2006 07:57

Nadie me lo va a poder explicar?????

Mensaje por karma21sl »

Espero que alguien me lo pueda explicar por que no creo que este pidiendo un imposible. O si???
Avatar de Usuario
Elvys
Mensajes: 177
Registrado: 22 Mar 2006 04:03

Re: Yo trabajo con graficos diarios por que por mi profesion

Mensaje por Elvys »

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.
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.
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? :roll:
siento no poder aclararte nada mas.saludos
Avatar de Usuario
Elvys
Mensajes: 177
Registrado: 22 Mar 2006 04:03

Re: Nadie me lo va a poder explicar?????

Mensaje por Elvys »

karma21sl escribió:Espero que alguien me lo pueda explicar por que no creo que este pidiendo un imposible. O si???
esperemos un poco q ahora estan todos en el campo de batalla. :lol:
karma21sl
Mensajes: 4
Registrado: 04 May 2006 07:57

Mensaje por karma21sl »

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
Avatar de Usuario
Tom
Mensajes: 2421
Registrado: 12 Feb 2005 10:23
Ubicación: Madrid

Mensaje por Tom »

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
Adjuntos
StopMedias.JPG
StopMedias.JPG (15.21 KiB) Visto 370 veces
----- Para que tu y yo ganemos dinero no habrían creado un mercado. ------
Avatar de Usuario
Elvys
Mensajes: 177
Registrado: 22 Mar 2006 04:03

Mensaje por Elvys »

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
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?? :oops: gracias de antemano. :wink:
Avatar de Usuario
Tom
Mensajes: 2421
Registrado: 12 Feb 2005 10:23
Ubicación: Madrid

Mensaje por Tom »

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 :-D
----- Para que tu y yo ganemos dinero no habrían creado un mercado. ------
Avatar de Usuario
Elvys
Mensajes: 177
Registrado: 22 Mar 2006 04:03

Mensaje por Elvys »

Tom 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 :-D
:wink: voy a trastear con el macd.El tema me tiene loco todo el rato abriendo posiciones despues de cerrarlas :? .saludos
Avatar de Usuario
Tom
Mensajes: 2421
Registrado: 12 Feb 2005 10:23
Ubicación: Madrid

Mensaje por Tom »

Elvys escribió: :wink: voy a trastear con el macd.El tema me tiene loco todo el rato abriendo posiciones despues de cerrarlas :? .saludos
Jeje
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. ------
Avatar de Usuario
corman
Mensajes: 69
Registrado: 05 Feb 2006 22:50
Ubicación: Valencia

Plantilla de diseño de Macd

Mensaje por corman »

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.
Adjuntos
PlantillaMacd.doc
(94.5 KiB) Descargado 205 veces
Avatar de Usuario
Tom
Mensajes: 2421
Registrado: 12 Feb 2005 10:23
Ubicación: Madrid

Mensaje por Tom »

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.
----- 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!


Responder

Volver a “Sistemas de Trading”