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.
Avatar de Usuario
Elvys
Mensajes: 177
Registrado: 22 Mar 2006 04:03

Mensaje por Elvys »

Al ataque con el macd,cuando creas la condicion,en la plataforma visual no en la visual basic,se abre un cuadro donde se elige en este caso el indicador de macd,si quisieramos plasmar el indicador macd tal como se carga cuando lo hacemos en un grafico en la parte baja del mismo, creo y solo creo q la expresion es Indicador(MACDData) > Indicador(MACDData,0,2) donde el 2 se refiere a la linea de puntos.La linea roja y la barra en el primero no los indica por q es barra 0 y linea 1,si indicaramos alguna barra distinta de 0 ya si nos pondria tb linea 1.lo he automatizado rapidamente para comprobarlo y creo q es asi pero todavia estoy dormido y legañoso.echarle un vistazo.
Corman gracias por colgar el sistema,es para intradia segun veo no? donde te cierra la posicion antes del cierre del mercado no? con lo q la miga del sistema es solo las dos condiciones del macd y sus ordenes,colocandole stop de ganacias puede q la cosa cambie.saludos
Avatar de Usuario
hal8999
Mensajes: 52
Registrado: 03 Nov 2005 13:47
Ubicación: Orbita estacionaria en torno a Jupiter
Contactar:

Mensaje por hal8999 »

Indicador[MACDdata,A,B]

A: Nº de Barra para la que queremos saber el dato
0= actual
1= Barra anterior
2= Barra anteanterior, etc

B: Linea del indicador
1= Linea del oscilador (valor del Macd)
2= Linea de señal
3= Banda

Indicador[MACDdata,1,2] -> Valor de la linea de señal en la barra anterior.
Indicador[MACDdata,4,1] -> Valor del MACD hace cuatro barras.
Indicador[MACDdata,0,1] = Indicador[MACDdata]

Salvo error u omisión que estoy en rodaje con el VC
Soñare, Dave?
Avatar de Usuario
elchavo
Mensajes: 79
Registrado: 28 Ene 2006 22:21

Mensaje por elchavo »

Corman, si te han cobrado 60 euros por esa simpleza, desde luego es que los de VChart tienen una cara dura que se la pisan.
No por mucho madrugar amanece más temprano
yoyova
Mensajes: 3
Registrado: 08 May 2006 19:49

Mensaje por yoyova »

Es mi primer mensaje en el foro y , aunque de programación en v. chart más bien poco, voy a probar a ver si puedo ayudar a karma21sl.
Si dejas el código como aparece aquí el sistema está comprando cuando hay un cruce de medias ,el problema es que durante una barra las medias pueden cruzarse varias veces y generar un monton de operaciones antes de que cierre esa barra :
'¡¡ 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 ""


Para evitarlo, el código debería ser algo parecido a ésto:

"If .GetIndicatorValue(AvSimpleData) > .GetIndicatorValue(AvSimple1Data) and GetIndicatorValue(AvSimpleData, 1) < .GetIndicatorValue(AvSimple1Data, 1)
.Buy atClose
else
.Sell atClose
end if
end if"

De esta forma lo que le estas diciendo al sistema es que si en la barra actual la media corta es mayor que la larga y en la barra anterior la media corta es menor que la larga, pues eso, que compre al cierre DE LA SIGUIENTE BARRA.

No se si me habré explicado bien con tanto corto y largo :D . Lo de los stops es otra historia y me parece que ya te han dado una solución por ahí
Suerte
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Sistemas de Trading”