Buenas tardes,
adjunto un código con el estocástico en el que intento que compre cuabdo la linia K cruza por debajo la linea de 20 y que venda cuando cruza por encima de la linea 80. Con los cortos al revés. Veo que no me funciona. ¿Me podeis ayudar?
// Definición de los parámetros del código
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
// Condiciones para entrada de posiciones largas
indicator1 = Stochastic[14,3](close)
c1 = (indicator1 CROSSES UNDER indicator1)
IF c1 THEN
BUY 1 SHARES AT MARKET
ENDIF
// Condiciones de salida de posiciones largas
indicator2 = Stochastic[14,3](close)
c2 = (indicator2 CROSSES OVER indicator2)
IF c2 THEN
SELL AT MARKET
ENDIF
// Condiciones de entrada de posiciones cortas
indicator3 = Stochastic[14,3](close)
c3 = (indicator3 CROSSES OVER indicator3)
IF c3 THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
// Condiciones de salida de posiciones cortas
indicator4 = Stochastic[14,3](close)
c4 = (indicator4 CROSSES UNDER indicator4)
IF c4 THEN
EXITSHORT AT MARKET
ENDIF
// Stops y targets
SET STOP pLOSS 10
SET TARGET pPROFIT 20
Muchas gracias y saludos!
Cualquier indicador no se puede cruzar. Debe cambiar las líneas 6, 14, 22 y 30. Un cruce requiere dos cosas, una cruza sobre o debajo de la otra.
Buenas tardes,
Entiendo lo que me dice. Pero no se modificar la instrucción a las lineas. Por ejemplo la linea 6 quiero que diga que cuando K cruze 20, compre. La 14 que diga cuando K cruze 80 que venda…..
Muchas gracias
Lluis,
adjunto te mando un código que hice basándome en la teoría de los trenes de Domenech, un monstruo del DAX. EN el código puedes ver como se codifica el estocastico. Es cuestión de verlo despacio. Tengo los comentarios en español, así que es más fácil de entender. Puedes extrapolar los valores o insertarles los tuyos directamente.
Espero que te sirva.
Definition of Parameters /////////
DEFPARAM Preloadbars = 2000
DEFPARAM CumulateOrders = true
//DEFPARAM FLATBEFORE = 090000
//DEFPARAM FLATAFTER = 153000
//Other parameters //////////////////
positionsize=1
maxcontracts = COUNTOFPOSITION <=10
// STOPs & PROFITS //////////////////
SET STOP pLOSS 45
// Indicators ///////////////////////
stoch76K= Stochastic[76,3]
long50=stoch76K crosses over 50 // Entrada en largo normal al cruzar al alza 50
long80=stoch76K crosses over 80 // Reentrada en largo en >80
short50=stoch76K crosses under 50 // Entrada en corto normal al cruzar a la baja 50
short20=stoch76K crosses under 20 // Reentrada en corto en <20
// Estocastico lento
D76 = average[4](stoch76K) // D
stoch76K= Stochastic[76,3] // K
crucelentoalza=stoch76K crosses over D76
crucelentobaja=stoch76K crosses under D76
// Estocastico rapido
D8 = average[3](stoch8K) // D
stoch8K= Stochastic[8,3] // K
crucerapidoalza=stoch8K crosses over D8
crucerapidobaja=stoch8K crosses under D8
// LONG Orders ////////////////////////////////////////////////////////////
IF NOT ONMARKET AND long50 THEN // Entrada en largo al cruzar al alza 50
BUY positionsize CONTRACT AT MARKET
ENDIF
IF NOT ONMARKET AND long80 THEN // Reentrada en largo en >80
BUY positionsize CONTRACT AT MARKET
ENDIF
// Entrada en LARGO cuando entre el 50% y 80%, K cruza over D (Estocastico 76) y STOCH8 está por debajo del 50%
IF NOT ONMARKET AND stoch76K>50 AND stoch76K<80 AND crucelentoalza AND stoch8K<50 THEN
BUY positionsize CONTRACT AT MARKET
ENDIF
// Añadir ordenes en LARGO por encima del 80% cuando el STOCH8 esta abajo y cruza %K over %D
IF LONGONMARKET AND stoch76K>80 AND crucerapidoalza AND maxcontracts THEN
BUY positionsize CONTRACT AT MARKET
ENDIF
// Exit LONG
IF LONGONMARKET AND stoch76K crosses under 80 THEN // Cierre de todas las operaciones abiertas en largo al dejar la E. NORTE
SELL AT MARKET
ENDIF
IF LONGONMARKET AND stoch76K crosses under 50 THEN // Cierre de protección de largo si cruza a la baja 50 + REVERSE a CORTO
SELLSHORT positionsize CONTRACT AT MARKET
ENDIF
// SHORT Orders //////////////////////////////////////////////////////////
IF NOT ONMARKET AND short50 THEN // Entrada en corto al cruzar a la baja 50
SELLSHORT positionsize CONTRACT AT MARKET
ENDIF
IF NOT ONMARKET AND short20 THEN // Reentrada en corto en <20
SELLSHORT positionsize CONTRACT AT MARKET
ENDIF
// Entrada en CORTO cuando entre el 50% y 20%, K cruza under D (Estocastico 76) y STOCH8 está por encima del 50%
IF NOT ONMARKET AND stoch76K<50 AND stoch76K>20 AND crucelentobaja AND stoch8K>50 THEN
SELLSHORT positionsize CONTRACT AT MARKET
ENDIF
// Añadir ordenes SHORT por debajo del 20% cuando el STOCH8 esta arriba y cruza %K under %D
IF SHORTONMARKET AND stoch76K<20 AND crucerapidobaja AND maxcontracts THEN
SELLSHORT positionsize CONTRACT AT MARKET
ENDIF
// Exit SHORT
IF SHORTONMARKET AND stoch76K crosses over 20 THEN // Cierre de todas las operaciones abiertas en corto al dejar la E.SUR
EXITSHORT AT MARKET
ENDIF
IF SHORTONMARKET AND stoch76K crosses over 50 THEN // Cierre de protección de corto si cruza al alza 50 + REVERSE a LARGO
BUY positionsize CONTRACT AT MARKET
ENDIF
Saludos
Muchas gracias Juan, me pongo a ello.
Saludos
Hola Juan,
Me sale error en la linea 1 y en la 2 (desconozco el motivo). ¿Me puedes ayudar?.
Muchas gracias y saludos
Ah perdon,
al copiarlo se ve que se me ha faltado las dos rayitas (//) para descomentar esa parte del código.
En la linea 1 debes de poner // definición de parámetros como la linea 1 de tu primer código arriba.
// Definition of Parameters
DEFPARAM Preloadbars = 2000
DEFPARAM CumulateOrders = true
Saludos
Hecho. Fantástico. Muchas gracias!!.
Una consulta si me permites: ¿este mismo código lo puedo usar para el RSI Laguere? Mi intención es decirle que compre al cruzar hacia arriba la linea de 0,2 y que venda al cruzar la linea de 0,8. Y al revés en posiciones cortas.
Un saludo y gracias
Si, lo puedes usar de modo similar con un RSI. Simplemente tienes que cambiar los indicadores de estocasticos por RSI, y los comandos de compra y venta.
Mira otros códigos en Library donde utilicen el RSI como indicador de entrada y empiezas a realizarle modificaciones de acuerdo a lo que tu quieras. Te equivocaras mucho al principio, nos ha pasado a todos. Cuando llegues a un punto muerto, pregunta.
Saludos